Webhooks
Receive signed events when invoices are created, paid, expired, and more.
Configure endpoints in Dashboard → Developers. Test events go to test endpoints; live to live.
Verify signatures
Payloads are signed with HMAC SHA-256.
paylink-signature: t=<unix_ts>,v1=<hex_hmac>
Signed string: "<ts>.<raw_body>". Reject if |now - ts| > 300 seconds. Always verify against the raw body before JSON-parsing.
Buyer matching
On invoice.paid, read external_reference, customer_email, metadata, and id. If you created the invoice without email/reference, you must have stored invoice.id against your user yourself.
Retries
Failed deliveries are retried. Return 2xx quickly; do heavy work asynchronously.