The single URL you register. All subscribed event types are delivered to it with the same envelope; the event type is carried in the body's "event" member, not in the path.
Agree POSTs a signed event envelope to your registered endpoint.
Messages
invoice.created
Fires after POST /invoices.
Content-Type:
invoice.sent
Fires when delivery completes.
Content-Type:
invoice.due
Fires when status becomes due - either the scheduled job runs after sent (past due_at), or the invoice is sent already at or past due_at (immediate due).
Content-Type:
invoice.paid
Fires after payment confirmation.
Content-Type:
invoice.failed
Fires after payment rejection. The invoice status becomes failed but the customer can retry payment using the same link.
Content-Type:
invoice.canceled
Fires after DELETE /invoices.
Content-Type:
invoice.refunded
Fires after a refund is processed.
Content-Type:
agreement.created
Fires after POST /agreements.
Content-Type:
agreement.sent
Fires when status changes to sent.
Content-Type:
agreement.signed
Fires when a recipient signs. Emitted once per signer.
Content-Type:
agreement.executed
Fires when all signers have signed.
Content-Type:
webhook.test
Fires when you trigger a test via POST /api/v1/webhooks/test.
Content-Type:
About AsyncAPI
The AsyncAPI specification describes event-driven APIs the way OpenAPI describes request/response APIs. A channel is the named pipe — a webhook URL, a Kafka topic, a WebSocket route, an MQTT subject — that producers and consumers publish or subscribe to. Each channel carries one or more messages with structured payloads, and an operation declares whether a given party sends or receives on that channel.
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.