Documentation Index
Fetch the complete documentation index at: https://docs.arc.io/llms.txt
Use this file to discover all available pages before exploring further.
You can use the
Forwarding Service
when spending from a Unified Balance on the destination blockchain. When
enabled, it fetches the attestations from source blockchains and submits the
mint on the destination blockchain. You don’t need to poll for attestations or
have access to a wallet on the destination.
Prerequisites
Before you begin, ensure that you’ve:
These are required so any example below runs with a valid kit and adapter.
Use with adapters on all blockchains
Set useForwarder: true when you have adapters on all source and destination
blockchains but want the Forwarding Service to submit the mint transaction on
the destination:
import { AppKit } from "@circle-fin/app-kit";
import { createViemAdapterFromPrivateKey } from "@circle-fin/adapter-viem-v2";
const kit = new AppKit();
const sourceAdapter = createViemAdapterFromPrivateKey({
privateKey: process.env.EVM_PRIVATE_KEY as string,
});
const destinationAdapter = sourceAdapter;
const result = await kit.unifiedBalance.spend({
amount: "1.00",
from: {
adapter: sourceAdapter,
allocations: [{ amount: "1.00", chain: "Base_Sepolia" }],
},
to: {
adapter: destinationAdapter,
chain: "Arc_Testnet",
useForwarder: true,
},
token: "USDC",
});
Use without a destination adapter
When you don’t have access to a wallet on the destination blockchain, such as
with server-side or custodial spend flows, omit the destination adapter and pass
recipientAddress with useForwarder: true:
import { AppKit } from "@circle-fin/app-kit";
import { createViemAdapterFromPrivateKey } from "@circle-fin/adapter-viem-v2";
const kit = new AppKit();
const sourceAdapter = createViemAdapterFromPrivateKey({
privateKey: process.env.EVM_PRIVATE_KEY as string,
});
const result = await kit.unifiedBalance.spend({
amount: "1.00",
from: {
adapter: sourceAdapter,
allocations: [{ amount: "1.00", chain: "Base_Sepolia" }],
},
to: {
chain: "Arc_Testnet",
recipientAddress: process.env.EVM_RECIPIENT_ADDRESS as string,
useForwarder: true,
},
token: "USDC",
});
In this mode, mint confirmation comes from the Circle Iris API response rather
than an onchain receipt. Because the Forwarding Service submits the mint
transaction, no locally signed transaction hash is returned and the mint step’s
data field is undefined.
Forwarding fee
The Forwarding Service charges a
fee
that is deducted from the amount minted on the destination chain. When you
estimate spend fees
for a spend transaction, the result includes the forwarding fee. See
How Unified Balance fees work for
details.