Skip to content
API DocsDocs

Callback Retry Mechanism

How Exirom retries failed webhook callbacks

2 min readUpdated Mar 26, 2026

Callback Retry Mechanism

Exirom uses webhook callbacks to notify your system of transaction status changes. If a callback delivery fails, the system automatically retries using exponential backoff.

#How It Works

When a transaction reaches a terminal status, Exirom sends an HTTP POST to your configured callback URL. If your endpoint returns a non-2xx response or the request times out, the callback is stored and scheduled for retry.

Only terminal transaction statuses trigger retry storage. Intermediate status updates that fail delivery are not retried.

#Retry Schedule

Retries follow an exponential backoff pattern: each subsequent retry waits twice as long as the previous one, calculated as 2^(attempt-1) x 120 seconds.

AttemptDelay After PreviousCumulative Wait
1 (initial)Immediate0 minutes
Retry 12 minutes2 minutes
Retry 24 minutes6 minutes
Retry 38 minutes14 minutes
Retry 416 minutes30 minutes
Retry 532 minutes62 minutes

#Scope

The callback retry mechanism applies to all webhook-enabled operations:

  • Card payments
  • Card payouts
  • Card refunds
  • APM payments
  • APM payouts

#Best Practices

  • Respond 200 OK immediately — do heavy processing asynchronously after returning the response
  • Deduplicate on transactionId to handle callbacks delivered more than once
  • Implement a polling fallback via GET /v1/payments/card/status/{id} for critical transactions if your endpoint was unavailable
  • Always verify the X-Checksum header before processing

For code examples covering each of these patterns, see Webhook Best Practices.

Was this helpful?