# How Stripe, Bridge, and Privy work together

Learn each company's role and which APIs and dashboards to use for your stablecoin-backed card program.

A stablecoin-backed card program combines Stripe Issuing with [Bridge](https://docs.stripe.com/stablecoins/ecosystem/bridge.md). Stripe issues and processes cards, while Bridge verifies cardholders and moves funds from the linked wallets. You can fund cards with a Bridge wallet, a [Privy](https://docs.stripe.com/stablecoins/ecosystem/privy.md) wallet, or another non-custodial wallet.

This page explains how the parts of a Bridge-based program fit together, so you know which API and dashboard to use at each step of the [integration process](https://docs.stripe.com/issuing/bridge-stablecoin-cards.md). If you fund cards from [Stripe financial accounts](https://docs.stripe.com/issuing/stablecoin-cards-for-financial-accounts.md) instead, you use only Stripe APIs and the Stripe Dashboard. After you review this page, [choose a funding strategy](https://docs.stripe.com/issuing/stablecoin-cards/funding-strategies.md).

## Roles

Each company owns a distinct part of the program. Stripe provides the card platform, Bridge handles customer verification and stablecoin transfers, and Privy optionally provides wallets and prebuilt card components.

Depending on the cardholder’s location, a partner sponsor bank or a Stripe entity issues the cards on the Visa or Mastercard network.

### Stripe

Stripe provides the card issuing and processing platform. It:

- Creates virtual and physical cards and supports digital wallets such as Apple Pay and Google Pay.
- Receives authorization requests from the card network, applies your [spending controls](https://docs.stripe.com/issuing/controls/spending-controls.md), and sends [Issuing events](https://docs.stripe.com/issuing/stablecoin-cards/authorizations.md) to your webhook endpoints.
- Provides [dispute management](https://docs.stripe.com/issuing/purchases/disputes.md), fraud tools, and optional [cardholder support](https://docs.stripe.com/managed-support.md).

### Bridge

Bridge handles customer onboarding and stablecoin transfers. It:

- Verifies individual and business customers (KYC and KYB) and grants the `cards` endorsement.
- Creates the corresponding Stripe object for each approved customer: a cardholder for consumer programs or a connected account for commercial programs.
- Pulls funds onchain from the linked wallet at authorization and returns funds for refunds, reversals, and expired authorizations.
- Generates monthly card statements.

### Privy

[Privy](https://docs.privy.io/) provides optional wallet infrastructure and integration components. It:

- Provides embedded non-custodial wallets that you can link to cards.
- Offers [prebuilt card components](https://docs.privy.io/financial-flows/cards/pre-built-components/overview) for consumer programs. These components handle cardholder onboarding, card management screens, and Bridge and Stripe API calls, reducing the integration work you build and maintain.

You don’t need Privy to use non-custodial wallets. You can link cards to any supported non-custodial wallet.

## APIs and dashboards

You use both Bridge and Stripe APIs to build your integration. The Stripe API uses form-encoded requests, and the Bridge API uses JSON.

| Task | API | Dashboard |
| --- | --- | --- |
| Onboard and verify customers | [Bridge Customers API](https://apidocs.bridge.xyz/platform/customers/overview) | Bridge Dashboard |
| Create cardholders | Bridge creates them for consumer programs. You create them for commercial programs with the [Cardholders API](https://docs.stripe.com/api/issuing/cardholders/create.md). | Stripe Dashboard |
| Create and manage cards | [Cards API](https://docs.stripe.com/api/issuing/cards/create.md) | Stripe Dashboard |
| Add funds for card spend | For Bridge wallets, the [Bridge wallets API](https://apidocs.bridge.xyz/platform/wallets/overview). For non-custodial wallets, an [onchain approval](https://docs.stripe.com/issuing/bridge-stablecoin-cards/noncustodial-wallets.md). | Bridge Dashboard, for Bridge wallets |
| Monitor authorizations and transactions | [Authorizations API](https://docs.stripe.com/api/issuing/authorizations.md) and [Transactions API](https://docs.stripe.com/api/issuing/transactions.md) | Stripe Dashboard |
| Handle disputes | [Disputes API](https://docs.stripe.com/api/issuing/disputes.md) | Stripe Dashboard |
| Generate statements | [Bridge statements API](https://apidocs.bridge.xyz/platform/cards/additional/statements) | Bridge Dashboard |

## Object mapping

Bridge creates and manages the Stripe object that represents each verified customer. This table shows how Bridge objects correspond to Stripe objects.

| Bridge | Stripe | Notes |
| --- | --- | --- |
| Individual customer | [Cardholder](https://docs.stripe.com/api/issuing/cardholders/object.md) | Consumer programs. Bridge creates the cardholder after approving the `cards` endorsement and returns its ID as `stripe_cardholder_id`. The cardholder is read-only for you, and Bridge manages its status. |
| Business customer | [Connected account](https://docs.stripe.com/api/accounts/object.md) | Commercial programs. Bridge creates the connected account on your Connect platform and returns its ID as `stripe_account_id`. You create cardholders for the business’s authorized users on that account. |
| Bridge wallet or non-custodial wallet address | `crypto_wallet` on the [Card](https://docs.stripe.com/api/issuing/cards/object.md) | The wallet that the card spends from. |
| Onchain transaction | `crypto_transactions` on the [Authorization](https://docs.stripe.com/api/issuing/authorizations/object.md) and [Transaction](https://docs.stripe.com/api/issuing/transactions/object.md) | Each onchain pull or return that Bridge submits for the authorization or transaction. |

## Consumer and commercial programs

You can issue cards to individuals (consumer programs) or to businesses and their employees (commercial programs). The program type determines which Stripe objects Bridge creates and who creates cardholders.

| Program | Consumer | Commercial |
| --- | --- | --- |
| Bridge customer type | `individual` | `business` |
| Stripe object that Bridge creates | Cardholder | Connected account |
| Who creates cardholders | Bridge | You, using the `Stripe-Account` header |
| Required Stripe setup | Stripe Issuing | Stripe Issuing on a Connect platform |

Both program types support Bridge wallets and non-custodial wallets. [Real-time authorizations](https://docs.stripe.com/issuing/controls/real-time-authorizations.md) depend on the wallet type, not the program type. They’re off by default, and Stripe can turn them on for your program. For non-custodial wallets, Stripe can turn them on only for chains that confirm transactions quickly enough. Learn more about [real-time authorizations for stablecoin-backed cards](https://docs.stripe.com/issuing/stablecoin-cards/authorizations.md#real-time-authorizations).

## How a card purchase works

The following diagram shows how Bridge pulls funds onchain from a card’s linked wallet at authorization.

A platform's cardholders use cards funded by stablecoin wallets, with Bridge pulling funds onchain at authorization. (See full diagram at https://docs.stripe.com/issuing/stablecoin-cards/how-it-works)

```text
[platform] --> [cardholder]
[cardholder] --> [card]
[card] -- Spends from --> [Stablecoin wallet]
[Bridge] -- Pulls funds at authorization --> [Stablecoin wallet]
```

When a cardholder uses a stablecoin-backed card, the purchase settles in USD or OUSD while funds move onchain from the linked wallet:

1. The cardholder pays at a business, and the card network sends an authorization request to Stripe.
2. Stripe checks the card’s spending controls.
3. Stripe confirms that the linked wallet has enough funds, plus an active onchain approval for non-custodial wallets, and Bridge submits an onchain transaction to pull the funds.
4. Stripe approves the authorization and sends an `issuing_authorization.created` event.
5. When the business captures the payment, Stripe creates a transaction. If the captured amount differs from the authorized amount, Bridge pulls or returns the difference onchain.

For businesses that commonly capture more than they authorize, such as restaurants, the amount held from the wallet can include a reserve above the authorized amount. Learn more about [authorizations and webhooks](https://docs.stripe.com/issuing/stablecoin-cards/authorizations.md) and [holds for reserves and fees](https://docs.stripe.com/issuing/bridge-stablecoin-cards/hold-details.md).
