What you subscribe to
Ten events, grouped by domain. See event catalog for full payload schemas.| Event | What it means |
|---|---|
compliance.status_changed | Order rollup transitioned (INCOMPLETE → VALID → …). |
compliance.decision_made | Final verdict (VALID_EXPORT or VAT_APPLICABLE). |
kyc.vies_check_failed | Known-good buyer became VIES-invalid. Urgent. |
kyc.verification_completed | Mode B iDenfy + AML outcome. |
export_file.generated | Export File PDF ready for download. |
prospect.submitted | New prospect via public self-service link. |
self_service_invitation.used | Buyer completed emailed self-service flow. |
self_service_invitation.expired | Invitation TTL elapsed unused. |
webhook.endpoint_auto_paused | Meta — your endpoint was paused after failures. |
webhook.delivery_failed_terminal | Meta — single event exhausted retries. |
Delivery guarantees
- At-least-once. Deduplicate on event
id. - HMAC-SHA256 signed. Always verify
X-Novatrade-Signature. - Retries: 10 attempts over 72h with exponential backoff.
- Auto-pause: endpoint paused after 20 consecutive failures OR 72h of continuous failure.
- 30-day retention on delivery history with manual replay.
Scoping
Subscriptions support:- Exact event types —
compliance.status_changed. - Segment wildcards —
compliance.*,kyc.*,self_service_invitation.*. - Per-partner filter —
partnerIdsarray limits deliveries to specific authorized partners;null= all.
*) — you must opt in at least at the segment level.
Envelope shape
Every event body follows the same envelope:id— for dedup.type— routing key.schemaVersion— bump when we evolve thedatashape. Register the versions you accept withacceptedSchemaVersions.source—API|WEB_APP|SYSTEM. Filter self-echoes by comparing your own calls againstsource=WEB_APPevents.organizationUuid/partnerUuid— route events to the right downstream tenant/dealer.data— see per-event schemas in the event catalog.
Webhooks + polling together
Production integrations combine both:- Webhooks minimize latency on reaction to state changes.
- Polling compliance rollup reconciles cases where webhook delivery
was delayed or misrouted. Cheap via
ETag/If-None-Match.
What webhooks do NOT fire on
Customer-initiated actions do not echo back. If youPOST /transport/pickup,
you already know the pickup was confirmed. No webhook fires for source=API
transitions.
Phase 3+ will add source=WEB_APP-filtered events for cross-channel sync
(web-app staff confirmed pickup, API caller learns).
Next
Setup
Register an endpoint.
Event catalog
Full payload schemas.