6-Stage Exponential Retry Schedule
Non-2xx responses trigger automatic retries at 30s → 2m → 10m → 1h → 6h → 24h, plus 1-click manual replay inside your Merchant Webhook Logs.
Automate order fulfillment, SaaS seat upgrades, player balance top-ups, and ES256 software license issuance with signed, idempotent HMAC-SHA256 webhooks across all 12 supported blockchains.
Non-2xx responses trigger automatic retries at 30s → 2m → 10m → 1h → 6h → 24h, plus 1-click manual replay inside your Merchant Webhook Logs.
event_id IdempotencyStore event_id as a UNIQUE database key before crediting balances or shipping digital goods so retries never duplicate fulfillment.
XPayr enforces strict HTTPS, DNS-pinned public IP resolution, CURLOPT_FOLLOWLOCATION=false, and 5-minute replay-window timestamp headers.
Compute HMAC-SHA256 over the exact unparsed raw HTTP request body using your whsec_ endpoint secret and compare the hex digest against X-XPayr-Signature using a constant-time function such as crypto.timingSafeEqual (Node.js), hmac.compare_digest (Python), or hash_equals (PHP).
payment.completed fires when the on-chain transfer equals or exceeds the exact invoice amount. payment.underpaid_accepted fires when a Direct Exchange QR withdrawal lands within XPayr's 1% (max $0.50) tolerance threshold, exposing both requested_amount and received_amount so your ledger stays penny-accurate.
Any response outside HTTP 200–299 (or slower than 10 seconds) enters XPayr's exponential backoff retry queue (30s, 2m, 10m, 1h, 6h, 24h) while preserving the identical event_id so your idempotency table prevents double-crediting.
Production webhook destinations must use HTTPS over public routable DNS/IPs with valid TLS certificates. XPayr blocks plaintext HTTP, private/loopback RFC1918 ranges, cloud metadata IPs, and HTTP redirects to prevent SSRF.