Skip to content

Testnet (BSC)

Textile FX runs a sandbox on BNB Smart Chain testnet (chain ID 97) so you can wire up an integration, place real swaps and limit orders, and watch fills settle without touching mainnet funds. It mirrors the live BSC cNGN ↔ USDT corridor, using testnet tokens and test API keys.

Only swap and limit orders run on testnet.

What is on testnet

One corridor. cNGN ↔ USDT, the same pair that is live on BSC mainnet.

Real testnet tokens. cNGN is issued by the cNGN team. USDT is the BNB Chain faucet token (0x3376…4dDd, 18 decimals). Neither 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 chain 97 is 0.01 of the named token, against 1 whole token on mainnet, so faucet-sized USDT quotes work.

Get test tokens

You need three things in your wallet on BSC testnet:

  1. Testnet BNB for gas, from the BNB Chain faucet.
  2. cNGN, minted from the cNGN faucet.
  3. 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.

In the app

The flow is identical to mainnet, just connected to chain 97.

  1. Open app.textilecredit.com/s/swap and connect your wallet.
  2. Switch to BNB Smart Chain testnet when prompted.
  3. Pick cNGN → USDT (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.

Pass chainId: 97 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"}'

RFQ on testnet with curl walks the whole flow, from preview to settlement.

If a test key names a chain that has no corridor deployed yet, the API returns a 400 saying that chain has no FX settlement contract. It is the same data-driven gate used on mainnet.

Contract addresses

Testnet addresses live in the address book alongside the mainnet deployments. Always verify against that page before interacting with a contract directly.

Next