> ## 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.

# Get Staging Tokens (USDXM)

> Fund your staging wallets with testnet tokens using Crossmint's USDXM stablecoin

<Warning>
  **You are viewing docs for the previous version of the Wallets SDK.** We recommend upgrading to V1.
  See the [updated version of this page](/wallets/guides/get-staging-tokens) or the [V1 migration guide](/wallets/guides/migrate-to-v1).
</Warning>

## What are testnet tokens?

Testnet tokens are tokens deployed on blockchain testnets for development and testing purposes. These tokens do not have real-world monetary value, allowing you to simulate onchain behavior—such as sending, receiving, and paying gas fees—without financial risk. You can use testnet tokens to validate your integration before moving to production.

## What is USDXM?

USDXM is Crossmint's staging/testnet stablecoin, designed specifically for testing. Think about USDXM as the USDC of testnets. Crossmint has deployed the USDXM contract on all supported testnets making it easier for you to test tokens in staging.

USDXM is only available in staging environments and is not available in production.

# How to fund your wallet?

There are several options to fund your wallets on staging with USDXM

## Option 1: Fund with the SDK

The `stagingFund` method is the easiest way to add USDXM to your wallet programmatically. This method funds the wallet with USDXM only, is only available in staging environments.

<Tabs>
  <Tab title="React">
    ```typescript theme={null}
    import { useWallet } from '@crossmint/client-sdk-react-ui';

    const { wallet } = useWallet();

    const balances = await wallet.stagingFund(10);
    console.log("Wallet funded! New balances:", balances);
    ```

    See the [React SDK reference](/sdk-reference/wallets/v0/react/hooks#wallet-methods) for more details.
  </Tab>

  <Tab title="React Native">
    ```typescript theme={null}
    import { useWallet } from '@crossmint/client-sdk-react-native-ui';

    const { wallet } = useWallet();

    const balances = await wallet.stagingFund(10);
    console.log("Wallet funded! New balances:", balances);
    ```

    See the [React Native SDK reference](/sdk-reference/wallets/v0/react-native/hooks#wallet-methods) for more details.
  </Tab>

  <Tab title="Node.js">
    ```typescript 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(
        "<wallet-address>",
        { chain: "base-sepolia", signer: { type: "external-wallet" } }
    );

    const balances = await wallet.stagingFund(10);
    console.log("Wallet funded! New balances:", balances);
    ```

    See the [SDK reference](/sdk-reference/wallets/v0/typescript/classes/Wallet#stagingfund) for all parameters and return types.
  </Tab>
</Tabs>

## Option 2: Fund via API

You can also fund staging wallets directly using the HTTP API. This is useful for server-side integrations or when you need more control over the funding process.

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

  ```js Node.js theme={null}
  const walletLocator = "email:user@example.com:evm";
  const url = `https://staging.crossmint.com/api/v1-alpha2/wallets/${walletLocator}/balances`;

  const payload = {
      amount: 10,
      token: "usdxm",
      chain: "base-sepolia"
  };

  const options = {
      method: 'POST',
      headers: {
          'X-API-KEY': '<x-api-key>',
          'Content-Type': 'application/json'
      },
      body: JSON.stringify(payload)
  };

  try {
      const response = await fetch(url, options);
      const data = await response.json();
      console.log(data);
  } catch (error) {
      console.error(error);
  }
  ```

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

  wallet_locator = "email:user@example.com:evm"
  url = f"https://staging.crossmint.com/api/v1-alpha2/wallets/{wallet_locator}/balances"

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

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

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

### Request parameters

<ParamField path="walletLocator" type="string" required>
  The wallet to fund. Can be a wallet address or a locator like `email:user@example.com:evm`.
</ParamField>

<ParamField path="amount" type="number" required>
  The amount of USDXM to add.
</ParamField>

<ParamField path="token" type="string" required>
  The token to fund with. Use `usdxm` for staging environments.
</ParamField>

<ParamField path="chain" type="string" required>
  The chain to fund on (e.g., `base-sepolia`, `polygon-amoy`).
</ParamField>

### Getting your API key

You can get your staging API key from the [Crossmint Console](https://staging.crossmint.com). Navigate to your project settings and create an API key with the `wallets:balance.create` scope.

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

## Option 3: Use the faucet web app

For quick manual testing without writing code, you can use Crossmint's hosted faucet web app to get staging tokens.

<Card title="USDXM Faucet" icon="faucet" href="https://usdc-faucet.vercel.app/">
  Get testnet USDXM tokens instantly through a simple web interface.
</Card>

To use the faucet:

1. Visit [https://usdc-faucet.vercel.app/](https://usdc-faucet.vercel.app/)
2. Enter your wallet address or connect your wallet
3. Select the chain you want to receive tokens on
4. Request tokens

<Note>The faucet is intended for development use only and may have rate limits to prevent abuse.</Note>

## When should I use which option?

| Option                  | Best for                                                                            |
| ----------------------- | ----------------------------------------------------------------------------------- |
| **SDK (`stagingFund`)** | Automated flows, integration tests, and when you're already using the Crossmint SDK |
| **API**                 | Server-side integrations, custom tooling, or when you need direct HTTP access       |
| **Faucet web app**      | Quick manual testing, getting started quickly, or when you don't want to write code |

## Related guides

<CardGroup cols={2}>
  <Card title="Transfer Tokens" icon="arrow-right-arrow-left" href="/wallets/v0/guides/transfer-tokens">
    Learn how to transfer tokens between wallets
  </Card>

  <Card title="Check Balances" icon="wallet" href="/wallets/v0/guides/check-balances">
    Retrieve and manage wallet balances
  </Card>
</CardGroup>
