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

# Quick start

> Connect C8 Wallet and submit a Canton transfer.

Get from zero to a signed Canton transfer in three steps.

**1. Initialize the provider**

Create a `C8WalletProvider` instance with your dApp metadata and target network.

```ts theme={null}
import { C8WalletProvider } from "@cantor8/wallet-connect-sdk";

const c8 = new C8WalletProvider({
  dappUrl: window.location.href,
  dappName: "My_DeFi_App",
  network: "devnet", // "devnet" | "testmainnet" | "mainnet"
});
```

> [!TIP]
>
> `dappName` must match the name your dApp is registered under in the wallet.

> [!WARNING]
>
> The provider uses `mainnet` when you omit `network`. Set it explicitly during development.

**2. Subscribe to events**

Listen for connection and transaction lifecycle events.

```ts theme={null}
c8.on("connected", (event) => console.log("Connected", event));
c8.on("disconnected", (event) => console.log("Disconnected", event));
c8.on("accountChanged", (event) => console.log("Balance changed", event));
c8.on("txInitiated", (event) => console.log("Transaction initiated", event));
c8.on("txChanged", (event) => console.log("Transaction changed", event));
```

See the [Events reference](https://docs.cantor8.tech/wallet-sdk/events.md) for the full list.

**3. Connect and run a transfer**

Connect to the wallet, pick an instrument and account, then submit a transfer.

```ts theme={null}
await c8.connect();

// Fetch available instruments (Canton tokens / assets)
const { instruments } = await c8.getInstruments();
const instrumentId = instruments[0]?.instrumentId;

// Fetch accounts for that instrument
const { accounts } = await c8.getAccounts(instrumentId);
const senderPartyId        = accounts[0]?.partyId;
const senderHoldingInstrId = accounts[0]?.holdings[0]?.instrumentId ?? instrumentId;

// Submit a transfer
const { txId } = await c8.send({
  senderPartyId,
  instrumentId: senderHoldingInstrId,
  amount:          1.23,
  receiverPartyId: "Party::Receiver",
  // memo and metadata are optional. See the API reference.
});

console.log("Transaction submitted:", txId);
```

> [!TIP]
>
> You received a `txId` — the transfer is now on the Canton ledger. Use [`checkTxStatusById`](https://docs.cantor8.tech/wallet-sdk/api-reference#checktxstatusbyid) to poll its status.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.