Register an endpoint
In the dashboard: Settings → API & Webhooks. Or through the API, with an API key that has thewebhooks:write scope:
Verify the signature
Deliveries are signed with Svix. Always verify before trusting a payload: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.