{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-developers/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"redocly_category":"Developers","type":"markdown"},"seo":{"title":"Canton Pre-Approving Assets","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"canton-pre-approving-assets","__idx":0},"children":["Canton Pre-Approving Assets"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On the Canton Network, addresses are identified by a party ID, and incoming transfers are not credited automatically — the recipient must accept each incoming transfer before the assets are settled into the vault. Instead of approving every incoming transfer individually, you can pre-approve an asset so that future incoming transfers of that asset are accepted automatically, without a manual claim per transfer."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pre-approval operations are created through the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.fordefi.com/api/openapi/transactions/create_transaction_api_v1_transactions_post"},"children":["Create Transaction"]}," endpoint using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canton_transaction"]}," type, with the specific operation selected by the nested ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.type"]}," field. Fordefi supports Canton Coin (CC), the native asset, and any asset based on the CIP-56 token standard."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pre-approving-assets","__idx":1},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pre-approving assets"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Approving every incoming transfer individually can be cumbersome. Instead, you can create a one-time pre-approval for a specific asset so that subsequent incoming transfers of that asset are auto-accepted, without a manual claim per transfer."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Submit a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canton_pre_approval_setup"]}," request and specify the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["asset_identifier"]}," you want to pre-approve."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pre-approve-a-cip-56-token","__idx":2},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pre-approve a CIP-56 token"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A CIP-56 token is identified by its instrument ID — the address (party ID) of the instrument provider together with the instrument ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," within that provider's namespace."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"signer_type\": \"api_signer\",\n  \"type\": \"canton_transaction\",\n  \"vault_id\": \"your_canton_vault_id\",\n  \"details\": {\n    \"type\": \"canton_pre_approval_setup\",\n    \"asset_identifier\": {\n      \"type\": \"canton\",\n      \"details\": {\n        \"type\": \"cip56_token\",\n        \"token\": {\n          \"address\": {\n            \"chain\": \"canton_mainnet\",\n            \"account\": \"45b72ac2a9742204e6e5f521781b0648::122028536bd166988ebbb422c7f483bb32d4134127e8c171c9666ce9b518e1dd27cf\"\n          },\n          \"id\": \"the_instrument_id\"\n        }\n      }\n    }\n  },\n  \"note\": \"Pre-approve incoming transfers of a CIP-56 token\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pre-approve-the-native-asset","__idx":3},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pre-approve the native asset"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To pre-approve incoming transfers of the native asset (Canton Coin), use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["native"]}," asset identifier."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"signer_type\": \"api_signer\",\n  \"type\": \"canton_transaction\",\n  \"vault_id\": \"your_canton_vault_id\",\n  \"details\": {\n    \"type\": \"canton_pre_approval_setup\",\n    \"asset_identifier\": {\n      \"type\": \"canton\",\n      \"details\": {\n        \"type\": \"native\",\n        \"chain\": \"canton_mainnet\"\n      }\n    }\n  },\n  \"note\": \"Pre-approve incoming transfers of the native asset\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the pre-approval is set up, incoming transfers of the specified asset are accepted automatically, and you no longer need to submit a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canton_approve_transfer"]}," request for each one."]}]},"headings":[{"value":"Canton Pre-Approving Assets","id":"canton-pre-approving-assets","depth":1},{"value":"Pre-approving assets","id":"pre-approving-assets","depth":2},{"value":"Pre-approve a CIP-56 token","id":"pre-approve-a-cip-56-token","depth":3},{"value":"Pre-approve the native asset","id":"pre-approve-the-native-asset","depth":3}],"frontmatter":{"seo":{"title":"Canton Pre-Approving Assets"}},"lastModified":"2026-07-12T09:49:22.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developers/transaction-types/canton-pre-approve-assets","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}