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

# Mortgage & HELOC

> Top-of-funnel qualification through portfolio targeting for secured-lending teams.

*Top-of-funnel qualification through portfolio targeting for secured-lending teams.*

Pull a borrower's full liability picture before pre-approval, size HELOC and refi offers against real-time balances and APRs, and continuously surface existing customers who are in the market for a HELOC or new mortgage. From nothing more than a name and phone, Method discovers every liability a borrower holds (mortgages, HELOCs, credit cards, auto, student, and personal loans), pulls current balances, APRs, and payment behavior directly from each financial institution, and keeps that picture refreshed after the borrower is in the book. The same data fabric powers two motions: origination (pre-qualification and HELOC/refi sizing) and portfolio intelligence (continuous monitoring to surface HELOC- and mortgage-ready customers before they shop elsewhere).

## How it works

Create the borrower Entity, verify them, run Connect to discover their liabilities, then subscribe to the v2 attribute set for a continuous, real-time view. All examples use `Method-Version: 2026-03-30`. Monetary values are in **cents** (`1420000` = \$14,200.00); utilization is a percentage (`37.4` = 37.4%); deltas are percentage points.

<Steps>
  <Step title="Create the Entity">
    `POST /entities`. You only need `first_name`, `last_name`, and `phone`. An Entity can be created minimally and enriched later; passing `dob` and `ssn_4` when you have them measurably improves match rates during account discovery, so include them in production where available. The Entity returns `status: "incomplete"` with `connect`, `credit_score`, and `attribute` in `restricted_products` until verification completes.

    <Expandable title="request & response">
      ```bash theme={null}
      curl https://production.methodfi.com/entities \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
        -H "Content-Type: application/json" \
        -d '{
          "type": "individual",
          "individual": {
            "first_name": "Maya",
            "last_name": "Chen",
            "phone": "+13105550147"
          }
        }'
      ```

      ```json theme={null}
      {
        "id": "ent_BzirqpLEm3BW7",
        "type": "individual",
        "individual": {
          "first_name": "Maya",
          "last_name": "Chen",
          "phone": "+13105550147"
        },
        "status": "incomplete",
        "products": ["identity"],
        "restricted_products": ["connect", "credit_score", "attribute"],
        "available_subscriptions": ["connect", "credit_score"]
      }
      ```
    </Expandable>
  </Step>

  <Step title="Verify the borrower (BYO SMS + BYO KYC)">
    Verification must complete before Connect, credit, and attribute products unlock. The lending flows in these guides use BYO SMS and BYO KYC, which let you assert results you already captured in your own onboarding. Both require your team to be pre-authorized, so contact your Method CSM to enable them. For other verification methods, see [Verification Methods](/guides/identity-verification/methods). Once both sessions complete, the Entity moves to `status: "active"` and `connect`, `credit_score`, and `attribute` move from `restricted_products` into `products`. For the full walkthrough, see the [Getting Started](/guides/use-cases/lending/getting-started) guide.

    <Expandable title="phone and identity requests">
      Verify the phone with BYO SMS, passing the ISO 8601 timestamp of when you verified the number:

      ```bash theme={null}
      curl https://production.methodfi.com/entities/ent_BzirqpLEm3BW7/verification_sessions \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
        -H "Content-Type: application/json" \
        -d '{ "type": "phone", "method": "byo_sms", "byo_sms": { "timestamp": "2026-03-30T12:00:00.000Z" } }'
      ```

      Then assert identity with BYO KYC (you're confirming your external KYC process passed for this borrower):

      ```bash theme={null}
      curl https://production.methodfi.com/entities/ent_BzirqpLEm3BW7/verification_sessions \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
        -H "Content-Type: application/json" \
        -d '{ "type": "identity", "method": "byo_kyc", "byo_kyc": {} }'
      ```
    </Expandable>
  </Step>

  <Step title="Run Connect">
    `POST /entities/{ent_id}/connect`. Connect performs a soft credit pull (no score impact) and returns the account IDs Method created for each liability. The first Connect returns all liability accounts, both active and closed; subsequent calls return only newly discovered accounts.

    <Expandable title="request & response">
      ```bash theme={null}
      curl https://production.methodfi.com/entities/ent_BzirqpLEm3BW7/connect \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
      ```

      ```json theme={null}
      {
        "id": "cxn_4ewMmBbjYDMR4",
        "entity_id": "ent_BzirqpLEm3BW7",
        "status": "completed",
        "accounts": [
          "acc_RGACQH7XdfYhC",
          "acc_TmGPLxkz7Nrh6",
          "acc_WqNhMRNVZjbKg",
          "acc_YXDrjADGjC76U"
        ],
        "error": null
      }
      ```
    </Expandable>
  </Step>

  <Step title="List the discovered accounts">
    `GET /accounts`. Filter to `type=liability` and `status=active` to work with live debt only. Narrow with `liability.type` (e.g. `mortgage`, `credit_card`) to isolate the secured-debt picture that matters for a HELOC decision. For decision-time accuracy, pull a fresh `POST /accounts/{acc_id}/updates` on the accounts that drive the decision (balances on revolving and mortgage debt shift daily).

    <Expandable title="request & response">
      ```bash theme={null}
      curl "https://production.methodfi.com/accounts?holder_id=ent_BzirqpLEm3BW7&type=liability&status=active" \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
      ```

      ```json theme={null}
      {
        "data": [
          {
            "id": "acc_RGACQH7XdfYhC",
            "holder_id": "ent_BzirqpLEm3BW7",
            "status": "active",
            "type": "liability",
            "liability": {
              "mch_id": "mch_300012",
              "mask": "8842",
              "ownership": "primary",
              "type": "mortgage",
              "name": "Rocket Mortgage Home Loan"
            },
            "products": ["balance", "update"],
            "restricted_products": ["attribute", "sensitive"]
          },
          {
            "id": "acc_WqNhMRNVZjbKg",
            "holder_id": "ent_BzirqpLEm3BW7",
            "status": "active",
            "type": "liability",
            "liability": {
              "mch_id": "mch_302086",
              "mask": "1580",
              "ownership": "primary",
              "type": "credit_card",
              "name": "Chase Sapphire Reserve Credit Card"
            },
            "products": ["balance", "update", "card_brand"],
            "restricted_products": ["attribute", "sensitive"]
          }
        ]
      }
      ```
    </Expandable>
  </Step>

  <Step title="Enroll the entity in the attribute subscription">
    `POST /entities/{ent_id}/subscriptions` with `enroll: attribute`. Method computes credit-health attributes (utilization, balances, APRs, trends, payment behavior, delinquency flags) at both the entity level and the account level. Pass the `portfolio_intelligence` bundle to onboard the full PI attribute set in one call, plus any HELOC/mortgage-specific attributes you want explicitly. Once enrolled, every account on the entity is eligible for attribute generation; you do not enroll accounts individually. Portfolio Intelligence (`portfolio_intelligence`) is separately enabled, so ask your Method CSM to turn it on first.

    <Expandable title="request & response">
      ```bash theme={null}
      curl https://production.methodfi.com/entities/ent_BzirqpLEm3BW7/subscriptions \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
        -H "Content-Type: application/json" \
        -d '{
          "enroll": "attribute",
          "payload": {
            "attributes": {
              "bundles": ["portfolio_intelligence"],
              "requested_attributes": [
                "mortgage_balance_total",
                "heloc_balance_total",
                "heloc_utilization",
                "overall_utilization",
                "revolving_credit_card_balance_total",
                "weighted_average_apr_credit_card",
                "delinquency_flag_credit_cards"
              ]
            }
          }
        }'
      ```

      ```json theme={null}
      {
        "id": "sub_Tm8qNnLx5RjWk",
        "name": "attribute",
        "status": "active",
        "latest_request_id": null,
        "created_at": "2026-04-09T17:00:12.218Z",
        "updated_at": "2026-04-09T17:00:12.218Z"
      }
      ```
    </Expandable>

    Once `status` is `active`, Method begins pulling directly from the borrower's institutions and attribute generation starts.
  </Step>

  <Step title="(Optional) Enroll accounts in Update subscriptions">
    `POST /accounts/{acc_id}/subscriptions` with `enroll: update`. Adds a near-real-time balance/payment event stream on a specific account, on top of the entity attribute layer, useful when you want a webhook the moment a tracked mortgage or card balance moves.

    <Expandable title="request">
      ```bash theme={null}
      curl https://production.methodfi.com/accounts/acc_WqNhMRNVZjbKg/subscriptions \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
        -H "Content-Type: application/json" \
        -d '{ "enroll": "update" }'
      ```
    </Expandable>
  </Step>

  <Step title="Pull the entity attribute set">
    `POST /entities/{ent_id}/attributes`. Asynchronous: it returns immediately with `status: "in_progress"` and `attributes: null`, then fires an `entity_attribute.create` webhook when computation completes. Retrieve the finished object via `GET /entities/{ent_id}/attributes/{attr_id}`. Attributes that can't be computed (e.g. a trend with insufficient history, or HELOC attributes for a borrower with no HELOC) return `value: null` with an `error` object rather than failing the whole response.

    <Expandable title="request & response">
      ```bash theme={null}
      curl https://production.methodfi.com/entities/ent_BzirqpLEm3BW7/attributes \
        -X POST \
        -H "Method-Version: 2026-03-30" \
        -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
      ```

      ```json theme={null}
      {
        "id": "attr_Qk9nPmRw3LjTx",
        "entity_id": "ent_BzirqpLEm3BW7",
        "status": "completed",
        "attributes": {
          "mortgage_balance_total":               { "value": 31200000, "error": null },
          "heloc_balance_total":                  { "value": 0, "error": null },
          "heloc_utilization":                    { "value": null, "error": { "type": "ENTITY_ATTRIBUTE_INSUFFICIENT_DATA", "code": 27001, "message": "Insufficient data to compute this entity attribute." } },
          "overall_utilization":                  { "value": 41.8, "error": null },
          "revolving_credit_card_balance_total":  { "value": 1840000, "error": null },
          "credit_card_utilization":              { "value": 63.0, "error": null },
          "weighted_average_apr_credit_card":     { "value": 23.4, "error": null },
          "usage_pattern":                        { "value": "revolver", "error": null },
          "payment_to_minimum_ratio_avg_credit_cards": { "value": 1.6, "error": null },
          "delinquency_flag_credit_cards":        { "value": "on_time", "error": null }
        }
      }
      ```
    </Expandable>
  </Step>
</Steps>

**Webhooks.** A PI-enrolled entity fires `entity_attribute.create` on the first computation and `entity_attribute.update` thereafter whenever new values are surfaced; account-level signals fire `account_attribute.create` / `account_attribute.update`. Subscribe to these to drive monitoring workflows without polling.

A primer on the full attribute set, entity-vs-account availability, and webhook payloads lives in the [Portfolio Intelligence guide](/guides/use-cases/lending/portfolio-monitoring).

## Pre-qualification

Run the create-and-Connect flow at intake, then read the entity attribute set to qualify before the borrower invests in a full application. Because the data comes straight from each institution rather than a weeks-old bureau snapshot, the pre-approval decision rests on what the borrower actually owes today.

*Key attributes:* `overall_utilization`, `credit_card_utilization`, `usage_pattern`, `delinquency_flag_credit_cards`, `payment_to_minimum_ratio_avg_credit_cards`.

## HELOC expansion

For a HELOC offer, the secured picture and the borrower's revolving leverage drive both eligibility and sizing. Method surfaces the existing mortgage and HELOC balances directly, alongside the unsecured debt that informs capacity.

*Key attributes:* `mortgage_balance_total`, `heloc_balance_total`, `heloc_utilization`, `overall_utilization`, `revolving_credit_card_balance_total`.

## Debt consolidation / refi

A borrower carrying high-APR revolving balances is a consolidation candidate. Method shows the blended rate they're actually paying, so the savings you quote are priced against real debt, not an estimated rate band. The example borrower above carries \$18,400 in revolving balances at a 23.4% blended APR, a clear consolidation target a HELOC or refi will retire. When the borrower accepts, Direct Pay (the Payments API) routes the verified payoff straight to the incumbent creditor.

*Key attributes:* `weighted_average_apr_credit_card`, `revolving_credit_card_balance_total`, `credit_card_utilization`, `personal_loan_monthly_installments_estimate`.

## Portfolio Intelligence: HELOC / mortgage targeting

Enroll existing customers in the attribute subscription and let the continuous attribute stream surface who is in the market. Watch for the signals that indicate HELOC or new-mortgage intent (sustained revolving paydown that frees capacity, rising high-APR balances that a HELOC will consolidate, or an improving overall profile) and trigger a targeted offer before they shop a competitor.

*Key attributes:* `revolving_credit_card_balance_change_30d/60d/90d`, `overall_utilization_delta_90d`, `overall_utilization_trend_90d`, `weighted_average_apr_credit_card`, `mortgage_balance_total`.
