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

# Getting Started

> Create an entity, verify identity, and discover all liabilities for a loan applicant.

Every lending integration follows the same three-step setup: represent your applicant as an Entity, verify their identity, and discover their complete liability picture. This guide walks through each step with full API calls for a loan applicant named James Rodriguez.

As a lender, the goal of this flow is to go from a name and phone number to a complete view of everything the applicant owes — credit cards, auto loans, student loans, personal loans, and mortgages — in a single session. This is the foundation for DTI calculations, underwriting decisions, and eventual loan disbursement.

<Steps>
  <Step title="Create the Entity">
    Start by creating an Entity with the applicant's PII. For lending use cases, providing more identity data (SSN last 4, date of birth, address) significantly improves match rates during account discovery.

    ```bash theme={null}
    curl https://production.methodfi.com/entities \
      -X POST \
      -H "Method-Version: 2025-12-01" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "individual",
        "individual": {
          "first_name": "James",
          "last_name": "Rodriguez",
          "phone": "+12125550456",
          "email": "james.rodriguez@email.com",
          "dob": "1989-03-22",
          "ssn_4": "5678"
        },
        "address": {
          "line1": "456 Oak Ave",
          "line2": null,
          "city": "Brooklyn",
          "state": "NY",
          "zip": "11201"
        }
      }'
    ```

    ```json theme={null}
    {
      "id": "ent_qKNBB68bfHGNA",
      "type": "individual",
      "individual": {
        "first_name": "James",
        "last_name": "Rodriguez",
        "phone": "+12125550456",
        "dob": "1989-03-22",
        "email": "james.rodriguez@email.com",
        "ssn_4": "5678",
        "ssn": null
      },
      "error": null,
      "address": {
        "line1": "456 Oak Ave",
        "line2": null,
        "city": "Brooklyn",
        "state": "NY",
        "zip": "11201"
      },
      "status": "incomplete",
      "verification": {
        "identity": {
          "verified": false,
          "matched": false,
          "latest_verification_session": null,
          "methods": [
            "element",
            "kba"
          ]
        },
        "phone": {
          "verified": false,
          "latest_verification_session": null,
          "methods": [
            "sms",
            "sna",
            "byo_sms"
          ]
        }
      },
      "connect": null,
      "credit_score": null,
      "products": [
        "identity"
      ],
      "restricted_products": [
        "connect",
        "credit_score",
        "attribute"
      ],
      "subscriptions": [],
      "available_subscriptions": [
        "connect",
        "credit_score"
      ],
      "restricted_subscriptions": [],
      "metadata": null,
      "created_at": "2025-09-15T14:22:31.424Z",
      "updated_at": "2025-09-15T14:22:31.424Z"
    }
    ```

    The Entity is created with `status: "incomplete"` — the applicant still needs to verify their identity before Method can discover their accounts.

    <Note>
      Including `ssn_4` and `dob` at entity creation gives Method more data points to match against credit bureau records during Connect, which improves account discovery rates.
    </Note>
  </Step>

  <Step title="Verify Identity">
    Before Method can pull the applicant's credit data, you need to verify their identity. This is a [two-step process](/guides/identity-verification/overview): first verify the phone number, then verify the person's identity.

    <Note>
      Method also supports [SNA (Silent Network Auth)](/guides/identity-verification/methods), [BYO SMS](/guides/identity-verification/methods), and [Opal](/opal/identity/overview) as alternative verification methods. For lending flows where the applicant is already in your app, SMS + KBA is typically the fastest API-driven path to conversion.
    </Note>

    **Step 1 — Phone verification (SMS):**

    ```bash theme={null}
    curl https://production.methodfi.com/entities/ent_qKNBB68bfHGNA/verification_sessions \
      -X POST \
      -H "Method-Version: 2025-12-01" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "phone",
        "method": "sms",
        "sms": {}
      }'
    ```

    The applicant receives an SMS code. Submit it to complete phone verification:

    ```bash theme={null}
    curl https://production.methodfi.com/entities/ent_qKNBB68bfHGNA/verification_sessions/evf_P4QXNj93Y9J8L \
      -X PUT \
      -H "Method-Version: 2025-12-01" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "phone",
        "method": "sms",
        "sms": {
          "sms_code": "123456"
        }
      }'
    ```

    **Step 2 — Identity verification (KBA):**

    With the phone verified, create a KBA session. Method returns a set of identity questions:

    ```bash theme={null}
    curl https://production.methodfi.com/entities/ent_qKNBB68bfHGNA/verification_sessions \
      -X POST \
      -H "Method-Version: 2025-12-01" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "identity",
        "method": "kba",
        "kba": {}
      }'
    ```

    Present the questions to the applicant and submit their answers:

    ```bash theme={null}
    curl https://production.methodfi.com/entities/ent_qKNBB68bfHGNA/verification_sessions/evf_Rm7kLnXw4PjTq \
      -X PUT \
      -H "Method-Version: 2025-12-01" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "identity",
        "method": "kba",
        "kba": {
          "answers": [
            { "question_id": "qtn_aaa", "answer_id": "ans_bbb" },
            { "question_id": "qtn_ccc", "answer_id": "ans_ddd" }
          ]
        }
      }'
    ```

    **After both steps, the Entity is active:**

    ```json theme={null}
    {
      "id": "ent_qKNBB68bfHGNA",
      "type": "individual",
      "individual": {
        "first_name": "James",
        "last_name": "Rodriguez",
        "phone": "+12125550456",
        "dob": "1989-03-22",
        "email": "james.rodriguez@email.com",
        "ssn_4": "5678",
        "ssn": null
      },
      "error": null,
      "address": {
        "line1": "456 Oak Ave",
        "line2": null,
        "city": "Brooklyn",
        "state": "NY",
        "zip": "11201"
      },
      "status": "active",
      "verification": {
        "identity": {
          "verified": true,
          "matched": true,
          "latest_verification_session": "evf_Rm7kLnXw4PjTq",
          "methods": []
        },
        "phone": {
          "verified": true,
          "latest_verification_session": "evf_P4QXNj93Y9J8L",
          "methods": []
        }
      },
      "connect": null,
      "credit_score": null,
      "products": [
        "identity",
        "connect",
        "credit_score",
        "attribute"
      ],
      "restricted_products": [],
      "subscriptions": [],
      "available_subscriptions": [
        "connect",
        "credit_score"
      ],
      "restricted_subscriptions": [],
      "metadata": null,
      "created_at": "2025-09-15T14:22:31.424Z",
      "updated_at": "2025-09-15T14:23:48.106Z"
    }
    ```

    Notice that `connect`, `credit_score`, and `attribute` have moved from `restricted_products` to `products` — the applicant is now eligible for account discovery.

    The Entity's `products` and `restricted_products` arrays indicate which platform capabilities are unlocked based on the entity's verification status. Before verification, most products are restricted. After verification, they unlock. You'll see a similar pattern at the account level: each discovered account has its own `products` array that reflects what Method can do with that specific liability, based on Method's coverage of the creditor.
  </Step>

  <Step title="Connect Liabilities">
    With the Entity verified, call Connect to discover all of the applicant's liability accounts via a soft credit pull (no impact to their credit score).

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

    ```json theme={null}
    {
      "id": "cxn_4ewMmBbjYDMR4",
      "entity_id": "ent_qKNBB68bfHGNA",
      "status": "completed",
      "accounts": [
        "acc_WqNhMRNVZjbKg",
        "acc_nPvJM9KXRwQE4",
        "acc_TmGPLxkz7Nrh6",
        "acc_RkFqVbD8HjQxP",
        "acc_YXDrjADGjC76U",
        "acc_KpLnWzFt9Mjd3"
      ],
      "requested_products": [],
      "requested_subscriptions": [],
      "error": null,
      "created_at": "2025-09-15T14:24:12.339Z",
      "updated_at": "2025-09-15T14:24:12.339Z"
    }
    ```

    Method discovered 6 liability accounts across multiple creditors. Each account ID maps to a specific debt obligation. You can retrieve any account to see its liability details:

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

    ```json theme={null}
    {
      "id": "acc_WqNhMRNVZjbKg",
      "holder_id": "ent_qKNBB68bfHGNA",
      "status": "active",
      "type": "liability",
      "liability": {
        "mch_id": "mch_183",
        "mask": "4021",
        "ownership": "primary",
        "fingerprint": "8a3c91f2b7e4d6a0c5f1e8b3d9a7c4f2e6b0d8a1",
        "type": "credit_card",
        "sub_type": "flexible_spending",
        "name": "Chase Freedom Flex Credit Card"
      },
      "latest_verification_session": null,
      "update": null,
      "balance": null,
      "card_brand": null,
      "payment_instrument": null,
      "products": ["balance", "update", "payment"],
      "restricted_products": ["sensitive"],
      "subscriptions": [],
      "available_subscriptions": ["update", "update.snapshot"],
      "restricted_subscriptions": [],
      "error": null,
      "metadata": null,
      "created_at": "2025-09-15T14:24:12.339Z",
      "updated_at": "2025-09-15T14:24:12.542Z"
    }
    ```

    **Understanding Account Products**

    The `products` array tells you what Method can do with this account. Each discovered account comes with a `products` list and a `restricted_products` list based on the account type and Method's coverage for that merchant:

    | Product     | What it means                                                                                                     |
    | ----------- | ----------------------------------------------------------------------------------------------------------------- |
    | `balance`   | Retrieve the current balance for this account (from credit report data).                                          |
    | `update`    | Pull real-time data — current balance, APR, due dates, payment amounts — directly from the financial institution. |
    | `payment`   | Send payments to this account through Method. Method has a payment rail to this creditor.                         |
    | `sensitive` | Access full account numbers. Gated, requires additional account verification.                                     |

    If `payment` is in `products`, Method has payment coverage for this merchant and you can route funds to this account. If it's in `restricted_products` or absent entirely, payments aren't available for this account.

    This distinction matters most for lending workflows. If your product involves paying off a borrower's existing debts (debt consolidation, enforced paydown), you need `payment` in the account's `products` array for each target account. Accounts without `payment` coverage can still provide data for underwriting and DTI calculations via `balance` and `update`, but disbursement to those creditors would need to happen through your own payment rails.

    Compare the Chase card above with the FedLoan student loan, which has different product availability:

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

    ```json theme={null}
    {
      "id": "acc_RkFqVbD8HjQxP",
      "holder_id": "ent_qKNBB68bfHGNA",
      "status": "active",
      "type": "liability",
      "liability": {
        "mch_id": "mch_302451",
        "mask": "7892",
        "ownership": "primary",
        "fingerprint": "d4f2a8c1e6b0d9a3c7f5e2b8d1a4c6f0e3b9d7a2",
        "type": "student_loan",
        "sub_type": "federal",
        "name": "FedLoan Student Loan"
      },
      "latest_verification_session": null,
      "update": null,
      "balance": null,
      "card_brand": null,
      "payment_instrument": null,
      "products": ["balance", "update"],
      "restricted_products": ["payment", "sensitive"],
      "subscriptions": [],
      "available_subscriptions": ["update", "update.snapshot"],
      "restricted_subscriptions": [],
      "error": null,
      "metadata": null,
      "created_at": "2025-09-15T14:24:12.339Z",
      "updated_at": "2025-09-15T14:24:12.542Z"
    }
    ```

    This account's `products` array contains `balance` and `update` but not `payment`. Method can pull real-time data from FedLoan, but payment routing to this servicer isn't currently available.

    The applicant's discovered accounts represent the following debts:

    | Account ID          | Creditor            | Type          | Estimated Balance | Available Products       |
    | ------------------- | ------------------- | ------------- | ----------------- | ------------------------ |
    | `acc_WqNhMRNVZjbKg` | Chase Freedom Flex  | Credit Card   | \$3,200           | balance, update, payment |
    | `acc_nPvJM9KXRwQE4` | Discover it         | Credit Card   | \$1,800           | balance, update, payment |
    | `acc_TmGPLxkz7Nrh6` | Toyota Motor Credit | Auto Loan     | \$18,450          | balance, update, payment |
    | `acc_RkFqVbD8HjQxP` | FedLoan             | Student Loan  | \$34,200          | balance, update          |
    | `acc_YXDrjADGjC76U` | Upstart             | Personal Loan | \$12,000          | balance, update, payment |
    | `acc_KpLnWzFt9Mjd3` | Rocket Mortgage     | Mortgage      | \$245,000         | balance, update          |

    This is the complete liability picture you need for DTI calculations and underwriting. Four of the six accounts support `payment`, meaning Method can route funds directly to those creditors. The remaining two (FedLoan and Rocket Mortgage) provide data through `balance` and `update` but don't currently support payment disbursement through Method.

    In the next guides, you'll see how to pull real-time balances via `update` and initiate payments to accounts that support it.
  </Step>
</Steps>

## What's Next

<CardGroup cols={2}>
  <Card title="Application & Qualification" icon="clipboard-check" href="/guides/use-cases/lending/application-prefill">
    Pull real-time account data and assess credit risk with Attributes.
  </Card>

  <Card title="Debt Consolidation" icon="money-bill-transfer" href="/guides/use-cases/lending/debt-consolidation">
    Request payoff quotes and disburse funds directly to creditors.
  </Card>
</CardGroup>
