> ## Documentation Index
> Fetch the complete documentation index at: https://cantonfoundation-generated-references-ledger-bindings-update.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Memo Tags

> Use memo tags to route deposits to specific accounts at exchanges.

To enable deposits to be sent to specific user accounts at exchanges, an account identifier needs to be sent to the exchange along with the transfer information. In Canton, this is implemented with the ["memo tag" pattern](https://support.ledger.com/article/4409603715217-zd).

## Exchanges — using memo tags to receive and allocate funds

Memos are stored in the transfer metadata using the `splice.lfdecentralizedtrust.org/reason` key. The Canton Network Token [Standard](https://github.com/canton-foundation/cips/blob/main/cip-0056/cip-0056.md#generic-metadata) defines this key and a way to parse these memo tags and other transfer information from transactions.

When ingesting transaction history, an exchange parses the `splice.lfdecentralizedtrust.org/reason` metadata key from incoming transfers to correlate a deposit with the internal account it should be allocated to.

## Wallets — sending funds to exchanges using memo tags

### Canton Coin Wallet

In the Canton Coin wallet, the "Description" field in the screenshot below must be used to communicate this account identifier in the format required by the exchange. For example: "AcmeExchange account: \<exchangeInternalAccountId>".

<img src="https://mintcdn.com/cantonfoundation-generated-references-ledger-bindings-update/2xVlVxluFCG702sn/images/splice_wallet_kernel/splice-wallet.png?fit=max&auto=format&n=2xVlVxluFCG702sn&q=85&s=0b2ce853cc922136c040dc8a70b73d5e" alt="Splice wallet UI" width="651" height="513" data-path="images/splice_wallet_kernel/splice-wallet.png" />

### CN Token Standard Wallets

The token standard defines the `splice.lfdecentralizedtrust.org/reason` metadata key for the purpose of communicating a human-readable description for the transfer (see [CIP-0056](https://github.com/canton-foundation/cips/blob/main/cip-0056/cip-0056.md#generic-metadata)).

Token standard wallets must provide a "Description" or "Reason" field analogous to the Canton Coin wallet, and store its value in the metadata field of the `Transfer` specification ([code](https://github.com/hyperledger-labs/splice/blob/332e06a7ae9e13fde5bba0bf7dcb059aa36f979e/token-standard/splice-api-token-transfer-instruction-v1/daml/Splice/Api/Token/TransferInstructionV1.daml#L12-L43)) when initiating a transfer. This is actually what the Canton Coin wallet does behind the scenes when initiating a Canton Coin transfer.

Likewise when displaying an incoming transfer or the tx history for a transfer the content of `splice.lfdecentralizedtrust.org/reason` metadata key should be parsed and displayed, as done for example by the transaction history parser in the token standard CLI ([docs](/appdev/deep-dives/token-standard)). This allows exchanges to communicate a correlation-id for a redemption.

Code sample for setting the right metadata field: see this [change to the experimental token standard CLI](https://github.com/hyperledger-labs/splice/pull/2003/files) to take the "reason" as command line argument and store it in the metadata field.

### CN Token Registries

Token standard compliant registries must ensure that they pass the `Transfer` specification unchanged along when implementing multi-step transfers using the `TransferInstruction` interface ([code](https://github.com/hyperledger-labs/splice/blob/332e06a7ae9e13fde5bba0bf7dcb059aa36f979e/token-standard/splice-api-token-transfer-instruction-v1/daml/Splice/Api/Token/TransferInstructionV1.daml#L108-L115)).
