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

# Overview

> Pay services on other chains from a single Sui wallet.

Not every service an agent needs lives on Sui. Cross-chain payments let an agent keep **one Sui wallet** and pay x402 services on other chains — spending the Sui stablecoins it already holds, with no bridging and no second wallet to fund.

<Note>
  Cross-chain settlement is live on **testnet**, paying [Base Sepolia](https://docs.base.org) (`eip155:84532`) services from a Sui wallet. More destination chains are on the roadmap.
</Note>

## The idea

The agent's funds stay on Sui. When it pays a service on another chain, Tentacle Pay routes the payment through a **dWallet** — a wallet whose private key is split across [Ika](https://ika.xyz)'s 2PC-MPC network, so no single party can sign for it. The dWallet produces a signature valid on the destination chain, funded by the USDC the agent pays on Sui.

<Steps>
  <Step title="The agent holds one Sui wallet">
    A single Sui keypair with a stablecoin balance — the same wallet used for native Sui payments.
  </Step>

  <Step title="It pays in Sui stablecoins">
    To call a service on another chain, the agent pays USDC on Sui into the Tentacle Pay contract.
  </Step>

  <Step title="The dWallet signs for the destination">
    Ika's MPC network signs the destination-chain payment authorization on the agent's behalf.
  </Step>

  <Step title="The payment settles on the destination">
    The signed authorization is submitted to the destination chain, paying the service.
  </Step>
</Steps>

To the destination service it's an ordinary x402 payment — it never knows the agent started on Sui.

## What it looks like in code

The agent registers the destination chain's x402 scheme with a **cross-chain signer**. From there, paying is identical to a native x402 call:

```ts theme={null}
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm";
import { wrapFetchWithPayment } from "@x402/fetch";

import { createCrossChainEvmSigner } from "@tentaclepay/sdk/x402/evm";

const crossChainEvmSigner = await createCrossChainEvmSigner(
  keypair, // your Sui keypair
  { verifierUrl, suiClient }
);

const client = new x402Client();
client.register("eip155:84532", new ExactEvmScheme(crossChainEvmSigner));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
```

See the [Quickstart](/cross-chain/quickstart) for the full setup, and [Architecture](/cross-chain/architecture) for how dWallets and the verifier fit together.

## With the wallet

The [`tpay` wallet](/wallet/overview) has cross-chain built in. When an agent pays a service on a supported destination chain, `tpay` routes it through the dWallet automatically — the agent still spends from its one Sui wallet.

## Next steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="play" href="/cross-chain/quickstart">
    Make a cross-chain payment from a Sui wallet.
  </Card>

  <Card title="Architecture" icon="sitemap" href="/cross-chain/architecture">
    dWallets, the verifier, and the on-chain protocol.
  </Card>
</CardGroup>
