O2C Webhooks
Your other systems shouldn't poll the books to find out a deal closed or a payment landed. O2C webhooks push order-to-cash events to any HTTPS endpoint you register, with signed payloads and a full delivery log.
Key capabilities
- Seven subscribable event types: order.countersigned, contract.activated, drawdown.approved, invoice.drafted, invoice.sent, contract.completed, and payment.received
- Per-endpoint event subscriptions — each endpoint receives only the events it opted into
- HMAC-signed payloads: each endpoint gets a signing secret so receivers can verify authenticity
- The plaintext signing secret is shown once, at creation — store it when you see it
- Delivery log per endpoint: status, attempt count, HTTP response code, and the next retry time while retrying
- Failed deliveries retry automatically with backoff
- Delete an endpoint to stop deliveries (its delivery history is removed with it)
How it works
flowchart LR
event["O2C event (e.g. payment.received)"] --> match["Subscribed endpoints"]
match --> sign["HMAC-sign payload"]
sign --> post["POST to endpoint"]
post -->|"2xx"| done["Delivered"]
post -->|"failure"| retry["Retry with backoff"]
retry --> postHow to use it
- Open Order to Cash → Webhooks and add an endpoint URL.
- Check the event types it should receive and save — then copy the signing secret from the confirmation (it won't be shown again).
- Verify the HMAC signature on each delivery in your receiver before trusting the payload.
- Use the per-endpoint deliveries view to debug: status, attempts, response codes, and when the next retry fires.
Pro tips
- Subscribe narrowly — an endpoint that only cares about
payment.receivedshouldn't have to ignore six other event types. - If you lose a signing secret, delete the endpoint and re-create it to mint a new one.