Van HS-code naar complete import-check in één call. From HS code to complete import check in one call.
Uw systeem heeft de CN-code al. Post die samen met het land van oorsprong naar de Import API en krijg in één JSON-response de invoerrechten, anti-dumping, preferenties, verplichte bescheiden (Vak 44), aanvullende eenheid en CBAM-status terug. Your system already has the CN code. Post it together with the country of origin to the Import API and receive the duties, anti-dumping, preferences, required documents (Box 44), supplementary unit and CBAM status in a single JSON response.
Base URL
https://<uw-import-host>/api/v1
Alle requests via HTTPS. Auth via X-API-Key: imp-<token>. Response is altijd JSON. Vervang <uw-import-host> door de hostname waarop u de app bezoekt. API-keys beheert u in de admin-portal via /import-keys/.
All requests over HTTPS. Auth via X-API-Key: imp-<token>. Response is always JSON. Replace <your-import-host> with the hostname you access the app at. Manage API keys in the admin portal under /import-keys/.
EndpointsEndpoints
/api/v1/import-check
Het hoofd-endpoint. Retourneert alle heffingen, verplichtingen en documentcodes voor een CN8/TARIC10-code gecombineerd met een land van oorsprong. Eén call = compleet dossier voor de aangifte. The main endpoint. Returns all duties, obligations and document codes for a CN8/TARIC10 code combined with a country of origin. One call = complete dossier for the declaration.
Request bodyRequest body
| VeldField | Type | ToelichtingDescription |
|---|---|---|
| hs_code* | string |
CN8 of TARIC10. Punten en spaties worden gestript (6110.11.30 = 61101130).
CN8 or TARIC10. Dots and spaces are stripped (6110.11.30 = 61101130).
|
| origin* | string |
ISO-3166-1 alpha-2 landcode. Bv. CN, US, JP.
ISO-3166-1 alpha-2 country code. E.g. CN, US, JP.
|
| language | string |
nl (default) of en. Bepaalt de taal van labels in de response.
nl (default) or en. Determines the language of labels in the response.
|
| include_future | boolean |
Toon ook maatregelen met een startdatum in de toekomst. Default false.
Also show measures with a start date in the future. Default false.
|
* verplichtrequired
# Wollen trui uit China, CN 61101130 curl -X POST https://<uw-import-host>/api/v1/import-check \ -H "X-API-Key: imp-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" \ -H "X-Client-Ref: klant-referentie-optioneel" \ -H "Content-Type: application/json" \ -d '{ "hs_code": "61101130", "origin": "CN", "language": "en" }'
const res = await fetch('https://<uw-import-host>/api/v1/import-check', { method: 'POST', headers: { 'X-API-Key': apiKey, // imp-... 'X-Client-Ref': clientRef, // optioneel 'Content-Type': 'application/json' }, body: JSON.stringify({ hs_code: '61101130', origin: 'CN', language: 'en' }) }); const data = await res.json(); console.log(data.duty.rate_pct, data.anti_dumping);
import requests r = requests.post( "https://<uw-import-host>/api/v1/import-check", headers={ "X-API-Key": api_key, # imp-... "X-Client-Ref": client_ref, # optioneel }, json={ "hs_code": "61101130", "origin": "CN", "language": "en", }, timeout=10, ) data = r.json() print(data["duty"]["rate_pct"], data["anti_dumping"])
check_circle Response 200 · SUCCESSResponse 200 · SUCCESS
{
"status": "SUCCESS",
"query": {
"hs_code": "61101130",
"origin": "CN",
"language": "en",
"requested_at": "2026-09-04T10:15:22Z"
},
"classification": {
"cn8": "61101130",
"taric10": "6110113000",
"cn8_label": "Of wool or fine animal hair, for men or boys",
"country_name": "China",
"country_found": true,
"supplementary_unit": { "code": "NAR", "label": "Number of items" }
},
"duty": {
"rate_pct": 12.0,
"duty_type": "pct",
"raw": "12.00 %",
"label": "Third-country duty",
"legal_base": "R0193/26",
"origin_scope": "ERGA OMNES",
"preference_code": "100",
"is_erga_omnes": true,
"is_conditional": false
},
"preferences": [
{
"scheme": "GSP+",
"rate_pct": 0.0,
"legal_base": "R0978/12",
"preference_code": "300",
"applies_to_origin": false,
"reason_not_applicable": "CN is not a GSP+ beneficiary"
}
],
"anti_dumping": [
{
"rate_pct": 66.4,
"legal_base": "R0876/25",
"manufacturers": [
{ "additional_code": "A999", "name": "All other companies", "rate_pct": 66.4 },
{ "additional_code": "A123", "name": "Foshan Yicheng Textile Co.", "rate_pct": 22.1, "requires_d008": true }
],
"is_conditional": true
}
],
"countervailing": [],
"documents_box_44": [
{
"measure_type_code": 142,
"condition": "B",
"condition_label": "Presentation of a certificate of origin Form A",
"is_prohibition": false,
"legal_base": "R0978/12",
"options": [
{ "certificate": "N865", "label": "Certificate of origin Form A", "action_code": 27, "action_label": "Present the specified document" },
{ "certificate": null, "label": "Not applicable", "action_code": 6, "action_label": "No document" }
]
},
{
"measure_type_code": 710,
"condition": "A",
"condition_label": "Import control - CITES",
"is_prohibition": true,
"legal_base": "R0338/97",
"options": [
{ "certificate": "C400", "label": "CITES import permit", "action_code": 27, "action_label": "Present the specified document" }
]
}
],
"cbam": { "applicable": false, "sector": null, "gases": [] },
"warnings": []
}Belangrijkste response-veldenKey response fields
| VeldField | ToelichtingDescription |
|---|---|
| duty.rate_pct |
Van toepassing zijnd invoerrecht in %. Bij specifieke tarieven (EUR/kg) is dit null, check duty_type.
Applicable import duty in %. For specific tariffs (EUR/kg) this is null, check duty_type.
|
| duty.preference_code |
UCC-preferentiecode voor SAD Vak 36: 100 = Erga Omnes, 300 = bilaterale preferentie.
UCC preference code for SAD Box 36: 100 = Erga Omnes, 300 = bilateral preference.
|
| preferences[] |
Alle preferentie-schema's die voor deze CN bestaan. applies_to_origin zegt of het gekozen land ervan gebruik kan maken.
All preference schemes that exist for this CN. applies_to_origin tells whether the chosen origin can use it.
|
| anti_dumping[].manufacturers |
Lijst met fabrikant-specifieke tarieven. requires_d008 betekent: alleen geldig met D-008 factuurdeclaratie.
List of manufacturer-specific rates. requires_d008 means: only valid with a D-008 invoice declaration.
|
| documents_box_44[] |
Groepen bescheidencodes voor Vak 44. Per groep 1 optie kiezen bij aangifte. is_prohibition=true betekent: verbod/restrictie, niet weglaten.
Groups of document codes for Box 44. Choose 1 option per group at declaration. is_prohibition=true means: prohibition/restriction, do not skip.
|
| cbam.applicable |
CBAM van toepassing? Zo ja: sector en gases gevuld.
CBAM applicable? If so: sector and gases populated.
|
| warnings[] | Niet-blokkerende opmerkingen (bv. "origin unknown, fell back to ERGA OMNES"). Respons blijft 200. Non-blocking notes (e.g. "origin unknown, fell back to ERGA OMNES"). Response stays 200. |
/api/v1/country/{origin}
Helper, bevestigt of een ISO-code in TARIC bestaat en tot welke landengroepen (GSP, EBA, EEA, EU-JP...) hij hoort. Helper, confirms whether an ISO code exists in TARIC and which country groups (GSP, EBA, EEA, EU-JP...) it belongs to.
curl -H "X-API-Key: imp-..." \
https://<uw-import-host>/api/v1/country/CN{
"status": "SUCCESS",
"code": "CN",
"name": "China",
"groups": ["1011", "2020"],
"eu_member": false
}/api/v1/health
Onauthenticated. Voor monitoring/uptime-checks. Unauthenticated. For monitoring/uptime checks.
{ "status": "ok", "version": "v4.8" }Rate-limitingRate limiting
Standaard 60 requests/minuut en 10.000 requests/dag per key. Configureerbaar per klant. Overschrijding → HTTP 429 met Retry-After.
Default 60 requests/minute and 10,000 requests/day per key. Configurable per client. Exceeded → HTTP 429 with Retry-After.
# Response-headers op elke call
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1725444322FoutcodesError codes
| HTTP | status | WanneerWhen |
|---|---|---|
| 200 | SUCCESS | OK. Kan warnings bevatten.OK. May contain warnings. |
| 400 | BAD_REQUEST | HS-code niet 8/10 cijfers, of origin geen 2-letter code.HS code not 8/10 digits, or origin not a 2-letter code. |
| 401 | UNAUTHORIZED | Ontbrekende of ongeldige API-key.Missing or invalid API key. |
| 404 | NOT_FOUND | HS-code bestaat niet in TARIC.HS code does not exist in TARIC. |
| 429 | RATE_LIMITED | Te veel requests. Zie Retry-After.Too many requests. See Retry-After. |
| 500 | ERROR | Interne fout. message bevat details.Internal error. message contains details. |
{
"status": "BAD_REQUEST",
"message": "hs_code must be 8 or 10 digits after normalisation",
"request_id": "req_a1b2c3"
}VersioneringVersioning
Breaking changesBreaking changes
Nieuwe major (/api/v2/). Oude versie draait minimaal 6 maanden parallel; Sunset-header 3 maanden vóór einde.
New major (/api/v2/). Old version runs at least 6 months in parallel; Sunset header 3 months before end-of-life.
Additive changesAdditive changes
Nieuwe optionele velden of parameters komen zonder versiebump; changelog in CHANGELOG_API.md.
New optional fields or parameters ship without a version bump; changelog in CHANGELOG_API.md.
Klaar om te testen?Ready to test?
Open de tester, plak je API-key en klik een voorbeeld. Response zie je meteen, geen curl, geen Postman nodig. Open the tester, paste your API key, and click an example. You see the response immediately, no curl or Postman needed.