How many confirmations does a crypto payment need?
A customer presses "send" and their wallet says the payment is done, yet your checkout still says "confirming". That gap is the confirmation wait. This post explains what a confirmation is, how many easyway waits for on each of its 12 networks, and what your shop should do while it waits.
What a confirmation is
A blockchain groups transactions into blocks. When a payment lands in a block it has one confirmation; every block added after it is one more. On most chains a very recent block can still be replaced, and with it the payment, so a gateway counts a payment as received only after enough blocks sit on top that undoing it is no longer realistic. Some networks work differently and declare a block final on their own; for them, waiting for that signal is the confirmation.
The point of waiting is simple: once an invoice is paid, you ship the order and the merchant balance can be withdrawn. Crediting a payment that later disappears from the chain would mean shipping for free.
Confirmations per network
These are the counts the gateway uses today. Every coin and token on a network waits for the same number of confirmations as the network itself.
| Network | Coins and tokens | Confirmations | Counted as final when |
|---|---|---|---|
| Polygon | POL, USDT, USDC | 64 | blocks built on top |
| TRON | USDT, TRX | 19 | blocks built on top |
| BNB Smart Chain | USDT, BNB, USDC, FDUSD | 15 | blocks built on top |
| Ethereum | USDT, ETH, USDC, DAI, SHIB, PEPE, PYUSD | 12 | blocks built on top |
| Avalanche C-Chain | AVAX, USDT, USDC | 10 | blocks built on top |
| Dogecoin | DOGE | 6 | blocks mined on top (proof of work) |
| Dash | DASH | 4 | blocks mined on top (proof of work) |
| Litecoin | LTC | 4 | blocks mined on top (proof of work) |
| Bitcoin | BTC | 2 | blocks mined on top (proof of work) |
| Solana | SOL, USDT, USDC, BONK | 1 | the network marks the block finalized |
| TON | USDT, GRAM, NOT, DOGS, CATI | 1 | the transfer is in the chain |
| XRP Ledger | XRP | 1 | the ledger is validated |
The counts are different because the networks are different, not because one coin is safer to accept. Polygon needs the most blocks (64) because its blocks are produced quickly, so many of them still pass in a short time. Bitcoin needs only 2 because each of its blocks takes far more work to replace. Solana, TON and XRP Ledger need a single confirmation because these networks decide finality themselves instead of leaving it to a block count.
What happens while a payment confirms
As soon as the transfer is seen, the invoice moves from pending to confirming and your server receives an invoice.confirming webhook. The hosted payment page shows the customer that the payment was detected, so they don't pay twice. When the last confirmation arrives the invoice becomes paid (or underpaid if less than the amount arrived) and you get invoice.paid.
Treat confirming as "payment on the way": show it on the order page, maybe hold stock, but do not ship and do not unlock a download. Only invoice.paid means the money is on your balance. Verify the webhook's signature before you trust it; the webhook signature guide has code for Node.js, PHP and Python.
Confirmations and the invoice timer
An invoice has an expiry time, but a slow confirmation does not lose the payment. Once the customer has picked a coin, the deposit address stays watched until 7 days after expires_at: a payment confirmed in that window is still credited and the invoice turns paid or underpaid, with the usual webhook. So keep handling invoice.paid for orders you already marked as expired. The underpaid and late payments guide has a handler for every case.
Which networks feel fastest to customers
If a short wait matters to you — say, a customer standing at a counter, or a digital product they expect at once — offer the networks with a single confirmation (Solana, TON and XRP Ledger) next to the ones your customers already use, and let them choose at checkout. For stablecoins, the USDT networks comparison also compares withdrawal fees, and pricing lists every asset with its fee and minimum. The live list, with confirmations as a field, is also available from the API at GET /v1/assets (see the API docs).