Skip to main content
There are different ways to fund your treasury wallet depending on whether you’re working in staging/development or production.

Staging / Development

In staging and development environments, you have two options for funding your treasury wallet:

Using a Faucet

You can use a faucet like Circle’s USDC faucet to get test tokens for your wallet. Simply send the tokens directly to your wallet address.

Using the Fund Wallet API

This endpoint is only available in staging and only supports USDXM.
You can use the Fund Wallet API to automatically fund your wallet with test tokens:
curl --request POST \
    --url 'https://staging.crossmint.com/api/v1-alpha2/wallets/{walletLocator}/balances' \
    --header 'X-API-KEY: <x-api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
        "amount": 10,
        "token": "usdc",
        "chain": "solana"
    }'
See the API reference for more details.

Production

In production, you have two methods for funding your treasury wallet:

Making a Stablecoin Transfer

Treasury wallets work like any other wallet and can receive funds through standard blockchain transfers. To fund your wallet:
  1. Get your wallet address using the Get Wallet API:
  • Node.js
  • REST
const wallet = await crossmintWallets.getWallet({
    chain: "<your-chain>",
    alias: "treasury",
});

console.log(wallet.address);
  1. Send stablecoins to the wallet address from any external wallet or exchange.
Important: Treasury wallets are like any other wallet and can receive funds normally. However, please:
  • Double-check the address, especially the address casing (some chains are case-sensitive)
  • Recommend sending a small test transfer first to verify the address is correct before sending larger amounts
  1. Verify the balance using the Get Balance endpoint:
  • Node.js
  • REST
const wallet = await crossmintWallets.getWallet({
    chain: "<your-chain>",
    alias: "treasury",
});

const balances = await wallet.balances(["usdc"]);

console.log("USDC balance:", balances.usdc);

Making a Bank Transfer

Bank transfer funding is an enterprise-only feature. Contact our Customer Success Engineering (CSE) team to set up and verify your banking details.
Bank transfers allow you to fund your treasury wallet directly from your bank account. Here’s how it works:
  1. Contact our CSE team to share and verify your banking details. We will provide you with a bank account that accepts the fastest and lowest cost transfers from your bank.
  2. Send a bank transfer using a specific memo format. The memo is critical for routing funds to your treasury wallet.

Memo Format

The memo must follow this format:
XM-<REF>-<ALIAS>-<CHAIN>-<OPT_NONCE>
Where:
  • <REF>: A reference code your Crossmint Customer Success Engineer will give you to identify your entity.
  • <ALIAS>: The alias for your treasury wallet (e.g., treasury). You should uppercase it (for example, TREASURY).
  • <CHAIN>: The short code for the destination chain. See supported chains for the correct chain codes
  • <OPT_NONCE>: (Optional) A nonce you can set if you later want to track top-ups separately in our console. Can be left blank if not needed
Memo Requirements:
  • Must be all uppercase
  • Up to 30 characters maximum
  • Use only: 0-9, A-Z, and hyphens (-)
Example memos:
  • XM-TREASURY-BASE (basic memo)
  • XM-TREASURY-SOLANA-001 (with optional nonce for tracking)
If you misplace a transfer (wrong memo, incorrect details, etc.), you can contact our support team for assistance in recovering your funds.
  1. Automatic deposit: Once your bank transfer clears, USDC will be automatically deposited into your treasury wallet on the specified chain.