Skip to main content
Credit a customer only from a verified disbursement.completed event — never from a client callback. Delivery is at-least-once and signed (Pulse-Signature, HMAC-SHA256 over the raw request body); a re-serialized JSON object will not match the signature.

De-duplication

verifyOnce verifies the signature, checks replay tolerance, and de-duplicates on event.id using an in-memory store by default — it returns null for a redelivery, which you should acknowledge with a 200 rather than treat as an error. On multiple instances, back de-duplication with a shared store (Redis, a database table) that implements the ProcessedEventStore contract (has / add on event id), passed to the Pulse constructor:
Credit a customer only after a verified disbursement.completed webhook. Client-side callbacks such as onSuccess are UX signals — they can be spoofed. The signed webhook is the only source of truth for crediting a user.
See the webhook event catalog for every event and payload.