> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# For Company Wallets

> Fund your treasury wallet using test faucets in staging or bank transfers in production

There are different ways to fund your treasury wallet depending on whether you are 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](https://faucet.circle.com/) to get test tokens for your wallet. Simply
send the tokens directly to your wallet address.

### Using the Fund Wallet API

<Note>This endpoint is only available in **staging** and only supports USDXM.</Note>

You can use the Fund Wallet API to automatically fund your wallet with test tokens:

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
      --url 'https://staging.crossmint.com/api/v1-alpha2/wallets/<your-wallet-address>/balances' \
      --header 'X-API-KEY: <your-server-api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
          "amount": 10,
          "token": "usdxm",
          "chain": "base-sepolia"
      }'
  ```

  ```typescript Node.js theme={null}
  import { CrossmintWallets, createCrossmint } from "@crossmint/wallets-sdk";

  const crossmint = createCrossmint({
      apiKey: "<your-server-api-key>",
  });

  const crossmintWallets = CrossmintWallets.from(crossmint);

  const wallet = await crossmintWallets.getWallet("<your-wallet-address>", {
      chain: "base-sepolia",
  });

  // Fund with 10 USDXM (staging only)
  await wallet.stagingFund(10);

  console.log("Wallet funded successfully");
  ```

  ```python Python theme={null}
  import requests

  wallet_address = "<your-wallet-address>"
  url = f"https://staging.crossmint.com/api/v1-alpha2/wallets/{wallet_address}/balances"

  payload = {
      "amount": 10,
      "token": "usdxm",
      "chain": "base-sepolia"
  }
  headers = {
      "X-API-KEY": "<your-server-api-key>",
      "Content-Type": "application/json"
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```
</CodeGroup>

See the [API reference](/api-reference/wallets/fund-wallet) for more details.

## Production

In production, fund your treasury wallet via bank transfer.

### Bank Transfer

<Note>Bank transfer funding is an **enterprise-only** feature. Contact our Customer Success Engineering (CSE) team to set up and verify your banking details.</Note>

Bank transfers allow you to fund your treasury wallet directly from your bank account. Here is 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>-<nonce>
```

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, chain, and token. This code is provided by Crossmint's CSE team (e.g., `XFRWE`).
* **`<nonce>`**: A 6-character alphanumeric code that you generate to identify each transaction (e.g., `123ABD`). Each transaction must use a different nonce. You can use nonces with shared characters to group transactions associated with a specific entity.

<Info>
  Currently, only USDC is supported for B2B onramp. Support for additional tokens is coming soon.
</Info>

**Example memo:**

* `001-XFRWE-123ABD`

<Info>
  If you misplace a transfer (wrong memo, incorrect details, etc.), you can [contact our support team](https://help.crossmint.com/hc/en-us/requests/new) for assistance in recovering your funds.
</Info>

#### 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](/introduction/platform/webhooks/add-endpoint) to receive messages for incoming transfers by selecting the `wallets.transfer.in` event type
* Make sure to [verify](/introduction/platform/webhooks/verify-webhooks) 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](/wallets/guides/webhooks#common-fields)

## Next Steps

<CardGroup cols={2}>
  <Card title="Withdrawals" icon="building-columns" iconType="duotone" color="#8B5CF6" href="/stablecoin-orchestration/guides/on-off-ramps/withdrawing-from-company-wallets">
    Learn how to withdraw stablecoins to your bank account
  </Card>

  <Card title="Payouts" icon="coins" iconType="duotone" color="#1A5785" href="/stablecoin-orchestration/regulated-transfers/overview">
    Send stablecoins to your customers and vendors
  </Card>
</CardGroup>
