Conduitdocs

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 ethers

The 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.

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:  26

Next steps