📄 Guide
This page assumes you have obtained credentials, registered your callback URL and read the shared conventions in First steps. Taking “issue an employee a virtual card paid from the company pool” as the example, the following walks the whole flow.The shortest issuing path
Request signing
Every business endpoint (paths starting with/open-api-corp/) must be signed; a failed signature check returns HTTP 401.
Signature algorithm
--data-binary with cURL).
- Timestamp window: the server checks |now − timestamp| ≤ 5 seconds; outside the window it returns
DAPI_TIMESTAMP_EXPIRED. Make sure NTP is enabled on your servers. - Replay protection: the same signature is accepted only once within a short window — a repeat returns
DAPI_NONCE_DUPLICATE; a nonce outside the range returnsDAPI_NONCE_ILLEGAL. Generate a fresh nonce for every request. - The SK never appears in any request; it is used only to compute the signature locally.
Receiving webhooks
Callback flow: an HTTP POST from DCS to your server, with the unified envelope{webhookId, webhookType, businessId, data, notificationTime} (data}`. Your receiver must implement four things:
The retry window is about 3 minutes: a non-2xx or a timeout triggers redelivery, up to 3 retries about 1 minute apart with no backoff (at most 4 deliveries including the first). After all fail the event is marked failed and alerted. Poll the query endpoints on a schedule — they are the fallback when callbacks fail outright.
Next steps
- Understand holders, funding and state machines: Holders and the funding model
- Go deeper domain by domain, starting with Managing companies

