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

# Funding strategies

> Choose between noncustodial and Bridge-custodied wallets to fund card spend

When creating a card via the Stripe API, you specify the source of funds using the `crypto_wallet` parameter. Bridge supports two funding strategies for the Stripe integration:

<table>
  <thead>
    <tr>
      <th style={{textAlign: "left"}}>Strategy</th>
      <th style={{whiteSpace: "nowrap", textAlign: "left"}}><code>crypto\_wallet\[type]</code></th>
      <th style={{textAlign: "left"}}>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>**Noncustodial**</td>
      <td><code>standard</code></td>
      <td>Funds pulled just-in-time from a wallet your customer controls. Requires an onchain approval to Bridge's smart contract.</td>
    </tr>

    <tr>
      <td>**Bridge Wallet**</td>
      <td><code>bridge\_wallet</code></td>
      <td>Funds pulled from a [Bridge-custodied wallet](/platform/wallets/overview) you manage via the Bridge API.</td>
    </tr>

    <tr>
      <td>**Stripe Financial Account**</td>
      <td>N/A</td>
      <td>Funds held in a Stripe-managed financial account. This is a Stripe-native feature that doesn't require Bridge. See the [Stripe Financial Accounts documentation](https://docs.stripe.com/financial-accounts) for details.</td>
    </tr>
  </tbody>
</table>

## Noncustodial

With the noncustodial strategy, Bridge pulls funds directly from a wallet controlled by your customer at the time of each card authorization. The customer (or your application) must first set up an onchain approval granting Bridge's smart contract permission to spend from the wallet. Bridge supports direct pulls from noncustodial wallets on Tempo, Solana, Base, Linea, and we are continually adding support for more EVM chains.

This strategy works well when your customers already hold stablecoin balances in their own wallets and you want them to spend directly without maintaining a separate card balance.

<CodeGroup>
  ```shellscript Tempo and EVM theme={null}
  curl -X POST https://api.stripe.com/v1/issuing/cards \
    -u sk_live_…: \
    -d cardholder=ich_1234 \
    -d currency=usd \
    -d type=virtual \
    -d status=active \
    -d "crypto_wallet[chain]=tempo" \
    -d "crypto_wallet[currency]=usdc" \
    -d "crypto_wallet[type]=standard" \
    -d "crypto_wallet[address]=0x82f30B63C1784aA21b754ddbcE52d58B40FF0eBE"
  ```

  ```shellscript Solana theme={null}
  curl -X POST https://api.stripe.com/v1/issuing/cards \
    -u sk_live_…: \
    -d cardholder=ich_1234 \
    -d currency=usd \
    -d type=virtual \
    -d status=active \
    -d "crypto_wallet[chain]=solana" \
    -d "crypto_wallet[currency]=usdc" \
    -d "crypto_wallet[type]=standard" \
    -d "crypto_wallet[address]=6rXzF4UzvU9qxkRxUP3sTrPJ3YudA8eutFHVz7zcmV6q"
  ```
</CodeGroup>

<Info>
  For Solana, pass the wallet owner address—not the associated token account address. Bridge derives the token account automatically from the owner address and currency.
</Info>

A wallet can only be linked to one card at a time. Setting up the onchain approval is described in the [Noncustodial wallets guide](/platform/cards/overview/noncustodial).

## Bridge Wallet

With the Bridge Wallet strategy, funds are pulled from a [Bridge Wallet](/platform/wallets/overview) that you control via the Bridge API. You're responsible for funding and managing the wallet balance.

This strategy works well when you want centralized control over card balances or when integrating cards into an existing Bridge wallet product.

```bash theme={null}
curl -X POST https://api.stripe.com/v1/issuing/cards \
  -u sk_live_…: \
  -d cardholder=ich_1234 \
  -d currency=usd \
  -d type=virtual \
  -d status=active \
  -d "crypto_wallet[chain]=solana" \
  -d "crypto_wallet[currency]=usdc" \
  -d "crypto_wallet[type]=bridge_wallet" \
  -d "crypto_wallet[address]=8gN8ioFOObaraWxRcb5p9QHxBSQG8fgHhE95LoAGZXCK"
```

The `address` is the address of the [Bridge Wallet](/api-reference/bridge-wallets/get-all-bridge-wallets#response-data-items-address) you want to fund the card from. Once the card is activated, Bridge debits the wallet balance at the time of each authorization.

## Comparing strategies

|                               | Noncustodial                                                    | Bridge Wallet                  |
| ----------------------------- | --------------------------------------------------------------- | ------------------------------ |
| **Who controls the wallet**   | Customer (or your app)                                          | You, via Bridge API            |
| **Onchain approval required** | Yes—before first spend                                          | No                             |
| **Funds source**              | Customer's external wallet                                      | Bridge-custodied wallet        |
| **Excess funds returned to**  | External wallet                                                 | Bridge Wallet                  |
| **Balance tracking**          | Via onchain state; Bridge doesn't track external wallet balance | Via Bridge Wallets API         |
| **Best for**                  | Customers spending from their own wallet                        | Centralized balance management |

## The `crypto_wallet` parameters

| Parameter  | Description                                                                                                                                                                                   |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chain`    | The chain the wallet is on. For example: `solana`, `base`, `world_chain`.                                                                                                                     |
| `currency` | The stablecoin to spend from, for example `usdc`. Separate from the top-level `currency` param (fiat billing currency, always `usd`). Contact Bridge to confirm your stablecoin is supported. |
| `type`     | `standard` for noncustodial wallets, `bridge_wallet` for Bridge-custodied wallets.                                                                                                            |
| `address`  | The wallet address. For Solana, use the owner address—not the associated token account address.                                                                                               |
