Skip to main content
All values on this page target testnet. For mainnet configuration and manual wallet setup, see Connect.

Before you begin

You’ll need:
  • A browser wallet (MetaMask, Rabby, or similar) or a scriptable wallet (viem, ethers).
  • Foundry if you want to use cast from the command line.
Stable uses USDT0 as its gas token, so you only need USDT0 to transact. There’s no separate gas asset to fund.

Connect to testnet

Point your tooling at the testnet endpoint:
FieldValue
Chain ID2201
RPC URLhttps://rpc.testnet.stable.xyz
Block explorerhttps://testnet.stablescan.xyz
Currency symbolUSDT0
Verify the endpoint:
cast chain-id --rpc-url https://rpc.testnet.stable.xyz
2201

Fund your wallet

  1. Visit https://faucet.stable.xyz.
  2. Connect your wallet, or paste an address.
  3. Select the button to receive testnet USDT0.
The faucet sends 1 USDT0 per request — enough to deploy and interact with several contracts. Check the balance:
cast balance 0xYourAddress --rpc-url https://rpc.testnet.stable.xyz
1000000000000000000
The value is returned in wei-equivalent units. Divide by 10^18 to get USDT0. If you need more than the faucet provides, bridge Test USDT from Ethereum Sepolia — see Get testnet USDT0.

Send your first transaction

Sending USDT0 looks like sending ETH on Ethereum. The value field carries the USDT0 amount.
import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("https://rpc.testnet.stable.xyz");
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);

const tx = await wallet.sendTransaction({
  to: "0xRecipientAddress",
  value: ethers.parseEther("0.1"), // 0.1 USDT0
});

await tx.wait();
console.log("Sent:", tx.hash);
Sent: 0x8f3a...2d41
Inspect the transaction on testnet.stablescan.xyz using the hash.
USDT0 operates as both the native asset and an ERC-20 token on the same balance. Coming from Ethereum, this introduces reconciliation Transfer events and a 12-decimal precision gap between address(x).balance (18 decimals) and USDT0.balanceOf(x) (6 decimals). Indexers, balance-mirror patterns, and test suites must account for both, or they will silently replay wrong events. See USDT0 behavior on Stable.

Deploy a smart contract

Deploy, verify, and call a contract on testnet with Foundry.

Send your first USDT0

Send USDT0 as both a native transfer and an ERC-20 transfer on the same balance.

Differences from Ethereum

See what stays the same and what changes.

Integration paths

Pick the docs path that fits what you’re building.
Last modified on April 17, 2026