Skip to Content
API ReferenceTransit API

Transit API

The Transit API provides full CRUD operations for NCTS5 transit declarations, including departure (T1/T2), arrival, amendments, and enquiry responses.

Required Scope: transit:read, transit:write, transit:delete

List Transit Declarations

Retrieve a paginated list of transit declarations with optional filters.

curl -X GET "https://app.borderbolt.com/api/v1/transit?status=ACC&page=1" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Query Parameters

ParameterTypeDescription
statusstringFilter by status (DRF, NEW, ACC, REJ, ARR, etc.)
typestringFilter by type (departure, arrival)
mrnstringFilter by Movement Reference Number
lrnstringFilter by Local Reference Number
customer_codestringFilter by customer code
created_fromdateFilter by creation date (from, YYYY-MM-DD)
created_todateFilter by creation date (to, YYYY-MM-DD)
pageintegerPage number (default: 1)
per_pageintegerResults per page (default: 25, max: 100)

Response

{ "data": [ { "id": 5001, "lrn": "26NL00001234567890123", "mrn": "26NL12345678901234567", "type": "departure", "status": "ACC", "transit_type": "T1", "customer_code": "CUST001", "office_of_departure": "NL000396", "office_of_destination": "BE123456", "total_items": 2, "total_gross_mass": 850.00, "total_packages": 45, "created_at": "2026-03-25T09:00:00.000000Z", "submitted_at": "2026-03-25T09:15:00.000000Z" } ], "meta": { "current_page": 1, "per_page": 25, "total": 120 } }

Get Single Transit

Retrieve a single transit declaration with all items.

curl -X GET "https://app.borderbolt.com/api/v1/transit/5001" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Response

{ "id": 5001, "lrn": "26NL00001234567890123", "mrn": "26NL12345678901234567", "type": "departure", "status": "ACC", "transit_type": "T1", "customer_code": "CUST001", "office_of_departure": "NL000396", "office_of_destination": "BE123456", "guarantee": { "type": "0", "reference": "26NL00001234567", "amount": 5000.00, "currency": "EUR" }, "parties": { "principal": { "name": "Transport B.V.", "eori": "NL987654321012" }, "consignor": { "name": "Example B.V.", "eori": "NL123456789012" }, "consignee": { "name": "BE Receiver SA", "address": "Rue de la Loi 1", "city": "Brussels", "postal_code": "1000", "country": "BE" } }, "total_items": 2, "total_gross_mass": 850.00, "total_packages": 45, "items": [ { "id": 10001, "item_number": 1, "description": "Electronic Equipment", "hs_code": "85176290", "gross_mass": 500.00, "packages": 20, "package_type": "CT", "marks": "LOT-2026-A" } ], "created_at": "2026-03-25T09:00:00.000000Z", "submitted_at": "2026-03-25T09:15:00.000000Z" }

Create Departure Declaration

Create a new transit departure declaration (T1/T2).

curl -X POST "https://app.borderbolt.com/api/v1/transit/departure" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "lrn": "26NL00001234567890124", "transit_type": "T1", "customer_code": "CUST001", "office_of_departure": "NL000396", "office_of_destination": "BE123456", "guarantee": { "type": "0", "reference": "26NL00001234567" }, "parties": { "principal": { "name": "Transport B.V.", "eori": "NL987654321012" }, "consignor": { "name": "Example B.V.", "eori": "NL123456789012" }, "consignee": { "name": "BE Receiver SA", "address": "Rue de la Loi 1", "city": "Brussels", "postal_code": "1000", "country": "BE" } }, "items": [ { "item_number": 1, "description": "Electronic Equipment", "hs_code": "85176290", "gross_mass": 500.00, "packages": 20, "package_type": "CT" } ] }'

Request Body

FieldRequiredTypeDescription
lrnNostringLocal Reference Number (auto-generated if omitted)
transit_typeYesstringT1 (external), T2 (internal), T2F (internal with special fiscal)
customer_codeYesstringCustomer code
office_of_departureYesstringDeparture customs office
office_of_destinationYesstringDestination customs office
guaranteeYesobjectGuarantee details (type, reference)
partiesYesobjectPrincipal, consignor, consignee
itemsYesarrayTransit items

Create Arrival Declaration

Create an arrival declaration for an existing transit.

