0fra

Test mode (Base Sepolia)

Build against the testnet — free ETH, free USDC, real on-chain confirmations.

0fra runs the same code against Base Sepolia (chain id 84532) and Base mainnet (8453). Today the public service is testnet-only; mainnet is in closed beta.

Get test ETH

You'll need a tiny amount for the buyer's wallet to pay gas (~0.001 ETH covers many payments).

Get test USDC

Circle runs an official faucet:

faucet.circle.com

Pick Base Sepolia as the chain. The token address is:

0x036CbD53842c5426634e7929541eC2318f3dCF7e

That's the address 0fra looks for when you submit "token": "USDC", "chain_id": 84532.

Live testnet endpoints

ResourceAddress (Base Sepolia)
PaymentRouter0x79abe8c3f1e0c444b10d5cbba918578d70283f74
ServiceRegistry0xdbd21ce5eac54b14ad8c54d3f67c136364f97609
PlatformRegistry0x247ca83f7407ada663625bac1119318588a86e5d
MerchantRegistry0x10d7a31d2512800e5ea8940f6c4d93e89a48aeef

Inspect at sepolia.basescan.org.

End-to-end test in 5 steps

  1. Sign up on the dashboard with any throwaway email
  2. Onboard with a freshly-generated MetaMask wallet on Base Sepolia
  3. Invite a merchant — open the link in an incognito window with a different wallet
  4. Create a Checkout session for 0.5 USDC
  5. Pay from a third wallet that has 1 USDC + 0.001 ETH

Watch:

  • The on-chain OrderPaid event on Basescan
  • The order.confirmed webhook firing within ~30 s (the chain indexer polls every 30 s on testnet)
  • Your platform wallet balance increasing by 0.05 USDC (10% fee)
  • The merchant wallet balance increasing by 0.4275 USDC (90% minus 5% reserve)

Reset / cleanup

There's no "test mode reset" button — testnet contracts are append-only state. To start fresh, sign up with a new email or contact support to reset your tenant.

Going live

Mainnet access is invite-only during closed beta. Drop us a line at hello@0fra.dev with:

  • Your platform name and use case
  • Estimated monthly volume
  • Your treasury wallet (preferably a Safe multisig)

We'll provision a mainnet platform tenant and walk you through swapping chain_id from 84532 to 8453. Most code remains identical.

On this page