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 Tensig 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 Tensig 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://import.tensig.nl/api/v1
Alle requests via HTTPS. Auth via X-API-Key: imp-<token>. Response is altijd JSON. Key-beheer via cbamadmin.tensig.nl/import-keys/.
All requests over HTTPS. Auth via X-API-Key: imp-<token>. Response is always JSON. Key management at cbamadmin.tensig.nl/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://import.tensig.nl/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://import.tensig.nl/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://import.tensig.nl/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://import.tensig.nl/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.