StatusPrivate betaPublic testnets — test tokens, no real valueMainnet rolls out per jurisdiction

Testing

Testing

You integrate against Base Sepolia, a public testnet, using tokens that carry no real value. Everything works exactly as it will in production — the only difference is the network and the keys.

Testnet vs mainnet

RSends mirrors the classic test/live split onto chains. Your rsend_test_ key drives the router on Base Sepolia; a rsend_live_ key drives mainnet once it is enabled for your jurisdiction.

Sandbox (test)Production (live)
API keyrsend_test_…rsend_live_…
NetworkBase Sepolia (84532), Avalanche Fuji (43113), TRON NileBase (8453), Avalanche C-Chain (43114), TRON — per jurisdiction
Token valueNone — faucet test tokensReal funds
TokensTest USDC and native ETHEnabled at rollout
RouterDeployed — routerVersion 1 (charges an on-chain flat fee)Not deployed yet — fee-less routerVersion 2

Fund a test wallet

Instead of a test card number, you fund a real wallet with free testnet tokens, then pay yourself end-to-end. You need two things:

Two enabled tokens on Base Sepolia

USDC and native ETH are the payable tokens on the sandbox — USDC is what you'll want for a realistic run. Anything else (EURC, USDT, DAI …) is not enabled on this chain and creating an intent with it returns 400 UNSUPPORTED_TOKEN.
Base Sepolia — enabled tokens
USDC   6 decimals   0x036CbD53842c5426634e7929541eC2318f3dCF7e
                    faucet: https://faucet.circle.com

ETH   18 decimals   native (token address 0x0000…0000)
                    faucet: https://docs.base.org/tools/network-faucets

A full test run

StepAction
1Fund a wallet with test USDC + Base Sepolia ETH (above).
2Create a payment intent with your rsend_test_ key — see Payment intents.
3Open https://demo.rsends.io/pay/{intent_id}, connect the funded wallet, and pay. Note the payer is asked for onchain.total, which on this router is the amount plus a small flat fee.
4Confirm you receive a payment.completed webhook and that the funds landed in your destination wallet.
5Verify the PaymentMade event on sepolia.basescan.org.

The Quickstart has this same run with copyable calls.

Going live

Mainnet is not deployed yet — the production router has not been published, so there is no live environment to point at today. When it opens, moving over means swapping three things: the API key (rsend_test_ → rsend_live_), the chain (base_sepolia → base), and the webhook signing secret (register a webhook in the live environment; test and live deliveries never cross).

One behavioural difference to code for now

The production router is fee-less: onchain.fee becomes "0", total equals amount, maxFee becomes null, and the call carries no fee argument. If you read onchain.routerVersion and use the values the API hands you rather than assuming, your integration needs no change at cutover. Live access also rolls out per jurisdiction — until your live key is enabled, the sandbox flow is the complete, representative integration.