Skip to content

Retries, order and duplicates

What happens when a delivery fails, why events can arrive twice or out of order, and how to handle both.


  • A failed delivery is tried again after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours, 12 hours and 24 hours: eight attempts in about two days.
  • After 5 deliveries in a row have used all their attempts, the endpoint is switched off and webhook_endpoint.disabled is sent to your merchant endpoints (there is no email). The dashboard shows the endpoint as off with the reason; switch it back on once your server is ready. Held events are not lost: they are sent after you do.
  • Events can arrive more than once and out of order (payment.settled can overtake payment.succeeded). Use the event id to ignore a repeat, and read the object’s current status instead of assuming a sequence.
  • You can send an event again from the dashboard, and the sandbox can run scenarios (success_flow, failed_flow, expired_flow, out_of_order, duplicate) against an endpoint.