Skip to main content
Webhooks push events to your server as they happen, so you do not need to poll.

Register an endpoint

In the dashboard: Settings → API & Webhooks. Or through the API, with an API key that has the webhooks:write scope:

Verify the signature

Deliveries are signed with Svix. Always verify before trusting a payload:
Pass the raw request body as payload, not re-serialized JSON. Respond with a 2xx quickly and do heavy work asynchronously; failed deliveries are retried. Webhook endpoints require a production organization. While the organization is in test mode, registering an endpoint answers 403 with code PRODUCTION_REQUIRED and no events are sent; listing and deleting endpoints keep working. Payable does not follow redirects. A 3xx response from your endpoint is treated as a failed delivery and retried like any other failure, so register the final URL, not one that redirects.

Events

Payload

live is true for production data and false for sandbox. Events can be delivered more than once, so deduplicate by id.

success_fee.created

Sent when Payable records its success fee on a recovered payment: a debt settlement or a paid agreement installment, by any payment path, made between the first collection send and the end of the attribution window after the last one. Only organizations billed by success fee receive it. There is one fee per recovered payment, so data.id is stable across retries.