Rails, explained
Remittance without the wallet-shaped learning curve.
Rails is a remittance app built on USDC. It gives people familiar controls: email sign-in, usernames, balances, transfer history, and Nigerian bank cash-outs. Underneath, wallets and transfers run on Circle's Arc network.
USDC
Money held and transferred
@name
How people find each other
NGN
Bank cash-out currency
The basic flow
Four steps from email to transfer
Rails hides chain-specific setup while keeping the underlying transactions visible.
- Sign in01
Start with email
Privy verifies your email. Rails creates a wallet and asks you to claim a unique @username.
- Fund02
Receive USDC
Copy your wallet address or, on this demo, request test USDC from the Circle faucet.
- Move03
Send or cash out
Send USDC to another Rails username, or exchange it for Naira through a bank withdrawal.
- Track04
Follow every state
Rails records the transfer timeline and links on-chain transactions to the Arc explorer.
Username sends
USDC moves directly between Rails wallets
The sender enters a username and amount. Rails resolves the recipient, checks the sender’s balance, and submits the USDC transfer.
TRANSFER PREVIEW
Recipient
@username
Amount
25 USDC
The username is confirmed before sending. Once submitted, the transfer timeline records its on-chain transaction and final status.
Bank cash-outs
Escrow protects the on-chain side of a payout
Cash-outs currently target Nigerian bank accounts and settle in Naira. The display currency selected in Settings does not change this payout rail.
Lock a quote
Rails returns the rate, fee, Naira amount, and expiry for the requested USDC amount.
Deposit into escrow
The withdrawal amount moves into the RemittanceVault contract while the bank payout is attempted.
Release or refund
A successful payout releases escrow to the treasury. A failed payout returns the USDC to the sender.
ESCROW OUTCOMES
Bank payout succeeds
Naira reaches the bank account and the escrowed USDC is released.
Bank payout fails
The escrow contract refunds the USDC to the original wallet.
Wallets and security
Managed by default, exportable by the user
Rails creates the wallet so a browser extension is not required. Wallet keys are encrypted at rest, and exporting a private key requires a separate short-lived security verification.
What Rails does not hide
- Your public wallet address is available in Settings.
- Transfer details link to their Arc explorer transactions.
- Your private key can be exported after verification.
- Security-sensitive exports create an account notification.
Current status
This version is an Arc testnet demo
The product demonstrates the complete user flow, but it is not ready for real-money use.
Real on testnet
- USDC wallet balances and transfers
- Encrypted wallet creation and signing
- Escrow deposits, releases, and refunds
- Transaction receipts and event timelines
- Privy email verification and Rails sessions
Simulated for the demo
- Nigerian bank payouts
- Foreign exchange pricing
- Bank account name checks
- SMS delivery and claim links
- Naira on-ramp provider integration
Test USDC has no monetary value. Do not send production funds to testnet wallet addresses.
Key terms
The words Rails uses
A short reference for the concepts visible across the app.
- @username
- A readable Rails identity that resolves to the user’s wallet address before a transfer is sent.
- USDC balance
- The actual wallet balance. Choosing another display currency changes only the estimated value shown beside it.
- Managed wallet
- A wallet Rails creates and operates for you. Its private key is encrypted at rest and can be exported after security verification.
- Escrow
- A smart contract that holds withdrawal funds while the bank payout is attempted, then releases or refunds them.
Ready to try the flow?
Use test USDC only on the Arc testnet demo.