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

# Customer eligibility and KYC

> Manage customer eligibility for card issuance and understand how Cardholder objects are created

To issue a card to a customer, you must request a `cards` endorsement on the Bridge [Customer](/platform/customers/customers/api) 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. In addition, Bridge and Stripe perform validations on the address and other information provided for the Customer object.

When the `cards` endorsement is approved, Bridge automatically creates a[ Cardholder](https://docs.stripe.com/api/issuing/cardholders) object and returns the cardholder ID in the customer object. You use this ID to create cards via the Stripe API. The ability to create and use cards is dependent on an active approved `cards` endorsement.

This page provides an overview of the cards endorsement request process, how to see the endorsement's requirements and status, and common issues that may occur for a customer requesting the cards endorsement.

## Request a KYC link for a cards endorsement

Whether you're onboarding a new customer or issuing a card to an existing one, use the [Customer KYC Link](/platform/customers/customers/kyclinks) endpoint with a `?endorsement=cards` query parameter.

```bash theme={null}
GET /v0/customers/<customerID>/kyc_link?endorsement=cards
```

When requesting multiple endorsements at once (for example, cards and SEPA), use:

```text theme={null}
?endorsement[]=cards&endorsement[]=sepa
```

The response returns a short-lived URL:

```json theme={null}
{
    "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](https://apidocs.bridge.xyz/api-reference/customers/get-a-single-customer-object) 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`:

```json theme={null}
{
    "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`](https://docs.stripe.com/api/events/types#event_types-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](/platform/customers/customers/missing-requirements-and-issues), the following are specific to the `cards` endorsement:

| Issue                                                 | Description                                                                                                                                                                                                                       |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `endorsement_not_available_in_customers_region`       | Cards 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_city`                      | The 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_line1`             | The first address line must contain at least 4 characters.                                                                                                                                                                        |
| `residence_address_invalid_postal_code`               | A 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_code`          | The subdivision code was omitted or is invalid.                                                                                                                                                                                   |
| `address_of_residence_postal_code_invalid_format`     | The individual customer's residence address has an invalid postal code.                                                                                                                                                           |
| `address_of_operation_postal_code_invalid_format`     | The commercial card business customer's address of operation has an invalid postal code.                                                                                                                                          |
| `address_of_incorporation_postal_code_invalid_format` | For commercial card business customer's address of incorporation has an invalid postal code.                                                                                                                                      |
| `phone_number_invalid_format`                         | The customer's phone number was invalid. For US numbers, the phone number must be exactly 10 digits. For non-US numbers, provide a phone number in E.164 format (e.g. `+14155552671`) including the country code prefixed with +. |

For the `cards` endorsement, Bridge and Stripe apply stricter validations on the residence address, address of operation, or address of incorporation for the customer. You can see a comprehensive list of postal code validations performed by country [here](/platform/customers/customers/postal-code-validation).

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