Endpoint
Response shape
Status values
complianceStatus is a three-state rollup:
| Status | Meaning |
|---|---|
INCOMPLETE | One or more required artifacts missing. See blockers[]. |
VALID | All modules valid. VAT exemption applies. Export File generates. |
INVALID | Terminal failure (VIES invalid at pickup, documents unrecoverable, etc.). VAT must be applied. Export File still generates documenting rationale. |
decision is populated after the terminal status is reached:
VALID_EXPORT— VAT-exempt transaction complete.VAT_APPLICABLE— VAT must be applied on the final invoice.
Blockers
blockers[] is the actionable list of what’s missing. Each entry carries:
module— which module is blockingcode— machine-readable key (safe to map to UI copy)message— human-readable explanation
Per-VIN variance
Transport state may differ per VIN in multi-VIN orders (one vehicle picked up, another pending). Checkmodules.transport.vins[] for per-VIN
milestones. Buyer/invoice/payment are order-level.
Polling efficiently with ETag
The rollup supportsIf-None-Match for cheap polling:
version bumps. Use a short poll interval
(10–60s) for orders in flight; less for completed orders.
When to poll vs subscribe to webhooks
| Pattern | Use when |
|---|---|
| Poll rollup + ETag | Simple integrations, no webhook endpoint infrastructure, small order volume. |
Subscribe to compliance.status_changed + refetch on event | High volume, need real-time reaction, already running HTTP server. |
| Both | Defense in depth — webhooks for latency, polling for reconciliation. |
Next
Idempotency
How to retry safely.
Webhooks overview
Event-driven alternative to polling.