Envelope comparison
| Domain | Top-level event field | Resource field | Concrete event name |
|---|---|---|---|
| Payments | event: "transaction" | data | data.event_type |
| Transfers | type | data.object | top-level type |
Payment webhook example
Transfer webhook example
ACK response
Common ingestion error
id, deduplicate by that value, return 200 OK quickly, and process asynchronously.
Mapping guidance
- Drive business state from resource status, not from a frontend guess.
- Map transfer event
payout.transferredto settled resource statuspaid. - Reconcile if your worker crashes after acknowledgement.

