Skip to Content
API ReferenceTariff & Codebook API

Tariff & Codebook API

The Tariff & Codebook API provides read-only access to the EU customs tariff and the Dutch customs codebook. Use these endpoints to validate HS codes, look up applicable measures and document requirements per commodity, and retrieve the valid option lists for every declaration field.

Required Scope: Any valid API token — no specific scope required. These endpoints are read-only reference data available to all authenticated callers.


HS Code Validation

Validate whether an HS code is declarable in the EU customs tariff on a given date.

The EU tariff distinguishes between import and export declarability:

  • Import — requires a 10-digit code (8-digit CN code + 2-digit TARIC subheading, e.g. 0101210000)
  • Export — requires an 8-digit CN code (e.g. 01012100); the last two digits are always 00

Always pass trade_direction so the endpoint validates against the correct digit level for your declaration type.

GET /api/v1/tariff/validate?hs_code=0101210000&trade_direction=import

Query Parameters

ParameterTypeRequiredDescription
hs_codestringYes6–10 digit HS code (dots and spaces are stripped)
trade_directionstringNoimport or export. When omitted, either digit level is accepted.
datedateNoValidation date (default: today). Format: YYYY-MM-DD

Example — Import validation

curl https://app.borderbolt.com/api/v1/tariff/validate \ -H "Authorization: Bearer {token}" \ -G \ --data-urlencode "hs_code=0101210000" \ --data-urlencode "trade_direction=import"
{ "hs_code": "0101210000", "date": "2026-05-04", "trade_direction": "import", "valid": true, "digit_level": 10, "message": null }

Example — Export validation

curl https://app.borderbolt.com/api/v1/tariff/validate \ -H "Authorization: Bearer {token}" \ -G \ --data-urlencode "hs_code=01012100" \ --data-urlencode "trade_direction=export"
{ "hs_code": "01012100", "date": "2026-05-04", "trade_direction": "export", "valid": true, "digit_level": 8, "message": null }

Response Fields

FieldTypeDescription
validbooleantrue if the code is declarable for the given trade direction and date
digit_levelinteger|null10 for an import-declarable code, 8 for an export-declarable code, null if invalid
messagestring|nullError description when valid is false

Invalid — wrong digit level

A 10-digit code submitted for export, or an 8-digit code for import, is rejected with 422:

{ "hs_code": "0101210000", "date": "2026-05-04", "trade_direction": "export", "valid": false, "digit_level": null, "message": "HS code 0101210000 is not declarable for export on 2026-05-04 (8-digit code required)" }

HTTP 422 is returned for invalid or non-declarable codes.


Additional Codes

Retrieve TARIC and national additional codes. These are the codes entered in the additional_taric1 / additional_taric2 fields on a declaration line.

To find which additional codes apply to a specific HS code, use Additional References — that endpoint returns measures with their linked certificate and additional code requirements per commodity and country.

GET /api/v1/tariff/additional-codes

Query Parameters

ParameterTypeRequiredDescription
typestringNoFilter by additional code type prefix (e.g. 4, A, B, C, D, F, P)
langstringNoResponse language: nl (default) or en

Common Additional Code Types

TypeDescription
4CITES / wildlife trade (e.g. 4001 Bluefin tuna)
AAgri additional codes
BPharmaceutical additional codes
CChemical additional codes
DDual-use / export control
FFood safety
PPlant health
Q, V, UNational (NL) additional codes

Example Request

curl https://app.borderbolt.com/api/v1/tariff/additional-codes \ -H "Authorization: Bearer {token}" \ -G \ --data-urlencode "type=4" \ --data-urlencode "lang=en"

Example Response

{ "type": "4", "lang": "en", "count": 278, "additional_codes": [ { "type": "4", "code": "001", "description": "Bluefin tunas (Thunnus thynnus)", "date_start": "2003-11-14" }, { "type": "4", "code": "002", "description": "Swordfish (Xiphias gladius)", "date_start": "2003-11-14" } ] }

Additional References

Retrieve the applicable measures for an HS code, country, and trade direction. Each measure lists the document or certificate requirements that must be declared in additional_references on the declaration line.

GET /api/v1/tariff/additional-references

Query Parameters

ParameterTypeRequiredDescription
hs_codestringYes6–10 digit HS code
country_codestringYes2-letter ISO country code of origin / destination
trade_directionstringYesimport or export
taric_codestringNo4-character TARIC additional code to narrow results

Example Request

curl https://app.borderbolt.com/api/v1/tariff/additional-references \ -H "Authorization: Bearer {token}" \ -G \ --data-urlencode "hs_code=0302110000" \ --data-urlencode "country_code=NO" \ --data-urlencode "trade_direction=import"

Example Response

{ "hs_code": "0302110000", "country_code": "NO", "trade_direction": "import", "taric_code": null, "count": 3, "measures": [ { "measure_type": "750", "description": "Import control of fishery products", "geographical_area": "1011", "condition_groups": [ { "condition_code": "L", "description": "Reference to document issued by competent authority", "certificates": [ { "code": "L001", "type": "Certificate", "description": "Common Health Entry Document for Products (CHED-P)" } ] } ] } ] }

Codebook Index

List all available codebook table aliases with their table numbers and descriptions.

GET /api/v1/codebook

Example Request

curl https://app.borderbolt.com/api/v1/codebook \ -H "Authorization: Bearer {token}"

Example Response (excerpt)

