Skip to main content
Once you’ve connected a user’s credit cards, 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 your PCI compliance posture. Most commerce teams use this path. Opal Card Connect handles the sensitive card entry and verification UI, while you use the API for enrichment and tokenization.

Card Discovery with Opal

Opal’s Card Connect mode provides a drop-in UI that 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 — the same accounts returned by Entity-Connect.

Opal Card Connect

Full documentation for Opal’s Card Connect mode.

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):
curl https://production.methodfi.com/accounts/acc_LxwEqNicr66yP/card_brands \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
{
  "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.
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.

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:
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"
  }'
{
  "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. This returns the card number, expiration, and billing zip code — ready for use in your payment flow. Here’s a Payment Instrument request for Emily’s Capital One Venture X (acc_GAzrD99cUqGEN):
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"
  }'
{
  "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 merchants that support network tokenization, you can request a network_token type instead of card. Network tokens provide better authorization rates and reduced fraud risk by replacing the actual card number with a token provisioned through the card network.
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"
  }'
Payment Instruments is a gated product that requires approval. Contact your Method representative to enable access.

Path B: PCI Compliant (API-Only)

You must be PCI Compliant to leverage this pathway. This path is for teams with existing PCI infrastructure that need full control over the card discovery and tokenization UX.
For PCI-compliant teams, the entire flow is API-driven without Opal:

Entity Creation & Connect

Use the Entities API to create and verify the user, then call Entity-Connect to discover their credit cards programmatically. This is the same flow described in Getting Started, but you build the UI yourself.

Card Brand Enrichment

Card Brand works identically to Path A. Request card brand data for any connected account:
curl https://production.methodfi.com/accounts/acc_LxwEqNicr66yP/card_brands \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
The response format is the same as shown above — brands array with name, issuer, network, url, and other card product details.

Payment Instruments & Sensitive Data

PCI-compliant teams can also use the Sensitive API to retrieve raw card credentials including the CVV:
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"
    ]
  }'
{
  "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"
}

What’s Next

Expense Tracking

Stream transactions, manage spend, and handle manual card entry for unsupported networks.

Card Brand API Reference

Full API documentation for Card Brand.

Payment Instruments API Reference

Full API documentation for Payment Instruments.

Sensitive API Reference

Full API documentation for Sensitive.