Quick Start - Stablecoin Funding in Sandbox

How to fund your Lithic instance with stablecoin in sandbox

For stablecoin-enabled programs, you will need to "fund" your Lithic instance in Sandbox before you can test spending the balance on cards or moving funds through the Book Transfer endpoints. On a stablecoin program, funding happens by sending stablecoin on-chain to a Financial Account's deposit address. Sandbox works exactly the same way as production, with one difference: Sandbox deposit addresses live on public test networks ("testnets"), so you fund them by sending testnet USDC, which is freely mintable and has no monetary value.

Stablecoin funding is currently in a pilot and is enabled per program. To learn more, contact your customer success manager.

On this page you will learn how to:

  • Create a Financial Account and retrieve its blockchain deposit addresses
  • Set up an external testnet wallet and obtain testnet USDC
  • Fund your sandbox account by sending USDC on-chain
  • Confirm that the funds have settled

If you are new to stablecoin at Lithic, start with Stablecoin at Lithic for an overview of the product and Stablecoin Payments Lifecycle for the payment events referenced below.


Step 1 - Create a Financial Account

A stablecoin balance lives on an ISSUING Financial Account. There is no stablecoin-specific creation step: on a fully configured program, the Financial Account is created automatically when you Create an Account Holder, and on a stablecoin-enabled program it is provisioned with blockchain deposit addresses as part of that setup. See Financial Accounts for the full account creation flow.

Use the account_token from the Create an Account Holder response to locate the account with List Financial Accounts:

curl "https://sandbox.lithic.com/v1/financial_accounts?account_token=9f0c86f1-d6d4-4d1e-8b2c-2a45e3f0b514&type=ISSUING" \
  -H "Authorization: YOUR_API_KEY"

The token of the returned Financial Account is the financial_account_token used throughout the rest of this guide.

Step 2 - Retrieve the deposit addresses

Every stablecoin-enabled Financial Account is provisioned with a deposit address on each blockchain network configured for your program. Retrieve them with Get Financial Account — they are returned in the blockchain_addresses parameter, keyed by the full name of each network:

curl https://sandbox.lithic.com/v1/financial_accounts/6127238d-cb85-50bc-86aa-264654a11be9 \
  -H "Authorization: YOUR_API_KEY"

Below is a sample response:

{
  "token": "6127238d-cb85-50bc-86aa-264654a11be9",
  "type": "ISSUING",
  "routing_number": null,
  "account_number": null,
  "blockchain_addresses": {
    "ETHEREUM": "0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"
  },
  "status": "OPEN"
}

Deposit addresses are provisioned asynchronously when the Financial Account is created. If blockchain_addresses is not yet populated for your Financial Account, either re-read the account after a short wait, or subscribe to the financial_account.updated webhook to be notified when the addresses are added (see Types of Events).

In Sandbox, each address is provisioned on the network's public testnet rather than its mainnet:

blockchain_addresses keySandbox network
ETHEREUMEthereum Sepolia
BASEBase Sepolia
SOLANASolana Devnet

The Sandbox API surface is identical to production — the keys are always the network's mainnet name — so no integration changes are needed when you move to production. Only where the address lives, and the value of the funds it receives, differ.

📘

If blockchain_addresses stays null, your sandbox program is not configured for stablecoin funding. Contact your implementation manager to have it enabled.

Step 3 - Set up a testnet wallet with test USDC

In production, a pay-in begins when your customer sends stablecoin to one of the deposit addresses from Step 2. In Sandbox, you play the part of the customer, sending testnet USDC from your own external crypto wallet. Using Ethereum Sepolia as the example:

  1. Install a wallet that supports test networks and enable the Sepolia network in its settings
  2. Mint testnet USDC to your wallet's address using the USDC Faucet, selecting Ethereum Sepolia as the network
  3. Obtain a small amount of Sepolia ETH from a public faucet. Even on a testnet, the sending wallet pays the network's gas fee in its native asset (see Gas Fees)

Everything above is free: testnet assets are minted at will and carry no monetary value.

