> This page is for APIs, version Calculations.
> For other versions, use one of these documentation indexes:
> - Overview (default): https://avalara.ferndocs.com/api-reference/overview/llms.txt
> - Calculations: https://avalara.ferndocs.com/api-reference/calculations/llms.txt
> - E-invoicing: https://avalara.ferndocs.com/api-reference/e-invoicing/llms.txt
> - Brazil: https://avalara.ferndocs.com/api-reference/brazil/llms.txt
> - Returns: https://avalara.ferndocs.com/api-reference/returns/llms.txt
> - Shared service: https://avalara.ferndocs.com/api-reference/shared-service/llms.txt
> - 1099 & W-9: https://avalara.ferndocs.com/api-reference/1099-w9/llms.txt
> - Tax registrations & business licenses: https://avalara.ferndocs.com/api-reference/tax-registrations/llms.txt
> - ECM: https://avalara.ferndocs.com/api-reference/ecm/llms.txt
> - Cross-Border: https://avalara.ferndocs.com/api-reference/cross-border/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://avalara.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://avalara.ferndocs.com/_mcp/server.

# List Cross Border Sections

GET https://rest.avatax.com/api/v2/definitions/crossborder/sections

> **Access control:** this endpoint is available to users with the `everyone` role.

Returns the full list of top level HS Code Sections. Sections are the broadest level of detail for
classifying tariff codes and the items to which they apply. HS Codes are organized
by Section/Chapter/Heading/Subheading/Classification.
            
This API is intended to be useful to identify the top level Sections for
further LandedCost HS Code lookups.

### Security Policies

* This API depends on the following active services:*Required* (all):  AvaTaxGlobal.


Reference: https://avalara.ferndocs.com/api-reference/calculations/ava-tax/public-reference/list-cross-border-sections

## Authentication

- `Authorization` header (required) — API Key authentication via header

## Request

### Headers

- `X-Avalara-Client` (string, optional, default: Swagger UI; 26.7.0; Custom; 1.0) — Identifies the software you are using to call this API. For more information on the client header, see [Client Headers](https://developer.avalara.com/avatax/client-headers/) .

## Response

### 200

Success

- `@recordsetCount` (integer, optional)
- `value` (list of HsCodeModel, optional)
- `@nextLink` (string, optional)
- `pageKey` (string, optional)

## Types

### HsCodeModel

Describes an element in the harmonized tariff system. According to the [United States International Trade Commission](https://www.usitc.gov), the harmonized tariff schedule is defined as follows: The HTS is a U.S. nomenclature system used to classify traded goods based on their material composition, product name, and/or intended function. The HTS is designed so that each article falls into only one category. It is divided into chapters, each of which has a 2-digit number. Each product category within the various chapters is designated by 4, 6, 8, or 10 digits. The 4-digit categories are called "headings." The 6-, 8- and 10-digit classifications are called "subheadings." Within AvaTax, the `HsCodeModel` object can refer to sections, chapters, headings, subheadings, or articles. Each object represents one classification. Many of these objects have child objects underneath them; these child objects are more specific than their parent objects.

- `id` (long, required) — A unique identifier for this harmonized tariff system code. To search for a list of child codes underneath a specific HS code, search for codes where the child's `parentHsCodeId` value matches the parent's `id` value.
- `description` (string, required) — A human readable description that identifies Code descriptive text for this Section, Chapter, Heading, or Subheading.
- `hsCode` (string, optional) — The harmonized tariff system code for this section and chapter. A full HS code contains more than six characters. Partial HS codes with two, four, or six characters may have child codes underneath them. A child code is one that contains greater specificity than a parent code. It is recommended that when you identify a product you use the most detailed code available to identify it. Top level sections do not have HS Codes.
- `parentHsCodeId` (long, optional) — The unique ID number of the parent HS code or HS code prefix. To search for a list of child codes underneath a specific HS code, search for codes where the child's `parentHsCodeId` value matches the parent's `id` value.
- `system` (string, optional) — The system to which this HS code belongs.
- `destinationCountry` (string, optional) — The destination country identified with this HS Code. This value applies when certain products are classified in specific ways by bilateral trade agreements.
- `effDate` (date, optional) — For codes that have been expired or defined on specific dates, this value indicates the earliest date for which this code is considered valid. If this value is null, this code can be used for any valid date earlier than its end date.
- `endDate` (date, optional) — For codes that have been expired or defined on specific dates, this value indicates the latest date for which this code is considered valid. If this value is null, this code can be used for any valid date later than its effective date.

## Examples

**Response**

```json
{
  "@recordsetCount": 1,
  "value": [
    {
      "id": 12345,
      "description": "HSCode",
      "hsCode": "hsCode",
      "parentHsCodeId": 0,
      "system": "system",
      "destinationCountry": "US",
      "effDate": "2023-01-15",
      "endDate": "2023-01-15"
    }
  ],
  "@nextLink": "string",
  "pageKey": "string"
}
```

**SDK Code**

```python
import requests

url = "https://rest.avatax.com/api/v2/definitions/crossborder/sections"

headers = {"Authorization": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://rest.avatax.com/api/v2/definitions/crossborder/sections';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://rest.avatax.com/api/v2/definitions/crossborder/sections"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://rest.avatax.com/api/v2/definitions/crossborder/sections")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.avatax.com/api/v2/definitions/crossborder/sections")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.avatax.com/api/v2/definitions/crossborder/sections', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://rest.avatax.com/api/v2/definitions/crossborder/sections");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.avatax.com/api/v2/definitions/crossborder/sections")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```