What a testnet is and why a payment never belongs on one
In this article

    Every few months, a professional working through their first onchain deal asks a version of the same question: "Can we just test the payment on the testnet first before we send the real money?" It is a perfectly reasonable question. It also reveals a gap in understanding that, left unclosed, can cause a transaction to fail silently, a payment to be broadcast on a valueless network, or a deal to stall because one party believes it has been paid when nothing of value has moved.

    This article closes that gap. It explains what a testnet is, how it works at a mechanical level, why it exists, what it is genuinely good for — and why the moment real money enters a deal, the testnet becomes not just unhelpful but actively dangerous to use.

    The two networks that every blockchain runs in parallel

    A testnet is a test version of a blockchain network used for testing purposes, while a mainnet is the actual, live version of a blockchain network used for real transactions. That sentence is short, but the consequences of the distinction are enormous, and professionals who touch onchain payments need to hold both sides of it clearly in mind.

    The mainnet is the live, fully functional blockchain network where real transactions occur — the "official" version of a blockchain where users interact with each other using real assets, such as cryptocurrency tokens. Transactions on the mainnet use the network's native cryptocurrency and tokens, and the distributed ledger keeps a permanent record of these transactions, allowing for a transparent and secure way to transfer value.

    Related readWhat an ENS or onchain name does for receiving payments17 min

    The testnet, by contrast, is deliberately constructed to carry no real economic weight. It is an identical copy of a blockchain network created for the sole purpose of testing out new products and features, operating as a development hotbed where developers can try out new functionalities before integrating them into the mainnet.

    Think of it this way: the mainnet is the live courthouse where binding contracts are signed and recorded. The testnet is the practice room where clerks drill workflows, sign blank forms with practice pens, and make every mistake they can think of — at no cost to anyone.

    What a testnet is actually made of

    Understanding why a testnet cannot carry a real payment requires understanding how it is constructed.

    Testnets follow the same protocol rules as mainnet. They use the same client software, the same consensus mechanisms, and the same smart contract execution environment. The key difference is that the tokens on a testnet are freely obtainable through faucets and have no financial value, which means mistakes are cheap and learning is encouraged.

    That phrase — freely obtainable through faucets — is the operative one. A crypto faucet is a tool available for many blockchain testnets that dispenses a small amount of native cryptocurrency. Developers use testnet faucets to obtain testnet funds to deploy, test, and interact with a smart contract or protocol on a blockchain testnet. On Ethereum's Sepolia testnet, for example, developers can get free testnet tokens for the Sepolia network to test smart contracts, apps, and blockchain integrations — with faucets dripping small amounts at regular intervals.

    Related readWhat are gas fees and who pays them in a payment15 min

    This design is intentional and essential. Testnets use simulated tokens that imitate real tokens but do not have any particular financial value. These tokens are important for reproducing transactions, interactions, and contract execution within the test environment. The simulation is accurate enough to catch logic errors in code. It is not accurate enough to transfer value between human beings.

    Testnets mostly use less complicated consensus mechanisms than production networks. This design choice speeds up block confirmation, cuts the length of testing cycles, and optimizes calculations. In other words, certain elements of the testnet are deliberately simplified to help developers move fast. Those simplifications are features for engineers. They are liabilities for anyone trying to settle a commercial obligation.

    Why testnets exist: the engineering case

    A testnet exists because of a basic engineering principle: no one in their right mind would release an update to a network that holds millions in crypto assets without first breaking it in a controlled environment.

    That principle scales down from protocol upgrades all the way to individual smart contracts. Launching new products or features directly on a live blockchain comes with risks, as certain vulnerabilities may go unnoticed. Such oversights could result in financial losses for users or even make the blockchain network susceptible to external threats.

    A contract that works correctly on a testnet has proven one thing: it produces the expected output for the expected inputs. Mainnet adds new adversaries that testnets don't meaningfully replicate. Those adversaries include real economic incentives. On testnet there is no money. On mainnet, a single critical bug in a protocol can yield significant losses in a single transaction. The incentive to find that bug — and the sophistication of the attackers who look for it — scales with the value involved.

    Related readWhat decimals mean in a token amount and why they matter for large sums16 min

    Testnet also provides a critical opportunity for teams to validate that their code interacts correctly with the surrounding ecosystem. Testnets are a good way to test whether an application works with third-party tools, like block explorers and token interfaces. Testnets provide concrete benefits beyond bug detection: they reduce development costs by eliminating deployment fees during iteration, enable community feedback on functionality before launch, and allow stress testing under realistic conditions.

    For the engineers building tools like shaka.deal — and any other piece of onchain infrastructure — testnet is a mandatory stop on the road to production. No serious team ships a routing contract directly to mainnet without exhaustive testnet coverage first.

    The lifecycle problem: testnets get deprecated

    There is a structural instability in testnets that rarely gets discussed outside developer communities, but that every professional working with onchain infrastructure should understand: testnets are not permanent. They are designed to be shut down.

    Testnets are designed to be deprecated eventually, and deprecation usually happens every couple of years. Because of this, faucets and popular testnets often stop working. Most blockchain testnets eventually shut down to ensure they never have value.

    When a testnet shuts down, everything on it disappears. When a testnet is deprecated, its validators stop processing transactions and the network eventually shuts down. Any contracts deployed on it become inaccessible. This happens periodically as protocols evolve. Ethereum deprecated the Ropsten, Rinkeby, and Goerli testnets in favor of Sepolia and Holesky.

    Consider what that means in a commercial context. A settlement agent or title company conducting a multi-party real estate close might imagine that a testnet transaction constitutes some kind of proof of payment. It does not — and the network that hosted it may not even exist by the time anyone goes looking for the record. Testnets may be reset periodically, meaning data can be wiped or altered to refresh the testing environment. There is no such thing as a permanent testnet record.

    Related readWhat finality means on Ethereum and when a payment is truly done16 min

    Deployed contracts, test accounts, balances, and transaction history can be wiped and must be redeployed when a testnet resets. For a developer, this is an inconvenience. For a closing attorney who believed a testnet transaction was evidence of a real disbursement, it would be catastrophic.

    The six mechanical reasons a real payment must never go to testnet

    It is worth being explicit about the exact ways a testnet fails as a payment medium, because the failure modes are different in character and consequence.

    1. Testnet tokens carry zero economic value.

    Transactions on the testnet involve test cryptocurrencies or tokens which do not hold any real-world value. A seller receiving what appears to be a USDC transfer on Sepolia has received nothing. The tokens cannot be withdrawn, exchanged, or spent. The decimal places on screen are theatrical.

    2. No one is economically compelled to process your transaction.

    Miners or validators on the testnet do not receive real cryptocurrency rewards. Testnet validators run their nodes as a public service to the developer community. They are under no obligation to keep the network running at any particular service level, and no market mechanism incentivizes them to prioritise your transaction above others. On mainnet, gas fees create a real market for block inclusion. On testnet, there is no equivalent pressure.

    3. Testnet finality is not settlement finality.

    On mainnet, settlement finality is the point at which a blockchain transaction becomes irreversible. After finality, the payment cannot be reorganized out of history, double-spent, or unwound by a chain reorg. For treasury teams moving stablecoins between parties, finality is the moment risk leaves the books and cash is truly cash.

    Related readWhat happens if someone sends the right amount to the wrong network18 min

    On testnet, the same vocabulary — "confirmed," "finalized," "settled" — appears in block explorers, but it describes a state in a valueless ledger. Nothing has actually settled. No risk has actually transferred. The closing table is still open.

    4. Testnet and mainnet addresses are structurally identical but belong to different universes.

    This is the most dangerous confusion in practice. An Ethereum address looks the same on mainnet and on Sepolia. The format is identical. A broker, escrow officer, or OTC desk counterparty who receives a testnet transaction hash and sees familiar-looking confirmations on a block explorer might believe — honestly and completely incorrectly — that they have been paid.

    The only difference is the chain ID baked into the transaction's signature. A testnet transaction signed for Sepolia will be rejected by the Ethereum mainnet and vice versa. The addresses are the same; the ledgers are entirely separate. There is no bridge between them for testnet tokens.

    5. There is no recovery path.

    On mainnet, transaction finality means the transaction has been permanently recorded on the blockchain and is irreversible. That permanence, in a payment context, is a feature — it means the recipient can rely on receipt without waiting for a counterparty to change their mind. On testnet, the equivalent permanence does not exist. The network can reset. The testnet can be deprecated. Bugs, crashes, failed transactions — no problem. That's the point. For a developer, that is liberation. For a party expecting to receive funds from a commercial transaction, it is an abyss.

    Related readWhat happens to a crypto payment if the network is congested16 min

    6. No auditable legal record.

    A mainnet transaction is publicly verifiable, permanently recorded, and timestamped in a distributed ledger that no single party controls. Attorneys, regulators, and auditors can inspect it. It holds up as evidence. A testnet transaction exists in a sandbox whose history is designed to be discarded, whose validators are unpaid volunteers, and whose chain ID specifically marks it as non-production. It is not a record of anything that happened in the real economy.

    A scenario that illustrates the risk

    Picture a commercial property transaction. The deal involves four parties: a buyer, a seller, a broker, and a title company. The total purchase price is $2,400,000 USD (approximately AU$3,720,000). The parties have agreed to settle onchain in USDC, routed through a smart contract that will distribute each party's share simultaneously at close.

    The day before closing, the title company's coordinator — new to onchain settlements — wants to do a "dry run" to make sure the routing works. She asks the developer to run the same transaction on Sepolia. The developer does. Everything looks correct. The coordinator screenshots the Sepolia block explorer, which shows a confirmed transaction with three output addresses and a timestamp.

    The next morning, under deadline pressure, the developer pastes the wrong RPC endpoint into the deployment script — the Sepolia endpoint rather than the Ethereum mainnet endpoint. The transaction broadcasts. The block explorer shows confirmations. The coordinator sees familiar output and gives the all-clear.

    The buyer's $2,400,000 USD (AU$3,720,000) never moved: the transaction that broadcast was a Sepolia transaction, and it moved test tokens. The seller, the broker, and the title company received zero. The testnet tokens that arrived in their wallets cannot be withdrawn, exchanged, or spent. The deal is not closed. Nobody received anything. And the testnet transaction record — which looked convincing on screen — is evidence of nothing.

    Related readWhat is a block explorer and how to use it16 min

    This is not a hypothetical edge case. It is a realistic failure mode with realistic consequences. The entire scenario is made possible by one thing: someone treated the testnet as a rehearsal that could slide into production without being deliberately switched to mainnet.

    What mainnet routing looks like when it is done correctly

    The reason to understand testnets carefully is precisely because mainnet routing, done correctly, is so much cleaner than most settlement professionals have experienced before.

    When a payment routes on Ethereum mainnet — as it does through shaka.deal — every property of the transaction is real: the value is real, the addresses are real, the block confirmations are real, and the finality is real. Where traditional settlement relies on institutional rules and operational procedures to establish finality, blockchains achieve it through cryptography and economic deterrence. On a proof-of-stake network like Ethereum, a transaction becomes technically final when it is incorporated into a validated block and subsequently confirmed.

    Although consensus finality can be formally probabilistic depending on the consensus mechanism used, the economic cost of reversing even a handful of confirmations makes rollback practically impossible. To unwind a confirmed transaction on a major proof-of-stake chain, a malicious actor would need control of a supermajority of validators and would incur massive slashing penalties. Billions in staked collateral would be automatically destroyed.

    That is the mathematical and economic foundation that makes onchain settlement trustworthy for high-value commercial transactions. It is nothing like what happens on a testnet, where validators run their nodes out of goodwill and can stop any time they choose.

    Related readWhat is a crypto wallet and how to set one up to get paid17 min

    For settlement agents, title companies, escrow officers, and OTC desks, this distinction matters in practice. The moment the mainnet transaction is confirmed, the distribution has occurred. Each party's share has arrived in their designated wallet. The split was preset in the routing contract, executed simultaneously for all parties, and the record is permanent. shaka.deal routes the incoming total and distributes it to every party at preset shares in one transaction — the work that would otherwise require sequential wire transfers, manual disbursements, and separate confirmations for each payee is collapsed into a single, atomic, final event.

    That event can only exist on mainnet. It does not exist on testnet in any meaningful sense.

    The correct use of testnet in a professional workflow

    None of this means testnet is without value. Quite the contrary: its value is enormous — but only in its proper place.

    Before a routing contract handles real funds, the engineers who built it should have run it exhaustively on testnet. They should have tested edge cases: what happens if one recipient address is a smart contract? What happens if gas spikes mid-transaction? What happens if the amounts don't sum precisely to the total? Every one of those scenarios should break on testnet, be fixed, and be confirmed before the contract touches mainnet.

    Developers typically launch on the testnet to look for bugs and errors; once completed, they can launch onto the mainnet. That sequence — testnet for engineering validation, mainnet for production — is not optional. Deploying to mainnet without adequate testnet coverage is the most common cause of costly smart contract exploits.

    Related readWhat is a hardware wallet and do you need one17 min

    But the sequence has a direction. Testnet is the proving ground. Mainnet is the destination. The two are not interchangeable, and the flow only runs one way. A professional who asks to "try the payment on testnet first" is asking — however reasonably — to send a non-payment to a non-network in order to observe a non-settlement. The correct answer is: the tool has already been tested on testnet by the engineers who built it. What happens at closing is a mainnet transaction. That is the only kind that moves value.

    A note on network configuration and human error

    One practical lesson for every team that handles onchain payments at close: the distinction between testnet and mainnet is entirely determined by configuration, not by what things look like on screen.

    The transaction interface looks identical. The wallet looks identical. The block explorer output looks structurally identical. The only difference is a chain ID — a number in the transaction parameters that most users never see. Network identification plays a significant role in distinguishing the two environments. Mainnet typically begins with "1," while testnets often use different identifiers. These identifiers are invisible in most wallet UIs unless the user specifically checks which network they are connected to.

    This means that human error at the configuration level — an RPC endpoint pasted incorrectly, a wallet left on the wrong network, a deployment script with a hardcoded testnet chain ID — is the primary vector through which a real payment ends up broadcast on testnet instead of mainnet. The result is not a bounce or an error message. The result is a confirmed transaction on a valueless network that has settled nothing.

    Related readWhat is a self-custody wallet and why it matters18 min

    Why the mainnet/testnet distinction matters to every party at the table

    This article is not written for developers. It is written for the professionals who stand at the center of multi-party financial transactions: settlement agents confirming disbursement instructions, closing attorneys verifying fund receipt before releasing documents, escrow officers recording the close, brokers confirming their share has arrived, OTC desks settling large positions across counterparties.

    Every one of those roles depends on a moment of certainty: the moment at which funds have demonstrably moved from buyer to the correct recipients, in the correct amounts, irrevocably. That moment is meaningful only on mainnet. The same moment on testnet is theater — perfectly convincing theater, with real-looking confirmations and real-looking numbers, but theater nonetheless.

    Immutability is the core value of blockchain, and finality is the formal expression of this characteristic. Settlement professionals who understand this — who can look at a block explorer, confirm they are viewing a mainnet transaction, and know that the split has occurred exactly as specified — are in a qualitatively stronger position than those who must trust a wire confirmation that may take days to verify and can still be reversed.

    Tools like shaka.deal exist precisely to give those professionals the certainty that comes with a properly structured mainnet transaction: one incoming payment, preset shares for every party, simultaneous distribution, permanent record. But the tool only delivers its promise on mainnet. That distinction — simple in concept, critical in consequence — is what every professional working in this space needs to understand before they conduct their first onchain close.

    The testnet had its moment. That moment was when the engineers were testing. By the time the closing date arrives, the only network that matters is the one where tokens carry real economic value, validator incentives are real, and every confirmed transaction is a permanent fact.

    That network is mainnet. The payment belongs there, and only there.

    Kooky
    Written by
    Kooky

    25+ years shipping on the web, onchain since Bitcoin's early days. Kooky built Shaka so that everyone who closes a deal together gets paid together, the day it closes.

    The story behind Shaka