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

# Commercial issuing

> Issue stablecoin-backed cards to business customers via Bridge and Stripe Connect

Bridge stablecoin-backed cards for commercial use integrate Stripe Issuing with Stripe Connect and Bridge's stablecoin infrastructure. This lets you build a global commercial card program where each business customer gets their own Stripe connected account, and authorized users within that business can be issued cards that spend from a stablecoin wallet.

## Entity model

Each business customer is represented across two systems:

| Object            | System | Description                                                                                                                          |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Customer          | Bridge | Holds the business's identity, KYC status, and cards endorsement. You create and manage this via the Bridge API.                     |
| Connected Account | Stripe | Created automatically by Bridge once the cards endorsement is approved. Represents the business within your Stripe Connect platform. |

The Bridge Customer and Stripe Connected Account are linked 1:1. Within each Connected Account, you create Cardholders and Cards via the Stripe API using the `Stripe-Account` header. All cardholders and cards for a business are scoped to that Connected Account and appear under it in the Stripe Dashboard.

## How it differs from consumer issuing

|                                     | Consumer                      | Commercial              |
| ----------------------------------- | ----------------------------- | ----------------------- |
| **Customer type**                   | Individual                    | Business                |
| **Stripe object created by Bridge** | Cardholder                    | Connected Account       |
| **Who creates the Cardholder**      | Bridge                        | You, via Stripe API     |
| **Stripe setup**                    | Stripe Issuing                | Stripe Connect Platform |
| **Real-time auth webhook**          | Not supported                 | Supported               |
| **Primary funding strategy**        | Noncustodial or Bridge Wallet | Bridge Wallet           |

## Technical integration APIs

| Step                                 | API              |
| ------------------------------------ | ---------------- |
| Onboard business customers           | Bridge API       |
| Create cardholders                   | Stripe API       |
| Create and manage cards              | Stripe API       |
| Card spend APIs and webhooks         | Stripe API       |
| Additional card features             | Stripe API       |
| KYC and cards endorsement management | Bridge Dashboard |
| Cards management                     | Stripe Dashboard |

## Step 1: Set up Bridge developer and Stripe account

Work with Bridge to get a developer account set up on Bridge. Separately, set up a new Stripe account as a [Connect Platform](https://stripe.com/connect/platforms).

Bridge will send you a URL (Stripe App Install Link) to associate your Bridge developer account to the Stripe platform account and activate Stripe Issuing. This flow connects Bridge to your Stripe platform.

## Step 2: Create customer

Each business you onboard is represented on Bridge as a [business-typed Customer](/platform/customers/customers/api#business-customer-creation) and on Stripe as a [connected Account](https://docs.stripe.com/api/v2/core/accounts). Bridge manages creating the Stripe connected account within your platform—you only need to create the customer on the Bridge API or Dashboard and request the `cards` endorsement.

Once the `cards` endorsement is approved, Bridge creates the Stripe connected account automatically. The account ID is returned in the customer object:

```json theme={null}
{
    "id": "edf01834-552b-41c9-8506-1bebc7a9741d",
    "type": "business",
    "status": "pending",
    "stripe_account_id": "acct_...",
    "endorsements": [
        {
            "name": "cards",
            "status": "complete",
            "requirements": {
                "complete": [
                    "business_name",
                    "email_address",
                    "minimal_source_of_funds_data",
                    "proof_of_source_of_funds_document",
                    "adverse_media_screen",
                    "sanctions_screen",
                    "fincen_special_measures_screen",
                    "pre_onboarding_check"
                ],
                "issues": []
            }
        }
    ]
}
```

Use the `stripe_account_id` as the `Stripe-Account` header in all subsequent Stripe API calls for this business.

## Step 3: Create cardholder

Unlike consumer issuing, you create the Cardholder yourself via the Stripe API. Include the business's `stripe_account_id` in the `Stripe-Account` header. For production, you must surface the authorized user terms, record the IP and date the user accepted them, and submit that in the request:

```bash theme={null}
curl -X POST https://api.stripe.com/v1/issuing/cardholders \
  -u sk_live_…: \
  -H "Stripe-Account: acct_CONNECTED_ACCOUNT_ID" \
  -d "name=Jenny Rosen" \
  -d "email=jenny.rosen@example.com" \
  -d "phone_number=+18008675309" \
  -d "status=active" \
  -d "type=individual" \
  -d "individual[first_name]=Jenny" \
  -d "individual[last_name]=Rosen" \
  -d "individual[dob][day]=1" \
  -d "individual[dob][month]=11" \
  -d "individual[dob][year]=1981" \
  -d "individual[user_terms_acceptance][lead][ip]=..." \
  -d "individual[user_terms_acceptance][lead][date]=..." \
  -d "billing[address][line1]=510 Townsend Street" \
  -d "billing[address][city]=San Francisco" \
  -d "billing[address][state]=CA" \
  -d "billing[address][postal_code]=94111" \
  -d "billing[address][country]=US"
```

Multiple cardholders within the same business can share the same Bridge Wallet.

## Step 4: Create card

Use the cardholder ID from the previous step to create a card via the Stripe API. Include the `Stripe-Account` header and specify the wallet using the `crypto_wallet` parameter. Bridge Wallet is the primary funding strategy for commercial cards:

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

A card and its Bridge Wallet must belong to the same business. Multiple cards within the same business can share a single Bridge Wallet.

See [Funding strategies](/platform/cards/overview/funding-strategies) for the full `crypto_wallet` parameter reference. Noncustodial wallets (`type=standard`) are also supported for commercial cards.

## Step 5: Test card spend

Once your card is activated, you can begin testing card spend immediately. View card details in the Stripe Dashboard or embed a [Stripe Issuing Element](https://docs.stripe.com/issuing/elements) to expose them to cardholders without bringing your backend into PCI scope.

### Real-time authorization

Commercial issuing supports the [`issuing_authorization.request`](https://docs.stripe.com/issuing/controls/real-time-authorizations) webhook, which gives you control over individual authorization decisions. Configure the webhook endpoint in the Stripe Dashboard—your endpoint must respond within 2 seconds with an approval or denial.

<Info>
  Bridge may also independently reject an authorization even if your endpoint approves it—for example, due to insufficient wallet balance, onchain transaction screening, or velocity limits. Always rely on `issuing_authorization.created` and `issuing_authorization.updated` events for the final authorization outcome.
</Info>

### Webhooks

Use Stripe Issuing webhooks to receive notifications about authorizations and transactions. The lifecycle is the same as consumer issuing—see the [Webhooks guide](/platform/cards/overview/webhooks) for the full event reference.

## Additional card features

All Stripe Issuing features are available. See the [additional card features guide](/platform/cards/features) for details on physical cards, mobile wallets, spending limits, disputes, and fraud management.

**Cardholder support:** Phone support is optional for commercial programs but recommended. Stripe's support agents can handle this on your behalf in English or Spanish. Contact your account manager for details.

**Fraud liability:** As the platform developer, you are ultimately liable for fraud on your platform. Bridge recommends enabling [3DS](https://docs.stripe.com/issuing/3d-secure) and [advanced fraud models](https://docs.stripe.com/issuing/controls/advanced-fraud-tools) for commercial programs.

## Developer support

For support inquiries, use your dedicated Bridge Slack cards channel. A Bridge representative will help resolve issues across both the Stripe and Bridge APIs.
