Skip to main content
Transport is the proof-of-cross-border-movement module — the artifact the tax authority cares most about for VAT-exempt transactions. Two milestones (pickup + delivery), each backed by documents.

Pickup confirmation

Call once, when the vehicle leaves the seller’s premises:
curl -X POST "https://api.novatrade24.com/v1/partners/${SELLER_ID}/orders/${ORDER_UUID}/transport/pickup" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "COMPANY_TRANSPORT",
    "pickupDate": "2026-04-22",
    "driverIdentification": "DE-FR-2026-1234",
    "collectionAddress": {
      "street": "Hauptstraße 42",
      "postCode": "10115",
      "city": "Berlin",
      "country": "DE"
    }
  }'
type is one of:
  • SELF_PICKUP — buyer or their agent picks up personally. CMR not applicable; upload a TRANSPORT_PICKUP_DECLARATION signed by the buyer.
  • COMPANY_TRANSPORT — transport company moves the vehicle. CMR required.
Pickup is immutable once set. A second POST returns 409 with the current state. If you confirmed incorrectly, use the explicit POST /transport/pickup/revoke endpoint — revocation is auditable and requires a reason.

Upload pickup documents

curl -X POST "https://api.novatrade24.com/v1/partners/${SELLER_ID}/orders/${ORDER_UUID}/transport/documents" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "type=TRANSPORT_CMR" \
  -F "documentDate=2026-04-22" \
  -F "file=@/path/to/cmr-unsigned.pdf"
Allowed types:
TypeWhen
TRANSPORT_CMRCompany transport — CMR waybill at pickup
TRANSPORT_PICKUP_DECLARATIONSelf-pickup — signed declaration
TRANSPORT_PICTURE_OF_TRANSPORTSupporting photo (vehicle on trailer, etc.)

Revoke pickup

For corrections before delivery has happened:
curl -X POST "https://api.novatrade24.com/v1/partners/${SELLER_ID}/orders/${ORDER_UUID}/transport/pickup/revoke" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Wrong pickup date entered — driver did not arrive until 2026-04-23" }'
After revocation, you can call POST /transport/pickup again with the corrected data.

Delivery confirmation

Call when the vehicle arrives at the destination (buyer’s premises):
curl -X POST "https://api.novatrade24.com/v1/partners/${SELLER_ID}/orders/${ORDER_UUID}/transport/delivery" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "arrivalDate": "2026-04-24",
    "arrivalConfirmation": "Received at buyer address; driver signature captured"
  }'
Immutable once set. Same revoke pattern applies if needed.

Upload delivery documents

curl -X POST "https://api.novatrade24.com/v1/partners/${SELLER_ID}/orders/${ORDER_UUID}/transport/documents" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "type=TRANSPORT_CMR_DELIVERY" \
  -F "documentDate=2026-04-24" \
  -F "signedWet=true" \
  -F "file=@/path/to/cmr-signed.pdf"
Allowed types:
TypeWhen
TRANSPORT_CMR_DELIVERYSigned CMR from the buyer / consignee
TRANSPORT_CONFIRMATION_OF_ARRIVALSelf-pickup — signed arrival confirmation

Daily VIES re-check

Once you mark payment ready-for-pickup, NT24 re-runs VIES on the buyer’s VAT number every 24 hours until delivery is confirmed. A failing check fires kyc.vies_check_failed and flips the compliance rollup to INVALID unless resolved within the transport window. This is the mandatory continuous validation mentioned in the EU VAT directive — NT24 implements it on your behalf.

Per-VIN transport in multi-VIN orders

Single-VIN (Phase 1 default): transport fields are order-level. Multi-VIN (requires allowMultiVinOrders capability): the transport rollup has a vins[] array with per-VIN pickup/delivery state. Some VINs may be delivered while others are still in transit; overall transport status becomes PARTIAL until all VINs reach DELIVERED. Per-VIN CMR uploads are a Phase 2+ feature.

Compliance impact

After delivery confirmed + all required documents uploaded:
  • transport.status becomes DELIVERED.
  • cmrUploaded becomes true.
  • Compliance rollup evaluates: if all modules green → VALID + Export File generates.

Next

Finalization

Final invoice and Export File download.

Compliance rollup

Track transport module state.