Skip to main content
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.
1

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.
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"
    }
  }'
{
  "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.
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.
2

Verify Identity

Before Method can pull the applicant’s credit data, you need to verify their identity. This is a two-step process: first verify the phone number, then verify the person’s identity.
Method also supports SNA (Silent Network Auth), BYO SMS, and Opal 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.
Step 1 — Phone verification (SMS):
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:
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:
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:
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:
{
  "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.
3

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).
curl https://production.methodfi.com/entities/ent_qKNBB68bfHGNA/connect \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
{
  "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:
curl https://production.methodfi.com/accounts/acc_WqNhMRNVZjbKg \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
{
  "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 ProductsThe 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:
ProductWhat it means
balanceRetrieve the current balance for this account (from credit report data).
updatePull real-time data — current balance, APR, due dates, payment amounts — directly from the financial institution.
paymentSend payments to this account through Method. Method has a payment rail to this creditor.
sensitiveAccess 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:
curl https://production.methodfi.com/accounts/acc_RkFqVbD8HjQxP \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
{
  "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 IDCreditorTypeEstimated BalanceAvailable Products
acc_WqNhMRNVZjbKgChase Freedom FlexCredit Card$3,200balance, update, payment
acc_nPvJM9KXRwQE4Discover itCredit Card$1,800balance, update, payment
acc_TmGPLxkz7Nrh6Toyota Motor CreditAuto Loan$18,450balance, update, payment
acc_RkFqVbD8HjQxPFedLoanStudent Loan$34,200balance, update
acc_YXDrjADGjC76UUpstartPersonal Loan$12,000balance, update, payment
acc_KpLnWzFt9Mjd3Rocket MortgageMortgage$245,000balance, 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.

What’s Next

Application & Qualification

Pull real-time account data and assess credit risk with Attributes.

Debt Consolidation

Request payoff quotes and disburse funds directly to creditors.