When is a deposit final?

Seeing a transaction isn't the same as being able to rely on it. How Valtu decides a deposit is final on each network, and the one status your ledger should credit on.

The Valtu team

A deposit shows up on a block explorer within seconds. Crediting it that early is how platforms lose money: blocks can be replaced, and a transaction you saw can disappear. Valtu separates seen from final, and tells you which is which.

The statuses

  • PENDING: seen on the chain, not yet deep enough. Show "processing", but don't credit it.
  • CONFIRMED: deep enough and still on the canonical chain. This is the only status to credit on.
  • ORPHANED: dropped by a chain reorganization before it was final. Don't credit it.
  • NEEDS_REVIEW: dropped after it was confirmed, which means the depth was too shallow for that chain. The team looks into it.

Each status has its own webhook, and Valtu checks that every block links to the one before it.

How deep is deep enough

NetworkA deposit is final at
Ethereum12 blocks
BNB Chain15 blocks
Polygon64 blocks
Base12 blocks
Lisk12 blocks
Tronthe solidified block
Bitcoin3 blocks

These are defaults. The values in force are what GET /v1/networks reports, and the security docs keep the full table, including networks that aren't live yet. Solana is paused for now.

Crediting safely

A few rules keep a ledger correct no matter what the chain does:

  1. Credit on deposit.confirmed, once. Key the credit on the deposit's id, so a repeated webhook can't credit twice.
  2. Treat webhooks as a notification, not the record. Reconcile regularly with GET /v1/deposits?after=….
  3. Handle the edge cases. Payments that don't match an open order, under- and overpayments: send them to a review queue rather than guessing.

Why it matters for payouts too

Withdrawals are confirmed at the same depth. A payout is CONFIRMED only when it's as final as a deposit would be, so the status you show your customer means the same thing in both directions.

Read more in the security docs and the deposits API.

Keep reading

More from the blog

networks · developers One address, five networks: how EVM deposit addresses work With Valtu, a customer's 0x address is the same on Ethereum, BNB Chain, Polygon, Base and Lisk. Here is why that works, and what it means for deposits sent on any of them. operations · deposits Deposit sweeps explained: moving customer funds to your treasury Thousands of customer deposit addresses each holding a little is hard to manage and spend. Sweeps collect confirmed deposits into one wallet on a schedule you set. stablecoins · networks USDT on Tron, Ethereum or BNB Chain: which network should your customers use? The same dollar token lives on several networks, with different fees, speeds and address formats. Here is how to choose which ones to offer, and how to keep customers from sending on the wrong one.

Start with a test workspace today.

Same dashboard, same API, free test coins. Go live when your team is ready.