Getting started
Quickstart
From zero to a working payment in under 5 minutes. You'll install the SDK, configure a signer, and send your first payment on Arc Testnet.
1. Install
npm install @conduit/sdk ethersThe SDK ships as ESM with full TypeScript types. It targets Arc Testnet in v1. No bundler configuration needed.
2. Get testnet USDC
Arc Testnet uses USDC as its gas token. You need it before making any payments.
- Visit faucet.circle.com → select Arc Testnet → request USDC
- Get EURC from the same faucet if you want to test cross-currency flows
3. Send your first payment
import { ConduitClient } from "@conduit/sdk";
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(
"https://rpc.testnet.arc.network"
);
// Arc blocks in ~1s; ethers polls at 4000ms by default. See lib/arc-provider.
provider.pollingInterval = 500;
const signer = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
const conduit = new ConduitClient({
signer,
network: "arc-testnet",
});
// Send $10 USDC to any address
const receipt = await conduit.pay({
recipient: "0xRECIPIENT_ADDRESS",
amount: 10_000_000n, // $10 in 6-decimal units
currency: "USDC",
});
console.log("Settled:", receipt.txHash);
console.log("Explorer:", receipt.explorerUrl);Amounts are always 6-decimal bigints. 1 USDC = 1_000_000n. Never use floating-point for token amounts.
4. Cross-currency payment
Send USDC when the recipient wants EURC (or vice versa). Conduit handles the swap via Circle StableFX — you need a Kit Key from console.circle.com.
const conduit = new ConduitClient({
signer,
kitKey: process.env.KIT_KEY,
network: "arc-testnet",
});
// You hold USDC, recipient wants EURC
const receipt = await conduit.pay({
recipient: "0xRECIPIENT_ADDRESS",
amount: 10_000_000n, // $10 EURC they receive
currency: "EURC", // recipient's currency
payerToken: "USDC", // your currency
});5. Create a payment link
Generate a shareable URL. Anyone with that URL can pay you in any supported stablecoin — Conduit routes and converts automatically.
// Register a declaration on-chain and get a payment URL
const { paymentUrl, declarationId, txHash } = await conduit.createLink({
amount: 5_000_000n, // $5 USDC
currency: "USDC",
// recipient defaults to signer address
});
console.log(paymentUrl);
// → https://app.conduit.xyz/pay/0xABC...
// Open amount (payer chooses how much)
const openLink = await conduit.createLink({
amount: 0n,
currency: "USDC",
});Network reference
Chain ID: 5042002
RPC: https://rpc.testnet.arc.network
WebSocket: wss://rpc.testnet.arc.network
Explorer: https://testnet.arcscan.app
USDC: 0x3600... (6 decimals)
EURC: 0x89B5... (6 decimals)
CCTP Domain: 26Next steps
- SDK Reference — full API surface, every method and parameter
- API quickstart — the actual B2B settlement API this content predates; real curl to a settled payment