Guide

Crypto payment confirmations, explained for merchants

"The customer sent it" and "I can ship the order" are different moments. Confirmations are what close the gap — and the status your backend acts on is worth getting exactly right.

Updated · 2 min read

01What a confirmation is

When a transaction is included in a block it has one confirmation; each block built on top of it adds another. The more confirmations, the less likely the transaction is ever reversed by the network. Each chain needs a different number for a payment to be treated as final, so a gateway reports both required and current on the invoice rather than a single flag.

On an invoice
"confirmations": { "required": 19, "current": 4 }

02The statuses your backend sees

StatusMeaningAct on it?
pendingInvoice created; nothing received yet.Keep the order open.
detectedA transaction to the deposit address has been seen.No — not confirmed.
confirmingWaiting for the required confirmations.No.
confirmedRequired confirmations reached; the ledger is credited.Yes — release the order.
forwardingThe deposit is being swept to the merchant's wallet.Informational.
settledThe sweep has confirmed; the credit is withdrawable.Informational.
underpaidLess than the amount due was received.Decide: refund or ask for the balance.
expiredThe payment window closed. Treat as final unless a later transition arrives.Handle late payments.
failedThe invoice could not be completed.Investigate.

Release goods or access on confirmed, not on detected. A detected transaction has not reached its required confirmations.

03Credited is not the same as withdrawable

Payaries credits your ledger the moment an invoice reaches confirmed, but that amount is shown as pending sweep until the deposit has been swept to your wallet and the sweep itself confirms on-chain. Only then does it move to available. A withdrawal request against the not-yet-swept portion is rejected rather than queued, and the gap is usually short.

04Let webhooks drive it

Don't poll. Every transition fires a signed invoice.status_changed webhook; make your handler idempotent on the invoice and status, because retries can deliver the same event more than once. See verifying webhook signatures.

Questions

How many confirmations does a crypto payment need?
It depends on the network. The invoice reports the number required and the number so far in its confirmations field, so your integration never has to hard-code a figure per chain.
When should I release the order?
When the invoice status is confirmed. A detected or confirming invoice has not yet reached its required confirmations.
Why can't I withdraw the moment an invoice is confirmed?
The ledger is credited at confirmed, but the funds become withdrawable once the sweep from the one-time deposit address to your wallet settles on-chain. Until then the amount is pending sweep.

Next

Watch an invoice move through every status

Test keys work immediately, with no approval step. Payaries runs on real mainnet networks, so use a small real payment to test.