> ## Documentation Index
> Fetch the complete documentation index at: https://docs.methodfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Card Linking & Checkout

> Enrich connected cards with brand art, tokenize credentials for checkout, and build card-on-file experiences.

Once you've [connected a user's credit cards](/guides/use-cases/commerce/getting-started), you can enrich them with card brand art for linking experiences, tokenize credentials for checkout, and subscribe to card product change notifications.

This guide covers two integration paths. Choose based on whether you want to build the discovery UX yourself or use Method's drop-in component. The card brand, subscription, and checkout APIs work the same in both paths.

## Path A: API-Only

Integrate directly with Method's APIs for entity creation, identity verification, Connect, and all downstream card operations.

### Entity Creation & Connect

Use the [Entities API](/reference/entities/overview) to create and verify the user, then call [Entity-Connect](/reference/entities/connect/overview) to discover their credit cards programmatically. This is the same flow described in [Getting Started](/guides/use-cases/commerce/getting-started).

### Card Brand Enrichment

For card linking and rewards experiences, display the actual card product name and art instead of a generic "Visa ending in 1234." Request a Card Brand for any connected credit card account.

Here's a card brand request for Emily's Chase Sapphire Preferred (`acc_LxwEqNicr66yP`):

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_LxwEqNicr66yP/card_brands \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
```

```json theme={null}
{
  "id": "cbrd_Accm7P6t6mYQP",
  "account_id": "acc_LxwEqNicr66yP",
  "brands": [
    {
      "id": "pdt_27_brd_1",
      "card_product_id": "pdt_27",
      "description": "Chase Sapphire Preferred",
      "name": "Chase Sapphire Preferred",
      "issuer": "Chase",
      "network": "visa",
      "network_tier": "signature",
      "type": "specific",
      "url": "https://static.methodfi.com/card_brands/7d2f8a1bc3e5f094a6d831e5c7b29f04.png"
    }
  ],
  "status": "completed",
  "source": "method",
  "error": null,
  "created_at": "2025-12-10T14:30:12.139Z",
  "updated_at": "2025-12-10T14:30:12.139Z"
}
```

The `brands` array contains the card product details. Use `name` for display, `url` for the card art image, `issuer` for the bank name, and `network` / `network_tier` for routing decisions.

<Note>
  Card Brand is an asynchronous operation. The response above shows a completed request; in practice, subscribe to the `card_brand.completed` webhook to know when brand data is ready.
</Note>

### Card Brand Subscriptions

To stay notified when a user's card product changes (e.g., upgraded from Sapphire Preferred to Sapphire Reserve), enroll the account in a `card_brand` subscription:

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_LxwEqNicr66yP/subscriptions \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "enroll": "card_brand"
  }'
```

```json theme={null}
{
  "id": "sub_Wm3Rj8KHVpNk4",
  "name": "card_brand",
  "status": "active",
  "payload": null,
  "latest_request_id": null,
  "created_at": "2025-12-10T14:31:05.951Z",
  "updated_at": "2025-12-10T14:31:05.951Z"
}
```

### Checkout & Card-on-File

For checkout, card-on-file, or recurring billing, create a **Payment Instrument** to tokenize a connected card's credentials. Method offers two tokenization approaches; choose based on whether your systems can handle raw card data.

#### Network Tokens (No PCI Required)

Request a `network_token` Payment Instrument to receive a network-provisioned token instead of the raw card number. Network tokens are issued by the card networks (Visa, Mastercard) and replace the PAN with a token that's only usable through your processor. No raw card credentials are exposed to your systems, so you don't need to maintain PCI compliance to use them. Network tokens also typically yield better authorization rates and reduced fraud risk than raw PANs.

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_GAzrD99cUqGEN/payment_instruments \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "network_token"
  }'
```

#### Raw Card Credentials (PCI Required)

If your processor requires raw card data, request a `card` Payment Instrument to receive the card number, expiration, and billing zip. For full credentials including CVV, use the [Sensitive API](/reference/accounts/sensitive/overview). Both approaches expose PAN data to your systems and require PCI compliance.

Here's a `card` Payment Instrument request for Emily's Capital One Venture X (`acc_GAzrD99cUqGEN`):

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_GAzrD99cUqGEN/payment_instruments \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "card"
  }'
```

```json theme={null}
{
  "success": true,
  "data": {
    "id": "pmt_inst_pd788hPVhLT37",
    "account_id": "acc_GAzrD99cUqGEN",
    "type": "card",
    "card": {
      "number": "4000120000001154",
      "exp_month": "09",
      "exp_year": "2028",
      "billing_zip_code": "90028"
    },
    "network_token": null,
    "inbound_achwire_payment": null,
    "chargeable": true,
    "status": "completed",
    "error": null,
    "created_at": "2025-12-10T14:35:22.039Z",
    "updated_at": "2025-12-10T14:35:22.039Z"
  },
  "message": null
}
```

For full credentials via the Sensitive API:

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_LxwEqNicr66yP/sensitive \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "expand": [
      "credit_card.number",
      "credit_card.exp_month",
      "credit_card.exp_year",
      "credit_card.cvv"
    ]
  }'
```

```json theme={null}
{
  "id": "astv_9WBBA6TH7n7iX",
  "account_id": "acc_LxwEqNicr66yP",
  "type": "credit_card",
  "credit_card": {
    "number": "4217400012003741",
    "exp_month": "11",
    "exp_year": "2029",
    "cvv": "342",
    "billing_zip_code": null
  },
  "status": "completed",
  "error": null,
  "created_at": "2025-12-10T14:40:18.857Z",
  "updated_at": "2025-12-10T14:40:18.857Z"
}
```

<Warning>
  Payment Instruments and the Sensitive API are gated products that require approval. Contact your Method representative to enable access.
</Warning>

***

## Path B: Embedded UI with Opal

Use [Opal Card Connect](/opal/card_connect/overview) as a drop-in UI for identity verification and card discovery. Opal handles the user-facing flow while you use the API for everything downstream.

### Card Discovery with Opal

Opal's **Card Connect** mode walks users through identity verification and card discovery in a single flow. After the user completes the Opal flow, their connected card accounts are available via the API. These are the same accounts you'd get from [Entity-Connect](/reference/entities/connect/overview) in Path A.

<Card title="Opal Card Connect" icon="window" href="/opal/card_connect/overview">
  Full documentation for Opal's Card Connect mode.
</Card>

The card brand enrichment, subscription, and Payment Instruments / Sensitive flows from Path A all work identically with Opal-discovered accounts. Use the same curl recipes shown above against any account ID returned by Opal.

## What's Next

<CardGroup cols={2}>
  <Card title="Expense Tracking" icon="receipt" href="/guides/use-cases/commerce/expense-tracking">
    Stream transactions, manage spend, and handle manual card entry for unsupported networks.
  </Card>

  <Card title="Card Brand API Reference" icon="credit-card" href="/reference/accounts/card-brands/overview">
    Full API documentation for Card Brand.
  </Card>

  <Card title="Payment Instruments API Reference" icon="key" href="/reference/accounts/payment-instruments/overview">
    Full API documentation for Payment Instruments.
  </Card>

  <Card title="Sensitive API Reference" icon="lock" href="/reference/accounts/sensitive/overview">
    Full API documentation for Sensitive.
  </Card>
</CardGroup>