📘

If the minted USDC does not appear in your wallet, you may need to import the testnet USDC token contract for the network manually.

The same flow applies on the other networks — mint USDC on Base Sepolia or Solana Devnet from the USDC Faucet, using a wallet that supports that network.

Step 4 - Send the USDC to the deposit address

Using your wallet's send function — with the wallet switched to the test network — send USDC to the Financial Account's deposit address from Step 2. Stablecoin pay-ins are credited in cents of US dollars, so sending 100 USDC funds the account with 10000.

⚠️

Double-check the network before sending. A Sandbox deposit address is only monitored on its test network — assets sent on any other network, including the real (mainnet) network, will not be credited and are generally unrecoverable. Never send real assets to a Sandbox address.

Step 5 - Confirm the funds settled

There are no lifecycle actions to drive for a pay-in. The payment moves through STABLECOIN_RECEIVED, STABLECOIN_REVIEWED, and STABLECOIN_SETTLED automatically. All three events typically arrive within a few minutes of your transfer confirming on the testnet. Treat the presence of a STABLECOIN_SETTLED event as the signal that the funds are spendable — see Stablecoin Payments Lifecycle.

Retrieve the payment with List Payments, filtering on the Financial Account:

curl "https://sandbox.lithic.com/v1/payments?financial_account_token=6127238d-cb85-50bc-86aa-264654a11be9" \
  -H "Authorization: YOUR_API_KEY"

Below is a sample response, trimmed to the parameters most relevant to the lifecycle. Note that status is SETTLED and the three lifecycle events are present:

{
  "data": [
    {
      "category": "STABLECOIN",
      "status": "SETTLED",
      "result": "APPROVED",
      "token": "6d5a2718-9b79-4473-aa1e-6bbf7433ea6f",
      "financial_account_token": "6127238d-cb85-50bc-86aa-264654a11be9",
      "method": "STABLECOIN",
      "method_attributes": {
        "chain": "ETHEREUM",
        "transaction_hash": "0x7351585460bd657f320b9afa02a52c26d89272d0d10cc29913eb8b28e64fd906"
      },
      "settled_amount": 10000,
      "pending_amount": 0,
      "currency": "USD",
      "events": [
        {
          "amount": 10000,
          "type": "STABLECOIN_RECEIVED",
          "result": "APPROVED",
          "detailed_results": ["APPROVED"],
          "created": "2026-05-05T18:16:09Z",
          "token": "34c5b9d2-2d6a-540b-90fe-fa202b418242",
          "external_id": "0x7351585460bd657f320b9afa02a52c26d89272d0d10cc29913eb8b28e64fd906"
        },
        {
          "amount": 10000,
          "type": "STABLECOIN_REVIEWED",
          "result": "APPROVED",
          "detailed_results": ["APPROVED"],
          "created": "2026-05-05T18:16:11Z",
          "token": "5f6255f8-4016-5e66-aedf-2e3c76027e04",
          "external_id": null
        },
        {
          "amount": 10000,
          "type": "STABLECOIN_SETTLED",
          "result": "APPROVED",
          "detailed_results": ["APPROVED"],
          "created": "2026-05-05T18:16:11Z",
          "token": "7eec03f2-2fac-4485-bc4b-0526d8bff3ba",
          "external_id": null
        }
      ],
      "created": "2026-05-05T18:16:09Z",
      "updated": "2026-05-05T18:16:11Z"
    }
  ],
  "has_more": false
}

The external_id on the STABLECOIN_RECEIVED event carries the on-chain transaction hash of your transfer — the same hash your wallet reports, which you can look up on the testnet's block explorer (for example, Sepolia Etherscan).

If you subscribe to payment transaction webhooks, the pay-in is also delivered as payment_transaction.created and payment_transaction.updated events with category set to STABLECOIN. See Types of Events.

Once the payment reaches STABLECOIN_SETTLED, the funds are in the available balance of the Financial Account and can be spent on cards or moved with Book Transfers, like any other prepaid balance.

Relevant Guides


Did this page help you?