# CCIP Tutorials: Canton as Source
Source: https://docs.chain.link/ccip/tutorials/canton/source
Last Updated: 2026-07-06

> For the complete documentation index, see [llms.txt](/llms.txt).

> **CAUTION**
>
> Addresses shown may change due to upgrades since Canton contracts are immutable. Confirm party IDs and contract addresses with [Chainlink CCIP](https://chain.link/ccip-contact).

**Canton as Source** (`canton2any`) tutorials cover sending from Canton — Canton is the source chain, a remote CCIP-supported chain (Ethereum Sepolia in the starter kit) is the destination.

> **NOTE: Testnet only**
>
> These tutorials run on **Canton testnet** and **Ethereum Sepolia** only. Complete [prerequisites](/ccip/tutorials/canton/source/prerequisites) with testnet credentials and tokens before starting.

Tutorials use the [`ccip-starter-kit-canton`](https://github.com/smartcontractkit/ccip-starter-kit-canton) on [`@chainlink/ccip-sdk`](https://www.npmjs.com/package/@chainlink/ccip-sdk).

## Getting Started

- [Prerequisites for Canton as Source](/ccip/tutorials/canton/source/prerequisites) — Clone the starter kit, configure Canton ledger access, and fund Amulet.
- [Canton as Source flow](/ccip/concepts/canton/overview#canton--public-chain) — On-ledger send path in the overview.

## Tutorials by Use Case

| Tutorial                                                                 | Script            | Description                          |
| :----------------------------------------------------------------------- | :---------------- | :----------------------------------- |
| [Arbitrary Messaging](/ccip/tutorials/canton/source/arbitrary-messaging) | `canton2any:data` | Send a data-only message from Canton |

## Common Flow (all canton2any tutorials)

1. Fetch explicit disclosures from Global CCIP EDS (and token pool operator EDS for token messages)
2. Create or reuse `CCIPSender` and `PerPartyRouter` on Canton
3. Submit via `PerPartyRouter_CCIPSend` with CommitteeVerifier tickets (and token pool tickets when applicable)
4. Track delivery in [CCIP Explorer](/ccip/tools-resources/ccip-explorer)
5. Destination execution on Sepolia runs automatically by default, or via `canton2any:manual-exec` with `--no-exec`

## Prerequisites

- [Starter kit setup](/ccip/tutorials/canton/source/prerequisites)
- **Amulet** on Canton for CCIP fees

> **CAUTION: Educational Example Disclaimer**
>
> This page includes an educational example to use a Chainlink system, product, or service and is provided to
> demonstrate how to interact with Chainlink's systems, products, and services to integrate them into your own. This
> template is provided "AS IS" and "AS AVAILABLE" without warranties of any kind, it has not been audited, and it may be
> missing key checks or error handling to make the usage of the system, product or service more clear. Do not use the
> code in this example in a production environment without completing your own audits and application of best practices.
> Neither Chainlink Labs, the Chainlink Foundation, nor Chainlink node operators are responsible for unintended outputs
> that are generated due to errors in code.