Appearance
Testnet
Textile FX runs a sandbox on two testnets so you can wire up an integration, place real swaps and limit orders, and watch fills settle without touching mainnet funds. Both use real testnet tokens and test API keys.
| Network | Chain ID | Corridor | Taker fee |
|---|---|---|---|
| BNB Smart Chain testnet | 97 | cNGN ↔ USDT | 5 bps |
| Base Sepolia | 84532 | cNGN ↔ USDC | 5 bps |
Only swap and limit orders run on testnet. Pick whichever chain matches where you'll go live. If you're not sure, BSC testnet mirrors the BSC mainnet corridor exactly.
What is on testnet
Real testnet tokens. cNGN is issued by the cNGN team on both chains (6 decimals). On BSC testnet the stable leg is the BNB Chain faucet USDT (0x3376…4dDd, 18 decimals). On Base Sepolia it's Circle's faucet USDC (0x036C…CF7e, 6 decimals). None of it has value.
The same rails as mainnet. Everything settles through the same LimitOrderReactor design. See Settlement.
Rates on testnet are indicative and maker depth is thin. It is for integration testing, not price discovery. The RFQ size floor on both testnets is about $0.01 of notional (the mainnet $1 corridor floor scaled down), so faucet-sized quotes work. When no dollar anchor is available the fallback is 0.01 of the named token, against 1 whole token on mainnet.
Get test tokens
BSC testnet (97)
- Testnet BNB for gas, from the BNB Chain faucet.
- cNGN, minted from the cNGN faucet.
- USDT, only if you are selling USDT. Claim it from the same BNB Chain faucet (pick USDT in the token dropdown), or just start by selling cNGN.
Add BSC testnet to your wallet if it is not already there. RPC https://data-seed-prebsc-1-s1.binance.org:8545, chain ID 97, explorer testnet.bscscan.com.
Base Sepolia (84532)
- Sepolia ETH on Base for gas, from any of the Base faucets.
- cNGN, minted from the cNGN faucet. Pick Base Sepolia.
- USDC, only if you are selling USDC. Claim it from Circle's faucet (pick Base Sepolia), or just start by selling cNGN.
Add Base Sepolia to your wallet if it is not already there. RPC https://sepolia.base.org, chain ID 84532, explorer sepolia.basescan.org.
In the app
The flow is identical to mainnet, just connected to a testnet.
- Open app.textilecredit.com/s/swap and connect your wallet.
- Switch your wallet to BNB Smart Chain testnet or Base Sepolia. The testnet corridor only shows up while your wallet is on that chain.
- Pick cNGN → USDT on BSC testnet, or cNGN → USDC on Base Sepolia (or the reverse), enter an amount, press Request quote, then Submit swap. Or switch to Limit and wait at your own price.
How to swap and How to place a limit order have the full walkthrough. Every step applies here.
Using the API
The v2 RFQ API works on testnet with test keys. A test key can only target testnet chain IDs, and a live key can only target mainnet chain IDs. The environments are isolated, so a test integration can never touch real funds.
IMPORTANT
A test key works on chain 97 and chain 84532, nowhere else. BSC testnet and Base Sepolia are the only testnets with settlement contracts deployed. Point a tx_test_… key at Sepolia, Celo Sepolia or any other testnet and you get a 400 saying that chain has no FX settlement contract. The key is fine, the chain is not.
Pass chainId: 97 or chainId: 84532 and everything else stays the same. Auth, request shapes and webhooks are identical to production.
bash
# Request a firm cNGN → USDT quote on BSC testnet.
# Token fields are addresses (see the address book), not symbols.
curl -X POST "https://api.textilecredit.com/v2/rfq/request" \
-H "Authorization: Bearer $TEXTILE_TEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chainId":97,"sellToken":"0x8a078b182bA9649c03982c2a80CDcc81cdc99dA8","buyToken":"0x337610d27c682E347C9cD60BD4b3b107C9d34dDd","sellAmount":"100000000","taker":"0xYourWallet"}'
# The same on Base Sepolia, cNGN → USDC.
curl -X POST "https://api.textilecredit.com/v2/rfq/request" \
-H "Authorization: Bearer $TEXTILE_TEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chainId":84532,"sellToken":"0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2","buyToken":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","sellAmount":"100000000","taker":"0xYourWallet"}'RFQ on testnet with curl walks the whole flow, from preview to settlement. It uses BSC testnet; swap in the Base Sepolia chain ID and token addresses above and every step is the same.
That 400 is the same data-driven gate used on mainnet: a chain is reachable once it has a reactor in the address book, not before. When we deploy another testnet corridor, existing test keys reach it with no reissue.
Contract addresses
Testnet addresses live in the address book alongside the mainnet deployments: BSC testnet and Base Sepolia. Always verify against that page before interacting with a contract directly.