Retry Timed-Out Payouts
Understand when to retry a timed-out payout, how to use idempotency safely, and where to continue into the recipe and supporting guides.
Retry a Timed-Out Payout Safely
Use this flow when a payout request times out or your network fails before you receive a confirmed API response, and you need to retry without risking a duplicate payment.
✅ Before you start
Complete these steps before you implement timeout recovery for payouts:
- Generate a unique
Idempotency-Keyfor every payout request. - Store that key with your internal payment reference before you call the send endpoint.
- Register webhook endpoints so you can reconcile payout state changes after the request returns or times out.
- Make sure your retry logic can resend the exact same request without generating a new key.
📚 Use this page with the recipe
This guide explains when to use the timeout-retry flow and the minimum sequence. For the step-by-step implementation, use the recipe:
Retry a Timed-Out Payout Safely Recipe →
The timeout-retry workflow
This use case follows a strict safety sequence:
- Create the payout with a unique
Idempotency-Key. - Treat a timeout as an unknown result instead of assuming the payout failed.
- Retry the request with the same key so the original operation is reused if it already exists.
- Reconcile the final state through webhooks and update your internal payment record.
What makes this use case different?
Unlike a normal payout flow, this guide is specifically for situations where:
- the API request may have succeeded even though your app did not receive the response
- creating a new payout would risk sending money twice
- webhook-driven reconciliation is the safest source of truth for the final outcome
Where to go deeper
Use the product guides when you need implementation detail for a specific step:
Success indicators
| Signal | What it means |
|---|---|
Same Idempotency-Key reused | The retry is tied to the original payout attempt. |
| Webhook state received | Your app can reconcile the final payout outcome asynchronously. |
| No duplicate internal payment record | Your retry logic did not create a second payout attempt by mistake. |
Troubleshooting
| Issue | What to check |
|---|---|
| Team retries with a new key | Reuse the original Idempotency-Key or you may create a duplicate payout. |
| Final payout state is unclear | Check webhook delivery and reconcile against the stored payment reference and transaction identifier. |
| Timeouts happen repeatedly | Review network stability, endpoint responsiveness, and whether the downstream rail is causing longer processing times. |
Next steps
| Errors and Retries → Apply the broader retry decision framework across auth, rate limits, validation errors, and payout flows. | Webhooks → Use webhook-driven state changes to reconcile uncertain outcomes safely. |
Updated 3 days ago
