Free tool · Double-Pay Retry Simulator
How many of your next 1,000 agent payments will go out twice?
Enter your retry settings and your chain's confirmation times. See the expected number of duplicate payments, the value at risk each month, and the three settings that bring it to zero. No wallet, no code, no transaction data.
Nothing you enter leaves your browser.
Your result
About 20 of every 1,000 payments go out twice.
- Duplicates per 1,000 payments
- 20
- Duplicates in 30 days
- 302
- Value exposed in 30 days
- 7,550 USD
- Chance one attempt times out
- 2%
- 0 s · Payment sent
- 30 s · No response: timeout
- 31 s · Retry sent as a new payment
- 35 s · Retry lands
- 36 s · Original payment lands too: paid twice
The 3 settings that bring duplicates to zero
1. One payment key, refused on repeat downstream
missingEvery retry of one payment carries the same key, and the facilitator or payment service refuses a key it has already settled. On-chain, the equivalent is re-broadcasting the same signed transaction (same nonce) instead of signing a new one.
2. Tell "never submitted" apart from "submitted, response lost"
missingBefore any retry, look up whether the earlier attempt was submitted (transaction hash, mempool or facilitator status). If it was, wait for it instead of sending a new payment.
3. Timeout longer than your slowest normal confirmation
missingWith your p50 and p95, a timeout of about 83 s lets 999 in 1,000 attempts confirm before the client gives up (yours is 30 s). This lowers duplicates but never removes them on its own.
What this means
- The symptom is "payments sometimes go out twice". The cause is a retry that cannot tell a slow payment from a failed one, with nothing downstream refusing the repeat.
- Without an idempotency key, a retry is not a repeat. It is a second, fully valid transfer of real value.
- The classic case: the retry fires before the first transaction confirms, and both land.
- A timeout after sending can't tell you whether the payment was never submitted or was submitted and the response was lost.
- An agent that sees an ambiguous failure keeps retrying, and every retry can pay again.
What this tool can't see
- It uses the settings you typed, not your code. SDKs, facilitators and RPC clients may retry on their own underneath yours.
- Real confirmation times are not exactly log-normal; in a congestion spike the slow tail is longer than this fit.
- It assumes every attempt that is sent eventually lands (the worst case). Some timeouts are real failures.
- It does not model nonce clashes, speed-up or replacement transactions, or refunds.
Has it already happened?
This is a forecast from your settings. To look for double pays that already went out, read your agent wallet's real payment history with the Agent Money Trace. It flags the same payee and amount paid twice within two minutes.
Want a second pair of eyes on one real workflow?
This tool checks your retry, timeout and idempotency settings from what you typed. It can't see your code, keys, contracts or production traffic. If the result shows gaps, send me one real workflow. In my free 48-hour integration review I go through it end to end and send you a written report: fit, dependencies, permission risks, acceptance tests and a build or don't-build-yet call.
With the box ticked, the booking link opens Cal.com with a short summary of your result in the notes field, which you can edit or delete. Cal.com's privacy and cookie policies apply there.
Contact: Shilpa Goel, [email protected]
This is an engineering checklist, not a security audit, legal, compliance or investment advice.