Permissionless stablecoin payments for commerce.
Online commerce still runs on rails someone else owns: every payment passes through intermediaries that take a fee and can say no. Stablecoins made money move like the internet, but a transfer alone is not a sale. Commerce needs funds held at checkout, charged at shipment and refunded on return. rail0 brings those primitives, authorize → capture → refund, to stablecoins in one immutable contract that nobody owns and nobody operates. It is the open payment rail the internet never had, for humans and agents alike.
The zero is literal
Four zeros between buyer and merchant.
The zero in rail0 is not branding — it counts what the protocol removes. Nothing sits between the two parties, nothing is skimmed off the top, no one holds a key that can change the rules, and no one decides who is allowed in. It also marks day zero: the moment payments stop being a service rented from someone else's network and become a commodity protocol, the way HTTP is.
Intermediaries
Buyer and merchant transact peer-to-peer. The contract routes nothing to anyone else.
Protocol fees
Every captured token reaches the merchant in full. The contract takes nothing.
Privileged operators
No owner, no admin, no pauser, no upgrade path. The code is fixed at deploy time.
Permission
Anyone can deploy the contract. Anyone can use it. No gatekeeper to ask.
Protocol overview
One contract, zero operators.
The buyer signs once off-chain; the merchant submits and pays gas. Funds flow
straight from payer to payee through the rail0 escrow — authorize in, capture out, and void,
refund, or release back to the buyer. No processor,
no gateway, no privileged operator in the path.
How it works
One signature. No allowance.
Signs, never broadcasts
The buyer signs an EIP-3009 ReceiveWithAuthorization over the
token's domain — like a signed check. Any wallet that signs typed data works:
no smart-account wallet, no bundler, no approval.
Submits and pays gas
The merchant submits the transaction and absorbs the cost of acceptance — the way they always have under card networks. On stablecoin-native chains, gas is paid in the same asset being settled.
Binds terms to the signature
rail0 derives a deterministic EIP-3009 nonce from the exact payment terms. Tamper with any field and the recovered signer won't match — the token reverts. No separate intent typehash needed.
Deployments
Works on multiple chains.
rail0 is not tied to any one chain. It runs on any network that meets two hard
requirements: an EVM that compiles Solidity 0.8.31 and supports the Cancun fork, and
tokens that expose the EIP-3009 receiveWithAuthorization
entrypoint — the off-chain signature the whole protocol is built on. That's the
entire bar. Anyone can deploy it, permissionlessly, wherever those conditions hold.
| Chain | Testnet | Mainnet | Stablecoins |
|---|---|---|---|
| Arbitrum | Sepolia Live | Mainnet Planned | USDC |
| Arc | Testnet Live | — | USDC, EURC |
| Avalanche | Fuji Live | Mainnet Planned | USDC, EURC* |
| Base | Sepolia Live | Mainnet Planned | USDC, EURC* |
| Celo | Sepolia Live | Mainnet Planned | USDC, USD₮ |
| Ethereum | Sepolia Live | Mainnet Planned | USDC, PYUSD |
| Monad | Testnet Live | Mainnet Planned | USDC |
| Optimism | Sepolia Live | Mainnet Planned | USDC |
| Plasma | Testnet Planned | — | USDT0 |
| Polygon | Amoy Live | Mainnet Planned | USDC |
| Sei | Testnet Live | Mainnet Planned | USDC |
| Sonic | Testnet Live | Mainnet Planned | USDC |
| Unichain | Sepolia Live | Mainnet Planned | USDC |
| World Chain | Sepolia Live | Mainnet Planned | USDC, EURC* |
| Tempo | Awaiting EIP-3009 | TIP-20 | |
* Mainnet only.
Start building
Build on rail0.
Call the contract directly, or let the rail0 API Gateway build, broadcast and track every transaction for you. Either way the buyer only signs, and every captured token reaches the merchant in full. The documentation covers both, with examples in curl, TypeScript, Ruby and Go.