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.

  1. Sign in01

    Start with email

    Privy verifies your email. Rails creates a wallet and asks you to claim a unique @username.

  2. Fund02

    Receive USDC

    Copy your wallet address or, on this demo, request test USDC from the Circle faucet.

  3. Move03

    Send or cash out

    Send USDC to another Rails username, or exchange it for Naira through a bank withdrawal.

  4. 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.

1

Lock a quote

Rails returns the rate, fee, Naira amount, and expiry for the requested USDC amount.

2

Deposit into escrow

The withdrawal amount moves into the RemittanceVault contract while the bank payout is attempted.

3

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.

Open Rails