> ## Documentation Index
> Fetch the complete documentation index at: https://developers.paxoslabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Testnet

> Test your Transit integration on testnets with mock tokens.

Transit runs on two testnets, so you can test your integration end to end before you use real funds. Testnet uses the same API, endpoints, and order flow as mainnet. Only the chains, the tokens, and the route filter are different.

> [!WARNING]
>
> Testnet tokens have no value. Testnet fees and minimum order sizes are different from mainnet, and testnet orders settle more slowly. Do not use testnet results to estimate mainnet costs or timing.

## Chains

| Chain | Chain ID |
| - | - |
| Ethereum Sepolia | 11155111 |
| RH Chain Testnet | 46630 |

## Tokens

| Chain | Token | Address | Decimals |
| - | - | - | - |
| Ethereum Sepolia | `MOCK_USDC` | `0x6587b742eF7536c196E5081Ce294D8E85f215D95` | 6 |
| RH Chain Testnet | `MOCK_USDG` | `0x6debC1f4aDD5d7d5096bdCAe65581ac7bcB1F141` | 6 |

To get test tokens, contact your Paxos Labs representative. You also need testnet ETH on the source chain for gas and the messaging fee.

## Routes

| Source Chain | Offer | Destination Chain | Want |
| - | - | - | - |
| Ethereum Sepolia | `MOCK_USDC` | RH Chain Testnet | `MOCK_USDG` |
| RH Chain Testnet | `MOCK_USDG` | Ethereum Sepolia | `MOCK_USDC` |

## Step 1: List Testnet Routes

Testnet routes are listed only when you request them. Add `network=TESTNET` to the `filter` parameter of `GET /v1/transit/routes`:

```ts theme={null}
const headers = { 'x-api-key': process.env.PAXOS_LABS_API_KEY }

const url = new URL('https://api.paxoslabs.com/v1/transit/routes')
url.searchParams.set('filter', 'network=TESTNET')

const { routes } = await fetch(url, { headers }).then((r) => r.json())
```

A filter without a `network` key returns mainnet routes only, even if it names a testnet chain ID. To list mainnet and testnet routes in one response, use `network=MAINNET OR network=TESTNET`.

Each route's `minOrderSize` is the smallest order it accepts, in offer-asset base units.

## Step 2: Submit an Order

Follow [Order Submission](https://developers.paxoslabs.com/v1.0.0/intro/products/transit/developers/guides/order-submission.md) with testnet chain IDs and token addresses. The authorization check, the quote, and the transaction you broadcast work the same as on mainnet. Send the transaction on the source testnet.

```ts theme={null}
const quoteUrl = new URL('https://api.paxoslabs.com/v1/transit/orders/quote')
// Replace with your wallet: it receives the MOCK_USDG on RH Chain Testnet
quoteUrl.searchParams.set('userAddress', '0x1234567890abcdef1234567890abcdef12345678')
quoteUrl.searchParams.set('offerAmount', '100000000') // 100 MOCK_USDC
quoteUrl.searchParams.set('offerAsset', '0x6587b742eF7536c196E5081Ce294D8E85f215D95')
quoteUrl.searchParams.set('wantAsset', '0x6debC1f4aDD5d7d5096bdCAe65581ac7bcB1F141')
quoteUrl.searchParams.set('sourceChainId', '11155111')
quoteUrl.searchParams.set('destinationChainId', '46630')

const { transaction } = await fetch(quoteUrl, { headers }).then((r) => r.json())
```

## Step 3: Track the Order

Use the [Order Tracking](https://developers.paxoslabs.com/v1.0.0/intro/products/transit/developers/guides/order-tracking.md) endpoints with the order ID from the `OrderSubmitted` event. Testnet orders use the same statuses as mainnet orders.

Testnet orders are processed about every 10 minutes, so they settle more slowly than mainnet orders. After an order reaches the destination chain, expect it to stay `PROCESSING` for several minutes before it is `PROCESSED`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.