Skip to content
onchain-engineeringusdcinvoice-settlement
Joshua C.

How Many Confirmations for USDC Invoice Settlement?

How many block confirmations should you wait for before marking a USDC onchain invoice as paid? Tradeoffs, risks, and examples for Base, Ethereum, and Polygon.

How Many Confirmations for USDC Invoice Settlement?

Stablecoin payments move fast, but finality is not instant. When your business receives a USDC payment onchain, you need to decide when it is safe to mark an invoice as settled. Too soon, and you risk a reorg. Too late, and you delay customer experience. The right confirmation depth depends on your risk tolerance, the chain, and what your product promises.

Why Confirmation Depth Matters

Every blockchain is a probabilistic system. A transaction in the mempool is not final. A transaction in the latest block is more likely, but still not guaranteed, to stay there. Each new block added on top increases finality. A chain reorganization can knock a transaction out of the canonical chain, especially in the most recent blocks. Settlement risk falls with every confirmation, but never reaches zero.

For USDC, this means that the moment you see an incoming transfer to your address, you must decide how many blocks to wait before treating the payment as irrevocable. This is the confirmation depth. The more confirmations you require, the lower your risk of accepting a reverted payment. The fewer you require, the faster you can fulfill your customer’s request.

Typical Confirmation Depths by Chain

The right number is not universal. It depends on the network’s reorg characteristics and your risk profile.

Ethereum Mainnet

Ethereum is secure, but blocks can be reorganized. Most services consider a transaction safe after 12 confirmations, which is about 2 to 3 minutes. Major exchanges often use 12 to 20. For large amounts, some wait longer. For small invoices, 1 to 3 confirmations may be enough, but you accept higher risk of a reorg.

Polygon

Polygon’s shorter block time means confirmations are quicker, but the consensus model is less robust than Ethereum’s. Many services use 64 confirmations (about 2 minutes), but for low-value transactions, some accept 12 to 30.

Base

Base runs on the OP Stack, similar to Optimism. L1 finality comes only when the transaction is bridged back to Ethereum, which takes longer. On Base itself, blocks are frequent and reorgs are rare, so 12 to 20 confirmations is a common risk boundary for most payments.

Worked Example: USDC Payment on Ethereum

Suppose you invoice a customer for 200 USDC. The customer pays from their wallet to your settlement address. The transaction appears in block N.

  • You see the transfer in block N, zero confirmations. The risk of reorg here is highest.
  • After block N+1, you have 1 confirmation. Risk is lower, but a reorg could still remove the payment.
  • At block N+12, you have 12 confirmations. The chance of a reorg that deep is very low.

If you mark the invoice as paid at 1 confirmation, you give the customer access quickly, but you run a small risk that the payment will be dropped if a reorg occurs. If you wait for 12, you are very unlikely to be affected by a reorg, but the customer waits longer for access.

In code, this check might look like:

const requiredConfirmations = 12;
const tx = await provider.getTransaction(txHash);
if (tx && tx.confirmations >= requiredConfirmations) {
  markInvoicePaid(invoiceId);
}

Assessing the Risk: Value and Product Promises

The risk of a reverted payment is real, but rare past a few confirmations. If you are delivering a low-value, reversible service (like API credits or a trial), you might accept 1 or 2 confirmations. If you are granting access to something irreversible (like digital licenses or physical goods), you may want 12 or more.

Consider what you promise to your customer. If you advertise instant access on payment, you may have to accept the risk that comes with a shallow confirmation depth. If you can explain a short delay, you can reduce your risk.

Edge Cases: Reorgs and Out-of-Band Risks

Reorgs are most likely when the network is under stress, or when there is an attack. Occasionally, a transaction that appears confirmed in one block can be dropped in favor of a different canonical chain. This is rare past 6 confirmations on Ethereum, but not impossible.

USDC itself is not affected by smart contract reentrancy or similar issues, but you are still subject to the properties of the chain. No number of confirmations protects against a USDC freeze event, but this is an out-of-band risk and not related to confirmation depth.

What Happens When a Payment Fails

If you mark an invoice as paid before finality and a reorg occurs, your logic must handle the reversal. This could mean revoking access, issuing a manual reminder, or locking a customer account until payment is settled again. The deeper your confirmation depth, the less likely you are to need such logic.

Summary Table: USDC Confirmation Time by Chain

Chain Typical Confirmation Depth Typical Time
Ethereum 12 ~2-3 minutes
Polygon 64 ~2 minutes
Base 12-20 ~2 minutes

How We Handle Confirmation Depth at Reclack

We let merchants choose the confirmation depth that fits their business and risk profile. Our default settings are conservative: 12 confirmations for Ethereum, 64 for Polygon, and 20 for Base. You can adjust these in your dashboard or via API. Once the configured depth is reached, we mark an invoice as paid and move to the next stage in your workflow. We never mark an invoice as paid before the confirmation threshold. For more detail, see reclack.com.

onchain-engineeringusdcinvoice-settlement