Skip to main content
As of April 2026, we’re integrating Bridge’s stablecoin-backed card capabilities with Stripe Issuing. This combined stack gives you a seamless card issuing API with the full stablecoin capabilities of Bridge and operational and compliance expertise of Stripe. If you’re looking for the previous Bridge Cards API, see the legacy documentation.
Bridge stablecoin-backed cards integrated with Stripe, enable you to build a flexible, global consumer card program. Cardholders spend just-in-time from noncustodial or custodial stablecoin wallets anywhere Visa is accepted. This guide covers how to connect your Stripe account to Bridge and issue your first card.

Entity model

Each individual cardholder is represented in two systems:
ObjectSystemDescription
CustomerBridgeHolds the cardholder’s identity, KYC status, and cards endorsement. You create and manage this via the Bridge API.
CardholderStripeCreated automatically by Bridge once the cards endorsement is approved. Used to create and manage cards via the Stripe API.
The Bridge Customer and Stripe Cardholder are linked 1:1. You don’t need to create the Stripe Cardholder directly—Bridge handles that and returns the stripe_cardholder_id on the customer object. All card operations (create, freeze, manage spending controls) are done via the Stripe API using that cardholder ID.

Onboarding process

When launching a card program with Bridge, we outline the end-to-end requirements from day one and tailor the onboarding approach to your program design. You’ll work with a dedicated implementation expert who manages requirements across our BIN sponsor, Visa, and other partners to get you live as soon as possible. A simple overview of our onboarding process:
Step# usersTimeline
Kickoff0 (sandbox only)After signing addendum
Production testing10 (internal employees)~2 weeks after kickoff
Go Live launchUnlimited (external customers)6-8 weeks after kickoff
Onboarding typically takes 6-8 weeks from kickoff to serving external customers. After an initial kickoff call, we share an Asana board that outlines the required documents and deadlines for your desired launch date. Upload the required documents as soon as you can so our team can review and approve the full launch. In parallel, you’ll work through the technical integration across supported chains and funds flows outlined below. We’re continually adding new features, supported chains, and product capabilities, so your feedback helps shape what we build next.

Technical integration

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 in the Stripe Dashboard. Bridge will send you a URL (Stripe App Install Link) to associate the Bridge Developer to the Stripe account, and activate Stripe Issuing on this account. This flow will connect Bridge to your Stripe account. Here’s what the flow looks like:
Stripe app install link authorization promptBridge developer account connection flowCompleted Bridge and Stripe account association

Step 2: Create Customer

The consumer cardholder is represented on the Bridge side as an individual-typed Customer and on the Stripe side as a Cardholder. Bridge manages creating the Stripe Cardholder object, so you only need to create the customer object on the Bridge API. Create a customer using Bridge’s Customer API or Dashboard, and request the cards endorsement on Bridge as described in the cards endorsement KYC guide. After the cards endorsement is approved, the Stripe Cardholder ID is automatically created and visible in the customer object in the API and webhook events:
{
    "id": "1e210e5b-700e-41e6-a62a-0eb0b6ac1967",
    "first_name": "Satoshi",
    "last_name": "Nakamoto",
    "email": "satoshi@internet.site",
    "status": "active",
    "type": "individual",
    "persona_inquiry_type": "gov_id_db",
    "stripe_cardholder_id": "ich_1SVf3CG6FooBAru7mB2MSrDY",
    "created_at": "2026-01-08T19:24:48.448Z",
    "updated_at": "2026-01-08T19:25:50.758Z",
    "rejection_reasons": [],
    "has_accepted_terms_of_service": true,
    "endorsements": [
        ...,
        {
            "name": "cards",
            "status": "approved",
            "requirements": {
                "complete": [
                    "terms_of_service_v1",
                    "first_name",
                    "last_name",
                    "tax_identification_number",
                    "email_address",
                    "address_of_residence",
                    "date_of_birth",
                    "proof_of_address",
                    "sanctions_screen",
                    "pep_screen",
                    "blocklist_lookup",
                    "min_age_18",
                    "valid_date_of_birth",
                    "selfie_verification",
                    "government_id_rejection_checks_passed",
                    "government_id_review_checks_passed",
                    "pre_onboarding_check",
                    "has_base",
                    "database_lookup",
                    "customer_region_supports_cards",
                    "customer_address_is_valid_for_cards"
                ],
                "pending": [],
                "missing": null,
                "issues": []
            }
        }
    ],
    "future_requirements_due": [],
    "requirements_due": [
        "external_account"
    ],
    "capabilities": {
        "payin_crypto": "active",
        "payout_crypto": "active",
        "payin_fiat": "pending",
        "payout_fiat": "pending"
    },
    "state": "WA",
    "country": "USA"
}
This stripe_cardholder_id represents a cardholder already created in Stripe that you can use directly to create cards. If you use Stripe webhooks, you can also receive an issuing_cardholder.created webhook event for cardholder creation notifications. The Stripe Cardholder API is read-only for Bridge-managed cardholders at the moment, but you can use the cardholder ID to create a card. Bridge automatically manages the status of the cardholder. As per existing bank partner rules (also outlined in the guide linked above), the cards endorsement requires the customer to have completed the KYC process or confirmed their information within the past 24 hours. After 24 hours pass without a card being created, the endorsement is automatically revoked, and the cardholder transitions to an inactive status in Stripe. You can re-request the endorsement to refresh the customer’s KYC status, which automatically reactivates the cardholder in Stripe.

