Skip to main content
To issue a card to a customer, you must request a cards endorsement on the Bridge Customer object. This endorsement has specific requirements that differ from other endorsements, and a customer’s eligibility may also depend on whether your card program is approved to operate in a given region. When the cards endorsement is approved, Bridge automatically creates a Cardholder object and returns the cardholder ID in the customer object. You use this ID to create cards via the Stripe API. Whether you’re onboarding a new customer or issuing a card to an existing one, use the Customer KYC Link endpoint with a ?endorsement=cards query parameter.
GET /v0/customers/<customerID>/kyc_link?endorsement=cards
When requesting multiple endorsements at once (for example, cards and SEPA), use:
?endorsement[]=cards&endorsement[]=sepa
The response returns a short-lived URL:
{
    "url": "https://bridge.withpersona.com/inquiry?inquiry-id=inq_CncY1CqRivqDMcjkxW9PMv2aPBnE"
}
This opens a flow for the customer to complete KYC or confirm their previously-provided information is up to date. Don’t store this URL—it may expire at any time. If the customer completed KYC within the past 24 hours, they’re immediately approved for the cards endorsement. Otherwise, approval is not immediate—you must monitor the endorsement status via the Customer endpoint or webhooks.

Check endorsement status

The cards endorsement status is available on the Customer object in the endorsements array. You can also receive updates via the customer webhook event category. Once approved, the customer object will contain both the endorsed status and a stripe_cardholder_id:
{
    "id": "1e210e5b-700e-41e6-a62a-0eb0b6ac1967",
    "first_name": "Jenny",
    "last_name": "Rosen",
    "email": "jenny.rosen@example.com",
    "status": "active",
    "type": "individual",
    "stripe_cardholder_id": "ich_1SVf3CG6FooBAru7mB2MSrDY",
    "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",
                    "database_lookup",
                    "government_id_verification",
                    "customer_region_supports_cards",
                    "customer_address_is_valid_for_cards"
                ],
                "pending": [],
                "missing": null,
                "issues": []
            }
        }
    ]
}
The stripe_cardholder_id represents a cardholder already created in Stripe that you can use directly to create cards via the Stripe API. Bridge manages the cardholder object—the Stripe Cardholder API is read-only for Bridge-managed cardholders. If you use Stripe webhooks, you’ll also receive an issuing_cardholder.created event when the cardholder is created.

Endorsement expiry and renewal

The cards endorsement is valid for 24 hours after approval. If no card is created within that window, the endorsement automatically transitions to revoked—this is a compliance requirement to ensure customer information is confirmed within 24 hours of card creation. When the endorsement is revoked, Bridge automatically transitions the Cardholder to an inactive status. To re-enable the customer, request a new KYC link for the cards endorsement. Once the customer completes the fresh KYC confirmation, the endorsement is re-approved and Bridge reactivates the cardholder in Stripe.

Eligibility issues

If there are eligibility issues, the endorsement will be in an incomplete state with details in the issues field. In addition to standard issues, the following are specific to the cards endorsement:
IssueDescription
endorsement_not_available_in_customers_regionCards isn’t supported in the customer’s country or state—either due to MTL regulations or because your program hasn’t been approved for that region.
residence_address_invalid_cityThe city name is invalid. For cards, city names have a maximum length of 30 characters and may only include letters, spaces, hyphens, and periods.
residence_address_invalid_address_line1The first address line must contain at least 4 characters.
residence_address_invalid_postal_codeA valid postal code is required (4–10 characters). Some countries without postal code systems receive a default, but most require one.
residence_address_invalid_subdivision_codeThe subdivision code was omitted or is invalid.

Managing KYC issues in the Bridge Dashboard

You can view and manage KYC status for all customers in the Customers section of the Bridge Dashboard. When a customer is missing required steps, their page will indicate what’s outstanding. When a fresh KYC is needed for the cards endorsement, the page will indicate that cards access is pending.