curl -X POST "https://app.borderbolt.com/api/v1/transit/arrival" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "mrn": "26NL12345678901234567", "arrival_date": "2026-03-26T14:30:00", "office_of_destination": "BE123456", "unloading_remarks": "All packages intact, no discrepancies" }'

Create Arrival from MRN

Create an arrival by looking up the departure MRN.

curl -X POST "https://app.borderbolt.com/api/v1/transit/arrival-from-mrn" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "mrn": "26NL12345678901234567", "arrival_date": "2026-03-26T14:30:00", "unloading_remarks": "All packages intact" }'

Update Transit

Update a draft transit declaration.

curl -X PUT "https://app.borderbolt.com/api/v1/transit/5001" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "office_of_destination": "FR123456" }'

Status Restriction: Only draft (DRF) transit declarations can be updated.

Delete Transit

Delete a draft transit declaration.

curl -X DELETE "https://app.borderbolt.com/api/v1/transit/5001" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Submit Departure

Submit a departure declaration to customs.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/submit" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Response

{ "id": 5001, "status": "NEW", "submitted_at": "2026-03-25T09:15:00.000000Z", "message": "Transit departure submitted successfully" }

Submit Arrival

Submit an arrival notification to customs.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/submit-arrival" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Submit Amendment

Amend an accepted transit declaration.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/amend" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "reason": "Incorrect destination office", "changes": { "office_of_destination": "FR789012" } }'

Request Invalidation

Request invalidation of a transit declaration.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/invalidate" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "reason": "Shipment cancelled by customer" }'

Enquiry Response

Respond to a customs enquiry (IE140).

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/enquiry-response" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "response": "Goods are currently at warehouse in Brussels awaiting final delivery", "supporting_documents": [ { "type": "warehouse_receipt", "reference": "WH-2026-001" } ] }'

Unloading Remarks

Submit unloading remarks for an arrival.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/unloading-remarks" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "remarks": "All 45 packages received intact, no discrepancies", "unloading_completed": true }'

Copy Transit

Create a copy of an existing transit declaration.

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/copy" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "lrn": "26NL00001234567890125" }'

View Timeline

Get the complete event timeline for a transit declaration.

curl -X GET "https://app.borderbolt.com/api/v1/transit/5001/timeline" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Response

{ "transit_id": 5001, "lrn": "26NL00001234567890123", "events": [ { "event": "created", "status": "DRF", "timestamp": "2026-03-25T09:00:00.000000Z", "user": "API Client" }, { "event": "submitted", "status": "NEW", "timestamp": "2026-03-25T09:15:00.000000Z", "user": "API Client", "message_type": "IE015" }, { "event": "accepted", "status": "ACC", "timestamp": "2026-03-25T09:17:30.000000Z", "user": "Customs", "message_type": "IE029", "mrn": "26NL12345678901234567" }, { "event": "arrival_submitted", "status": "ARR", "timestamp": "2026-03-26T14:35:00.000000Z", "user": "API Client", "message_type": "IE007" } ] }

Get Available Actions

Get available actions for a transit declaration based on its current status.

curl -X GET "https://app.borderbolt.com/api/v1/transit/5001/actions" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Response

{ "transit_id": 5001, "status": "ACC", "actions": [ "submit_arrival", "amend", "invalidate", "copy" ] }

Transit Items

Add Item

curl -X POST "https://app.borderbolt.com/api/v1/transit/5001/items" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "item_number": 3, "description": "Machinery Parts", "hs_code": "84799090", "gross_mass": 300.00, "packages": 15, "package_type": "PX" }'

Update Item

curl -X PUT "https://app.borderbolt.com/api/v1/transit/5001/items/10001" \ -H "Authorization: Bearer your-access-token" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "gross_mass": 520.00 }'

Delete Item

curl -X DELETE "https://app.borderbolt.com/api/v1/transit/5001/items/10001" \ -H "Authorization: Bearer your-access-token" \ -H "Accept: application/json"

Status Codes

StatusDescription
DRFDraft - not yet submitted
NEWSubmitted, awaiting customs response
ACCAccepted by customs (MRN assigned)
REJRejected by customs
ARRArrival submitted
CMPCompleted (arrival accepted)
INVInvalidated
ENQEnquiry received

Next Steps

Last updated on