registration.linked and
registration.revoked.
This page covers those two events. The endpoint, the signature check, the retries and the delivery
log work the same for every event and live in Receive events, so set
that up first. By the end your onboarding system marks a registration complete as soon as the
trader links it, and catches any delivery it missed.
1
Subscribe to the two registration events
Register an endpoint that receives only the onboarding events, so your onboarding system gets
nothing else. Leaving The response is
events out, or sending an empty list, receives every event type.Required scope: venue:configure.201 with the endpoint and its signing secret. You can have five endpoints,
so an onboarding system and a billing system can each keep their own filter.Registration events go to the endpoints of the venue your pre-registration key acts for. A
Venue key registers endpoints on its own venue, so the call above receives them when your
pre-registration key and your Venue key act for the same venue.
2
Read the payload
Every delivery is a
POST with the same envelope: a type, a createdAt, and a data object.
For a linked registration, data carries the registration’s id, the trader’s email and the
account number, the things you sent when you created it, so you can find your own record without
a lookup table. A cancelled registration’s data carries its id.No event fires when a registration expires. A pending registration that nobody links passes its
expiresAt quietly, so you notice expiry on the list.3
Handle a delivery twice without harm
A delivery your endpoint doesn’t answer with
2xx, including one that times out, is retried
for about nine hours, so the same event can arrive more than once. Key your processing on
registrationId in the payload, which stays the same across retries.4
Reconcile against the list
The registration list is the settling read: it’s built from the
same records the events come from.Read it on a schedule and compare it with your own table. A registration your table calls pending
but the list calls
linked is a delivery you missed. One the list calls expired is a trader who
never arrived.Resolve a mismatch with our records
Work down this list. Each step is cheaper than the next.- The registration list. It’s the source of truth for status. If it says
linked, the trader linked the account, whatever your table says. - The delivery log.
GET /api/venues/{venueId}/webhooks/{webhookId}/deliverieslists every attempt for one endpoint, newest first, each with the exact payload sent, so you can replay an event your endpoint dropped.pendingmeans it’s still being retried;failedmeans the retries ran out. - A test ping.
POST /api/venues/{venueId}/webhooks/{webhookId}/testsends a signedpingright now and reports exactly what your endpoint answered. It tells a broken delivery apart from a handler that’s refusing.
Test it end to end
- Register a test endpoint for the two events and send it a test ping. Your endpoint verifies the
signature and answers
2xx. - Register an account for a sandbox test trader, then cancel it.
Your endpoint receives
registration.revokedwith thatregistrationId. - Register it again and link it by signing in as the test trader. Your endpoint receives
registration.linked.
Next steps
Receive events
Verify signatures, handle retries and read the delivery log.
Register an account
Create, list and cancel registrations.