What counts as a failed delivery
A delivery attempt fails when any of the following happens:
The only successful outcome is a 2xx status with the literal body
success (trimmed, case-insensitive). See the full acknowledgement contract.
Retry schedule
Failed deliveries are retried with exponential backoff and jitter:
Up to 6 attempts in total (initial + 5 retries), spanning roughly 1.5 to 3 hours.
These are current Bloobank-side defaults, indicative rather than contractual. The schedule may be tuned over time. Design for at-least-once delivery under any schedule — never encode the attempt count or timing into your business logic.
After the last attempt: parked for replay
When all automatic attempts are exhausted, the event is parked for operator-driven replay. It is not lost — a Bloobank operator can redeliver it manually, potentially hours or days later, typically after you have fixed your receiver and coordinated a replay. If your endpoint was down beyond the automatic retry span, contact Bloobank to schedule a replay of the parked events.What stays stable across attempts — and what does not
Every attempt of the same event carries:
Two consequences:
- Deduplicate by
(id, etag), never by signature.tandv1change on every attempt; only payload fields are stable. - Enforcing a freshness window is always safe. Rejecting a stale delivery never strands an order — the retry arrives with a valid recent signature.
What your endpoint must guarantee
Monitoring and alerting
Instrument your receiver — retries make delivery robust, but only monitoring tells you why they are happening:Next
Best practices
Deduplication, ordering, and the idempotent consumer pattern.
Verifying signatures
Verify every attempt before processing.