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

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

**Canton as Destination** (`any2canton`) tutorials cover receiving on Canton — Ethereum Sepolia is the source in the starter kit, Canton is the destination.

> **NOTE: Testnet only**
>
> These tutorials run on **Canton testnet** and **Ethereum Sepolia** only. Complete [prerequisites](/ccip/tutorials/canton/destination/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 Destination](/ccip/tutorials/canton/destination/prerequisites) — Clone the starter kit, configure Sepolia and Canton access, and fund TEST/ETH.
- [Canton as Destination flow](/ccip/concepts/canton/overview#public-chain--canton) — Execute path in the overview.

## Tutorials by Use Case

| Tutorial                                                                                        | Scripts                                     | Description                                  |
| :---------------------------------------------------------------------------------------------- | :------------------------------------------ | :------------------------------------------- |
| [Arbitrary Messaging](/ccip/tutorials/canton/destination/arbitrary-messaging)                   | `any2canton:data` + `manual-exec`           | Execute an incoming data message on Canton   |
| [Token Transfers](/ccip/tutorials/canton/destination/token-transfers)                           | `any2canton:token` + `manual-exec`          | Execute an incoming token transfer on Canton |
| [Programmable Token Transfers](/ccip/tutorials/canton/destination/programmable-token-transfers) | `any2canton:data-and-token` + `manual-exec` | Execute an incoming PTT on Canton            |

## Common Flow (all any2canton tutorials)

1. Send from Sepolia with an `any2canton:*` script
2. Poll message status via the CCIP API or [CCIP Explorer](/ccip/tools-resources/ccip-explorer)
3. Run `any2canton:manual-exec` — the SDK **finds or creates** a compatible `CCIPReceiver` for message finality
4. Fetch proofs from the indexer and disclosures from Global CCIP EDS (+ token pool operator EDS for token messages)
5. For token messages: accept the `TransferInstruction` to receive LINK on-ledger

> **TIP**
>
> No separate receiver deployment tutorial is needed for the default path. Pass a `receiver` hint only for custom `CCIPReceiver` configurations.

## Prerequisites

- [Starter kit setup](/ccip/tutorials/canton/destination/prerequisites)
- Funded Sepolia account with ETH (or LINK for fees) and TEST for token tutorials
- Canton party with JWT access for manual execution
- Token pool registered for the instrument — see [CCT guides](/ccip/tutorials/canton/cross-chain-tokens)

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