# Staging and Testnets

> Staging is testnet-only and enforced at startup; the supported test networks, faucets, and the mainnet-only production rule.
> Source: https://developers.coinbax.com/docs/resources/staging-and-testnets
> Last updated: 2026-07-16

Coinbax runs two fully separated environments. Staging only ever touches
test networks; production only ever touches mainnets. The separation is not
a convention: it is enforced in infrastructure. A staging deployment
configured with a mainnet network refuses to start, and the same guard
works in reverse for production. There is no configuration mistake that
sends staging traffic to real funds.

| Environment | Networks | Payments API base |
|---|---|---|
| Staging | Testnet only | `https://api-staging.coinbax.com/api/v1` |
| Production | Mainnet only | `https://api.coinbax.com/api/v1` |

Credentials are environment-specific: a staging API key is meaningless
against production and vice versa.

## Supported testnets (staging)

Base Sepolia is the primary staging network and the one used throughout
these guides.

| Network | `blockchainNetwork` value | Chain ID |
|---|---|---|
| Base Sepolia (primary) | `base-sepolia` | `84532` |
| Ethereum Sepolia | `ethereum-sepolia` | `11155111` |
| Optimism Sepolia | `optimism-sepolia` | `11155420` |
| Arbitrum Sepolia | `arbitrum-sepolia` | `421614` |
| Solana Devnet | `solana-devnet` | devnet |

### Network coercion on staging

Staging is forgiving about network names: if you send a mainnet name (for
example `base`) to staging, it is coerced to the testnet counterpart
(`base-sepolia`). This lets the same integration code run against both
environments with only the base URL and credentials changing. Production is
not forgiving in the other direction: a testnet network name sent to
production is rejected with `TESTNET_NOT_ALLOWED_IN_PRODUCTION`.

If you omit `blockchainNetwork`, transactions default to the environment's
Base network: `base-sepolia` on staging, `base` on production.

## Test funds

**Test USDC on Base Sepolia:**

```
0x036CbD53842c5426634e7929541eC2318f3dCF7e
```

Get testnet USDC from the [Circle faucet](https://faucet.circle.com); select
Base Sepolia as the network. Circle's faucet also covers the other
supported testnets.

You will also need a small amount of testnet ETH (or the network's native
token) for gas when funding escrows from an external wallet. Any public
Base Sepolia faucet works.

Testnet tokens have no value. Treat staging balances as disposable.

## Production networks (mainnet only)

| Network | `blockchainNetwork` value | Chain ID |
|---|---|---|
| Base | `base` | `8453` |
| Ethereum | `ethereum` | `1` |
| Optimism | `optimism` | `10` |
| Arbitrum | `arbitrum` | `42161` |
| Solana | `solana` | mainnet-beta |

Production access is provisioned separately from staging; talk to the
Coinbax team when you are ready to go live.

## Recommended workflow

1. **Build on staging against Base Sepolia.** It is the primary network,
   has the deepest tooling support, and the faucets are reliable.
2. **Exercise the whole lifecycle**, including the endings you hope never
   to use: refunds, rescinds, failed compliance checks, disputes. Staging
   escrows are free to abandon.
3. **Point your webhook endpoint at a staging URL** and verify signature
   handling and dedupe before production traffic depends on it.
4. **Promote by changing base URL and credentials only.** If your staging
   integration needed any other change to work in production, that is a
   finding worth investigating before launch.

## Next steps

- [Getting started](/docs/getting-started/): staging credentials and constants
- [Your first transaction](/docs/getting-started/first-transaction): a full lifecycle on Base Sepolia
- [API versioning](/docs/resources/versioning): how the API surface evolves under you