What they are good for
- Latency. A
fiat.withdrawal.completedarrives seconds after settlement, where a poller might take minutes. - Fan-out. One endpoint learns about transfers, cards, bills, accounts, and customers without seven pollers.
- State you cannot ask for.
account.updatedis how you learntransferReadyflipped without watching for it.
What they must not be trusted with
Delivery is one attempt. No retry, no backoff, no dead-letter redelivery. A deploy, a timeout, or a502 from your load balancer loses the event, and the only recovery is a manual resend from the dashboard or your own reconciliation.
So:
The rule that holds: use the event to know when to look, and the REST resource to know what is true.
Pair every subscription with a sweeper
For anything that moves money, a scheduled reconciliation is not optional.What you cannot configure
Environments are separate
Sandbox and live are separate deployments with separate endpoints and separate secrets. Configure each independently. An endpoint enabled in one does not exist in the other, and enabling one does not backfill events that occurred before it.Next
- Get started — a correct receiver in about thirty lines
- Events — the catalog and payload shapes
- Setup and configuration — URLs, secrets, and what Sakawave will refuse