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

# Wallet Onboarding

> Connect every credit card a customer owns without manual entry, then enrich and tokenize the cards to render a complete wallet.

Connect every credit card without manual entry. Using a customer's name and phone number, Method discovers the credit cards they own, verifies ownership, and returns the metadata needed to render a complete wallet.

## Why Use It?

* **Faster onboarding:** Connect every credit card in one simple and seamless flow.
* **Frictionless checkout:** Let customers pay instantly with any of their credit cards, with no manual entry.
* **Rewards activation:** Enable customers to connect all their credit cards and start earning rewards across every eligible purchase.
* **Payment resilience:** Keep multiple credit cards on file to automatically recover failed payments and reduce churn.

## How It Works

```mermaid theme={null}
flowchart TD
    A["Create Entity<br/>POST /entities"] --> B["Verify Identity<br/>POST /verification_sessions"]
    B --> C["Discover Credit Cards<br/>POST /connect"]
    C --> D["Enrich Cards<br/>POST /card_brands"]
    D --> E["Retrieve Payment Cards<br/>POST /payment_instruments"]
    E --> F[Complete Wallet]
    style F fill:#00B29D,color:#fff
```

<Steps>
  <Step title="Create an Entity">
    Create an [Entity](/guides/entities/overview) to represent your customer. Include their full name and phone number, and provide additional identity information such as date of birth, email address, or SSN when available to improve match rates.
  </Step>

  <Step title="Verify the Customer's Identity">
    Verify the customer's phone number using either **Method OTP** (Method sends and verifies the one-time passcode) or **Bring Your Own OTP** (you verify the phone number yourself and provide the verification result to Method). See the [Identity Verification](/guides/identity-verification/overview) guide for all supported methods.
  </Step>

  <Step title="Discover the Customer's Credit Cards">
    Call [Connect](/guides/connect/overview) to discover the credit card accounts your customer holds via a soft-pull credit report, with no impact on their credit score.

    <Note>
      Steps 1-3 are the same foundational flow used by every Commerce use case. See [Getting Started](/guides/use-cases/commerce/getting-started) for full request and response examples.
    </Note>
  </Step>

  <Step title="Enrich the Discovered Cards">
    For each account returned by Connect, call [Card Brand](/guides/additional-products/card-brand) to retrieve enriched card metadata, including the issuer, card network, card product, card artwork, and rewards program. Use this metadata to render your customer's wallet with recognizable card visuals.

    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: 2026-03-30" \
      -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>
  </Step>

  <Step title="Retrieve Available Payment Cards">
    For each account returned by Connect, create a [Payment Instrument](/reference/accounts/payment-instruments/overview) to retrieve the card credentials required for checkout.

    Request a `network_token` Payment Instrument to receive a network-provisioned token instead of the raw card number. No raw card credentials are exposed to your systems, so you don't need PCI compliance, and network tokens typically yield better authorization rates.

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

    If your processor requires raw card data, request a `card` Payment Instrument instead to receive the full credentials: number, expiration date, CVV, and billing zip code. This approach exposes PAN data to your systems and requires PCI compliance.

    ```bash theme={null}
    curl https://production.methodfi.com/accounts/acc_GAzrD99cUqGEN/payment_instruments \
      -X POST \
      -H "Method-Version: 2026-03-30" \
      -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",
          "cvv": "878",
          "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
    }
    ```

    <Warning>
      Payment Instruments is a gated product that requires approval. Contact your Method representative to enable access.
    </Warning>
  </Step>
</Steps>

<Note>
  **Alternative path:** If you don't need complete control over the onboarding experience, [Opal](/opal/overview) provides an embedded flow that handles identity verification and card discovery for you.
</Note>

## What's Next

<CardGroup cols={2}>
  <Card title="Preauth Signals" icon="signal" href="/guides/use-cases/commerce/preauth-signals">
    Evaluate payment readiness before authorizing a transaction.
  </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>
</CardGroup>
