# Cross-Chain Token Standard - Integration Guide (SVM)
Source: https://docs.chain.link/ccip/concepts/cross-chain-token/svm/integration-guide

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

This integration guide helps you determine the optimal path for integrating your SPL token with Chainlink CCIP on SVM-based blockchains like Solana. Follow the decision tree below to understand your specific requirements, deployment options, and when you can use self-service versus when you need Chainlink assistance.> **NOTE: Need Assistance?**
>
> If your integration requires Chainlink assistance (manual registration or pool initialization), submit a [registration
> request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration) with details about your token and
> requirements.## PrerequisitesBefore starting integration, ensure you meet these requirements:* **Token Compatibility**: Your token must meet [compatibility requirements](/ccip/concepts/cross-chain-token/svm/tokens#compatibility)
* **Decimal Planning**: Plan [decimal configuration](/ccip/concepts/cross-chain-token/svm/tokens#decimal-planning) across all target blockchains
* **Pool Type Selection**: Choose the appropriate token pool type for your use case:

  - **[BurnMint Pools](/ccip/concepts/cross-chain-token/svm/token-pools#burnmint-token-pool)**: Burn tokens on source, mint on destination. Requires transferring mint authority to pool. Best for tokens designed to have variable supply across chains.

  - **[LockRelease Pools](/ccip/concepts/cross-chain-token/svm/token-pools#lockrelease-token-pool)**: Lock tokens on source, release on destination. No mint authority transfer required. Requires liquidity management. Best for retaining mint authority control or capped-supply tokens.

  For detailed comparisons and technical requirements, see [Token Handling Mechanisms](/ccip/concepts/cross-chain-token/svm/token-pools#token-handling-mechanisms).## Integration OverviewCCIP Cross-Chain Token (CCT) integration involves two key phases:1) **Token Registration**: Establishing a CCIP token administrator role
2) **Token Pool Deployment**: Setting up the pool program that handles cross-chain operationsYour path through these phases depends on your **mint authority control** and chosen **[deployment approach](/ccip/concepts/cross-chain-token/svm/token-pools#deployment-approaches)**.## Decision Flow DiagramThe following diagram visualizes the complete decision process based on your mint authority control:![CCIP Cross-Chain Token integration decision flowchart for SVM chains, showing paths based on mint authority control and deployment approaches](/images/ccip/cct/cct-svm-diagrams/solana_cct_flowchart.svg)## Mint Authority AssessmentThe first critical decision point is understanding your mint authority control, as this determines your available options throughout the integration process.**Why mint authority control matters for token registration:** The Router's [`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator) instruction can only be called by the actual mint authority holder. The Router verifies onchain that the signer account matches the token's `mint_authority` field. If you cannot sign this instruction as the mint authority, the Router cannot verify your authorization onchain, requiring manual governance assistance.**You have direct control when:*** You hold the mint authority private key directly
* You control a governance multisig that holds the mint authority (non-SPL token multisig)
* You can execute mint authority operations through your governance process**You do NOT have direct control when:**- Mint authority is set to `None` (supply capped)
- Mint authority is held by an SPL token multisig
- Mint authority is controlled by another party you cannot coordinate with
- You have lost access to the mint authority private key> **CAUTION: SPL Token Multisig Limitation**
>
> **Critical:** While SPL token multisigs can mint tokens, they can only execute SPL token program instructions. They
> cannot call other program instructions required for CCIP registration
> ([`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator)) or pool
> initialization ([`initialize`](/ccip/api-reference/svm/v1.6.0/burn-mint-token-pool#initialize)). If your mint
> authority is an SPL token multisig, you will need Chainlink assistance for both registration and pool initialization.## Integration PathsBased on your mint authority control, follow the appropriate integration path:### Path A: Full Self-Service (Mint Authority Controlled)**When to use:** You have direct control over the mint authority**Registration Process:*** **Self-service registration**: Use [`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator) and [`accept_admin_role_token_admin_registry`](/ccip/api-reference/svm/v1.6.0/router#accept_admin_role_token_admin_registry) instructions (propose + accept)
* **Immediate control**: Complete registration without external assistance
* **Administrator flexibility**: Choose any address as the CCIP token administrator**Pool Deployment Options:**1) **[Self-Serve Mode](/ccip/concepts/cross-chain-token/svm/token-pools#approach-1-self-serve-mode-recommended) (Recommended)**
   - Use Chainlink-deployed standard pool programs
   - Initialize your pool using [`initialize`](/ccip/api-reference/svm/v1.6.0/burn-mint-token-pool#initialize) instruction
   - Automatic governance-controlled upgrades
   - Lowest operational overhead

2) **[Self-Deployed Standard Pools](/ccip/concepts/cross-chain-token/svm/token-pools#approach-2-self-deployed-standard-pools)**
   - Deploy standard pool programs yourself
   - Control upgrade authority and timing
   - Initialize your own pools

3) **[Custom Token Pools](/ccip/concepts/cross-chain-token/svm/token-pools#approach-3-custom-token-pools)**
   - Build custom pool logic for specialized requirements
   - Full control over implementation and upgrades### Path B: Assisted Registration + Self-Serve Pools (Mint Authority Not Controlled)**When to use:** You want to use self-serve mode pools, but you cannot call [`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator) as the mint authority**Registration Process:*** **Manual registration required**: Submit [registration request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration)
* **CCIP governance assistance**: Router upgrade authority will propose the administrator using [`ccip_admin_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#ccip_admin_propose_administrator)
* **Choose administrator**: You specify who should be the CCIP token administrator**Pool Deployment:*** **Assisted pool initialization**: Submit [registration request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration) to have the pool program upgrade authority initialize your pool
* **Self-serve mode benefits**: Once initialized, you become the pool owner with full configuration control
* **Governance-controlled upgrades**: Benefit from automatic security updates and features### Path C: Full Manual Process (Custom or Self-Deployed)**When to use:** You cannot call [`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator) as the mint authority and want self-deployed or custom pools**Registration Process:*** Same manual registration process as Path B**Pool Deployment:**- **Deploy your own programs**: Full control over pool program deployment
- **Control upgrade authority**: Manage your own upgrade process
- **Initialize independently**: Use your upgrade authority to initialize pools> **NOTE: Why Manual Registration is Required**
>
> Paths B and C require manual registration because the Router's
> [`owner_propose_administrator`](/ccip/api-reference/svm/v1.6.0/router#owner_propose_administrator) instruction can
> only be called by the actual mint authority holder. The Router verifies onchain that the signer account matches the
> token's `mint_authority` field. If you cannot sign this instruction as the mint authority (because you don't control
> it, it's set to `None`, or it's an SPL token multisig), the Router cannot verify your authorization onchain, requiring
> manual governance assistance.## Implementation StepsOnce you've determined your path, follow these implementation steps:### Step 1: Complete Registration* **Self-service path**: Follow [self-service registration](/ccip/concepts/cross-chain-token/svm/registration-administration#self-service-registration-flow)
* **Assisted path**: Submit [registration request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration)### Step 2: Deploy and Initialize Token PoolChoose your deployment approach:* **Self-serve mode**: Initialize pool from existing Chainlink-deployed programs
  - **If you can sign as mint authority**: Use the [`initialize`](/ccip/api-reference/svm/v1.6.0/burn-mint-token-pool#initialize) instruction directly
  - **If you cannot sign as mint authority** (mint authority is `None`, held by SPL token multisig, or controlled by another party): Submit [registration request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration) for assisted initialization

* **Self-deployed**: Deploy standard pool programs yourself, then initialize pool from your deployed program

* **Custom**: Implement and deploy custom pool following [technical requirements](/ccip/concepts/cross-chain-token/svm/token-pools#custom-token-pools), then initialize pool from your deployed program### Step 3: Create Associated Token Account* Create the [Associated Token Account (ATA)](https://www.solana-program.com/docs/associated-token-account) for the Pool Signer PDA
* **Required**: Pool operations cannot begin without this ATA
* The ATA will hold tokens for LockRelease pools or serve as the burn account for BurnMint pools### Step 4: Transfer Mint Authority (BurnMint Pools Only)Choose one of two approaches:* **Direct Transfer**: Transfer `mint_authority` directly to the Pool Signer PDA (simple, pool-only minting)
* **Multisig Setup (Recommended)**: Create an M-of-N [SPL token multisig](https://spl.solana.com/token#multisig-usage) with Pool Signer PDA appearing at least M times as a signer (flexible, multiple authorized minters)See [Mint Authority Management](/ccip/concepts/cross-chain-token/svm/token-pools#mint-authority-management) for detailed configuration options.### Step 5: Create Address Lookup Table (ALT)* Create an ALT containing all required accounts for your pool operations
* Must include required accounts in specific order as detailed in the [`set_pool` API reference](/ccip/api-reference/svm/v1.6.0/router#address-lookup-table-requirements)
* See the complete [ALT requirements table](/ccip/api-reference/svm/v1.6.0/router#address-lookup-table-requirements) for exact account order and derivations### Step 6: Link Pool to Token Registry* Call [`set_pool`](/ccip/api-reference/svm/v1.6.0/router#set_pool) instruction on the Router
* Links your pool's ALT to your token in the TokenAdminRegistry
* Enables CCIP to route cross-chain transfers to your pool### Step 7: Configure Pool Settings* Complete [remote chain configuration](/ccip/concepts/cross-chain-token/svm/registration-administration#remote-chain-configuration)
* Set up [rate limits and security settings](/ccip/concepts/cross-chain-token/svm/registration-administration#rate-limits-and-security)
* **For LockRelease pools**: Configure [liquidity management](/ccip/concepts/cross-chain-token/svm/registration-administration#liquidity-management-lockrelease-pools-only)## Next StepsAfter determining your integration path:1) **Review Detailed Documentation**:
   - [Architecture](/ccip/concepts/cross-chain-token/svm/architecture): Understand component interactions
   - [Tokens](/ccip/concepts/cross-chain-token/svm/tokens): Token requirements and compatibility
   - [Token Pools](/ccip/concepts/cross-chain-token/svm/token-pools): Pool implementation details
   - [Registration & Administration](/ccip/concepts/cross-chain-token/svm/registration-administration): Complete registration and configuration procedures

2) **For Assisted Paths**: Submit your [registration request](https://chain.link/ccip-contact?v=Tokens:%20Token%20admin%20registration) with detailed information about your token and requirements

3) **For Self-Service Paths**: Begin with token registration following the appropriate workflow for your chosen deployment approach