{ "description": "Use GET /api/v1/codebook/{table} to retrieve codebook entries. {table} can be a numeric table number or one of the aliases below.", "aliases": { "transport_modes": { "table": "018", "description": "Transport mode codes (VERVOERSWIJZE)" }, "countries": { "table": "008", "description": "All country codes" }, "currencies": { "table": "352", "description": "Currency codes (MUNTSOORT)" }, "incoterms": { "table": "090", "description": "Incoterms delivery conditions" }, "procedures_current": { "table": "092", "description": "Current procedure codes (GEVRAAGDE REG)" }, "procedures_previous": { "table": "093", "description": "Previous procedure codes (VOORAFG REG)" }, "document_types_support": { "table": "213", "description": "Supporting document types (BIJLAG DOC)" } } }

Codebook Lookup

Retrieve all valid codes for a specific customs codebook table. Use a numeric table number (e.g. 018) or one of the named aliases.

GET /api/v1/codebook/{table}

Path Parameter

{table} — a numeric table number or one of the aliases from /api/v1/codebook.

Query Parameters

ParameterTypeRequiredDescription
datedateNoValidity date (default: today). Codes valid on this date are returned.
langstringNonl (Dutch, default) or en (English)

Field → Codebook Mapping

Every dropdown in a declaration maps to a specific codebook table. Use the alias or table number directly.

Header Fields

FieldAliasTable
Declaration type (A–F)declaration_types042
Declaration symbol (IM/EX/CO)declaration_symbols231
Current procedureprocedures_current092
Previous procedureprocedures_previous093
Special procedurespecial_procedures102
Customs officecustoms_offices141
Office of exitoffices_of_exit294
Incotermsincoterms090
Transport mode (border/arrival/departure)transport_modes018
Transport identification typetransport_id_types750
Country (all fields)countries008
Destination country (export)export_countries207
Goods location typelocation_types347
Warehouse licence typelicence_types099
Guarantee typeguarantee_types251
Surety typesurety_types100
Authorisation typeauthorisation_typesT03
Fiscal party rolefiscal_party_roles149
Currencycurrencies352
Transaction naturetransaction_natures091

Line Fields

FieldAliasTable
Packaging typepackaging017
Valuation methodvaluation_methods604
Duty regime / preferenceduty_regimes603
Supporting document typedocument_types_support213
Previous document typedocument_types_previous214
Transport document typedocument_types_transport754
Additional information codeadditional_info239
Additional reference typeadditional_references380
Charge/deduction codecharge_deductions791
Duty/tax/fee typeduty_tax_fee_types098
Tax base unittax_base_units349

Example — Transport Modes

curl https://app.borderbolt.com/api/v1/codebook/transport_modes \ -H "Authorization: Bearer {token}" \ -G \ --data-urlencode "lang=en"
{ "table": "018", "alias": "transport_modes", "table_name": "VERVOERSWIJZE", "date": "2026-05-04", "lang": "en", "count": 9, "codes": [ { "code": "1", "description": "Sea transport", "description_en": "Sea transport", "description_nl": "ZEEVERVOER", "legal_reference": null }, { "code": "2", "description": "Rail transport", "description_en": "Rail transport", "description_nl": "SPOORVERVOER", "legal_reference": null }, { "code": "3", "description": "Road transport", "description_en": "Road transport", "description_nl": "WEGVERVOER", "legal_reference": null }, { "code": "4", "description": "Air transport", "description_en": "Air transport", "description_nl": "LUCHTVERVOER", "legal_reference": null }, { "code": "7", "description": "Fixed transport installations", "description_en": "Fixed transport installations", "description_nl": "VASTE INSTALLATIES", "legal_reference": null }, { "code": "8", "description": "Inland waterway transport", "description_en": "Inland waterway transport", "description_nl": "BINNENVAART", "legal_reference": null }, { "code": "9", "description": "Own propulsion", "description_en": "Own propulsion", "description_nl": "EIGEN VOORTDRIJVING", "legal_reference": null } ] }

Example — Procedure Codes (Current)

curl https://app.borderbolt.com/api/v1/codebook/procedures_current \ -H "Authorization: Bearer {token}"
{ "table": "092", "alias": "procedures_current", "table_name": "GEVRAAGDE REG", "date": "2026-05-04", "lang": "nl", "count": 42, "codes": [ { "code": "0700", "description": "Vrijstelling douanerechten (artikel 23 Douanewet)", "description_en": null, "description_nl": "...", "legal_reference": null }, { "code": "4000", "description": "Invoer in het vrije verkeer", "description_en": "Release for free circulation", "description_nl": "Invoer in het vrije verkeer", "legal_reference": null }, { "code": "4200", "description": "Invoer met vrijstelling BTW", "description_en": "Simultaneous release for free circulation and home use of goods subject to VAT exemption", "description_nl": "...", "legal_reference": null } ] }

Example — Supporting Document Types

curl https://app.borderbolt.com/api/v1/codebook/document_types_support \ -H "Authorization: Bearer {token}"
{ "table": "213", "alias": "document_types_support", "table_name": "BIJLAG DOC", "date": "2026-05-04", "lang": "nl", "count": 156, "codes": [ { "code": "C400", "description": "Douanevergunning actieve veredeling", "description_en": "Customs authorisation for inward processing", "description_nl": "...", "legal_reference": null }, { "code": "C505", "description": "ATA-carnet", "description_en": "ATA carnet", "description_nl": "ATA-carnet", "legal_reference": null }, { "code": "N830", "description": "Factuur", "description_en": "Invoice", "description_nl": "Factuur", "legal_reference": null }, { "code": "N935", "description": "Oorsprongscertificaat Form A", "description_en": "Certificate of origin Form A", "description_nl": "...", "legal_reference": null } ] }

Not Found

If the table alias or number does not exist, HTTP 404 is returned:

{ "error": "codebook_not_found", "message": "Codebook table 'xyz' not found. Use a valid table number or alias.", "aliases": ["transport_modes", "countries", "currencies", "..."] }
Last updated on