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:
const url = `https://staging.crossmint.com/api/v1-alpha2/wallets/${walletLocator}/balances`;
const options = {
    method: 'POST',
    headers: {
        'X-API-KEY': '<x-api-key>',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        amount: 10,
        token: 'usdxm',
        chain: 'base-sepolia'
    })
};

try {
    const response = await fetch(url, options);
    const data = await response.json();
    console.log(data);
} catch (error) {
    console.error(error);
}
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.
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
Verify the balance using the Get Balance endpoint:
const treasuryWallet = await wallets.getWallet(walletLocator, {
	chain: "base-sepolia",
	signer: {type: "api-key"},
});

const balances = await treasuryWallet.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:
<projectCode>-<walletCode>-<currency>
Where:
  • <projectCode>: A 3-digit number assigned by the Crossmint Customer Success Engineering (CSE) team to identify your project (e.g., 001).
  • <walletCode>: A unique 5-character uppercase code that identifies your wallet address. This code is derived from the wallet and chain combination (e.g., XFRWE) and also provided by Crossmint’s CSE team.
  • <currency>: (Optional) The currency to receive in your wallet (e.g., usdc). If omitted, defaults to usdc.
Example memos:
  • 001-XFRWE-USDC (explicit currency)
  • 001-XFRWE (defaults to USDC)
If you misplace a transfer (wrong memo, incorrect details, etc.), you can contact our support team for assistance in recovering your funds.

Wallet Settlement

Once your bank transfer clears, USDC will be automatically deposited into your treasury wallet on the specified chain. To receive real-time notifications of successful transfers from your bank account to your treasury wallet use wallet transfer webhooks:
  • Configure a webhook endpoint to receive messages for incoming transfers by selecting the wallets.transfer.in event type
  • Make sure to verify the webhook’s signature to ensure it comes from Crossmint
  • Look for the fields you care about (i.e. data.status) in the event’s response schema

Next Steps