Move stablecoins between your own treasury wallets
Regulatory status: Internal transfers between your own treasury wallets are not a regulated activity. No compliance checks are required.
This guide shows how to move stablecoins between your own treasury wallets. Common use cases include rebalancing liquidity across chains, moving funds between entities (e.g., a US entity and a European entity), and internal fund management.
Create two treasury wallets representing different entities or purposes. In this example, you will create wallets for a US entity and a European entity.
Use the standard token transfer API to move funds. Since this is an internal transfer between your own wallets, no compliance checks are required.
// Get the US entity walletconst usWallet = await crossmintWallets.getWallet("evm:smart:alias:entity-us", { chain: "base-sepolia",});await usWallet.useSigner({ type: "server", secret: process.env.WALLET_RECOVERY_SECRET!,});// Transfer 500 USDC from US entity to European entityconst { hash, explorerLink } = await usWallet.send( "evm:smart:alias:entity-europe", // recipient wallet locator "usdc", "500");console.log("Transfer hash:", hash);console.log("Explorer:", explorerLink);
Signing transactions (REST API): The cURL and Python examples above use the simplified Transfer Token endpoint. If your integration requires custom transaction signing, see the full create → sign → approve flow in Send a Transaction (EVM) — REST tab.
For the full transfer API reference, see the Transfer Tokens guide.
Set up webhooks to receive real-time notifications when transfers complete. Configure the wallets.transfer.out and wallets.transfer.in event types in the Crossmint Console.For setup instructions and the full event schema, see the Transfer Webhooks guide.