Step 3: Create Card

Use the created cardholder ID to create a card in the Stripe API. In addition to the standard card creation parameters, you can specify the wallet and balance to associate with the card using the crypto_wallet parameter. Unlike the Bridge API, the Stripe API uses x-www-form-urlencoded requests. This is a full-featured version of the Stripe Issuing API that has native stablecoin and noncustodial wallet spending capabilities. You can issue a card from any chain and currency supported by Bridge’s card platform. Here are some example requests for various different types of cards and wallets:
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"
The crypto_wallet parameters:
  • chain: The chain the wallet is on.
  • currency: The stablecoin balance to spend from. Check with Bridge to confirm your stablecoin is supported.
    • This is different from the main currency parameter, which represents the fiat currency that the card is charged in. Currently, this should always be usd.
  • type: The type of funds flow to use. Specify standard for noncustodial wallets. The following values are available by default:
    • standard: noncustodial wallet with an approval to Bridge’s smart contract.
    • bridge_wallet: the associated wallet is a Bridge Wallet custodied by Bridge.
  • address: The address of the crypto wallet.
    • For Solana, do not specify the associated token account address in this request, as Bridge will automatically derive it from the address and currency specified. In this example, the account’s owner address is 6rXzF4UzvU9qxkRxUP3sTrPJ3YudA8eutFHVz7zcmV6q but the USDC token account is G95sWJoUTazecyaUz992djQoMzhiqoFz3CgRXxiuScAp.
If you issued a card to spend from a noncustodial wallet, you must also approve Bridge’s smart contract on the relevant chain in order for the card to be able to spend out of your wallet balance. More details are available in the noncustodial spend guide on how to set up this approval on a per-chain basis.

Step 4: Test card spend

After your card is activated, you can immediately begin testing card spend. To view the card’s details, use the Stripe Dashboard. To display them to your users, embed an Issuing Element into your UI, which uses a Stripe-hosted iframe to serve sensitive card details, keeping your application out of PCI DSS scope. At the time of authorization, Bridge pulls funds from the card’s linked noncustodial wallet on a just-in-time basis, relying on the prior onchain approval. In addition to standard authorization checks, the authorization is rejected if the approval isn’t active, is insufficient for the purchase amount, or there are insufficient funds in the wallet. See this example debit transaction onchain. View your card authorizations using Stripe’s Issuing Authorization endpoints and webhooks.
We can’t automatically give control of the issuing_authorization.request webhook by default due to transaction submission latency requirements. Contact Bridge if you need to make authorization decisions.
When a card is authorized at a merchant, Bridge validates that the linked noncustodial wallet has an active onchain approval and sufficient funds for the authorization (minus pending transactions from previous authorizations), and an onchain transaction is submitted to pull the funds just-in-time.

Webhooks

Use Stripe Issuing webhooks to receive notifications about card authorizations and transactions. Key events include issuing_authorization.created, issuing_authorization.updated, and issuing_transaction.created. Bridge also emits its own webhooks for KYC status changes. See the Webhooks guide for the full event reference and onchain lifecycle details.

Next steps

The integration guide above covers the core setup. Explore these pages for more detail on each topic:

Customer eligibility and KYC

Endorsement mechanics, Stripe Cardholder creation, 24-hour expiry, and eligibility issues.

Funding strategies

When to use noncustodial vs Bridge Wallet, and the full crypto_wallet parameter reference.

Noncustodial wallets

Step-by-step onchain approval setup for Solana and EVM chains.

Webhooks

Stripe Issuing webhook events, the onchain lifecycle, and Bridge webhooks for KYC.

Additional card features

Physical cards, mobile wallets, spending limits, disputes, fraud tools, and dashboards.

Statements

Monthly card statements via the Bridge API.

Sandbox

Testing with Stripe test mode and the Bridge sandbox environment.

Developer support

For support inquiries related to your card issuing program, continue to use your dedicated Bridge Slack cards channel set up at kickoff. A Bridge representative will help you resolve issues whether they touch the Stripe or Bridge Card Issuing APIs.