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

# The account endpoint

export const get_common_parameters = (resource_name = 'resource') => {
  return {
    id: {
      name: 'id',
      type: "string",
      required: false,
      description: `Unique identifier for the ${resource_name}.`
    },
    entity_id: {
      name: 'entity_id',
      type: 'string',
      required: false,
      description: 'The ID of the associated Entity.'
    },
    account_id: {
      name: 'account_id',
      type: 'string',
      required: false,
      description: 'The ID of the associated Account.'
    },
    error: {
      name: 'error',
      type: 'object | null',
      required: false,
      description: <>
          An object representing an error that occurred while processing
          this {resource_name}. See <a href={`/reference/errors/${resource_name.replace(/^([A-Z])/, function (match) {
        return match.toLowerCase();
      }).replace(/([A-Z])/g, function (match) {
        return "-" + match.toLowerCase();
      })}-errors`}>{resource_name} errors</a>.
        </>
    },
    status_error: {
      name: 'status_error',
      type: 'object | null',
      required: false,
      description: <>
          An object representing an error that occurred while processing
          this {resource_name}. See <a href="/reference/errors/product-errors#status-errors">{resource_name} errors</a>.
        </>
    },
    metadata: {
      name: 'metadata',
      type: 'object | null',
      required: false,
      description: <>
          Additional data provided during creation.
          See <a href="/reference/metadata">metadata</a>
        </>
    },
    created_at: {
      name: 'created_at',
      type: 'string',
      required: false,
      description: `Timestamp of when the ${resource_name} was created.`
    },
    updated_at: {
      name: 'updated_at',
      type: 'string',
      required: false,
      description: `Timestamp of when the ${resource_name} was last updated.`
    },
    status: (enums = []) => ({
      name: 'status',
      type: 'enum',
      required: false,
      description: `Status of the ${resource_name}.`,
      enums
    }),
    type: (enums = []) => ({
      name: 'type',
      type: 'enum',
      required: false,
      description: `The type of ${resource_name}.`,
      enums
    })
  };
};

export const get_expandable_field = field => {
  const ExpandableFieldsNameToValues = {
    connect: {
      key_name: 'connect',
      object_name: 'Connect',
      type: 'string | null'
    },
    credit_score: {
      key_name: 'credit_score',
      object_name: 'CreditScore',
      type: 'string | null'
    },
    vehicle: {
      key_name: 'vehicle',
      object_name: 'Vehicle',
      type: 'string | null'
    },
    attribute: {
      key_name: 'attribute',
      object_name: 'Attribute',
      type: 'string | null'
    },
    sensitive: {
      key_name: 'sensitive',
      object_name: 'Sensitive',
      type: 'string | null'
    },
    balance: {
      key_name: 'balance',
      object_name: 'Balance',
      type: 'string | null'
    },
    card_brand: {
      key_name: 'card_brand',
      object_name: 'CardBrand',
      type: 'string | null'
    },
    payoff: {
      key_name: 'payoff',
      object_name: 'Payoff',
      type: 'string | null'
    },
    transaction: {
      key_name: 'transaction',
      object_name: 'Transaction',
      type: 'string | null'
    },
    update: {
      key_name: 'update',
      object_name: 'Update',
      type: 'string | null'
    },
    latest_verification_session: {
      key_name: 'latest_verification_session',
      object_name: 'AccountVerificationSession',
      type: 'string | null'
    },
    'liability.mch_id': {
      key_name: 'liability.mch_id',
      object_name: 'Merchant',
      type: 'string'
    }
  };
  const name = ExpandableFieldsNameToValues[field].key_name;
  const object_name = ExpandableFieldsNameToValues[field].object_name;
  const type = ExpandableFieldsNameToValues[field].type;
  return {
    name,
    type,
    description: <>
        ID of the {object_name} record.{" "}
        <Tooltip tip="This can be expanded into an object with the expand query parameter.">
          <a href="/reference/expanding">Expandable</a>
        </Tooltip>.
      </>
  };
};

export const ExpandableFieldsList = ({resource_type}) => {
  const ExpandableFieldsByResourceType = {
    entity: ['connect', 'credit_score', 'attribute', 'vehicle'],
    account: ['sensitive', 'balance', 'card_brand', 'attribute', 'payoff', 'transaction', 'update', 'latest_verification_session', 'liability.mch_id']
  };
  const ExpandableFieldsNameToValues = {
    connect: {
      key_name: 'connect',
      object_name: 'Connect',
      type: 'string | null'
    },
    credit_score: {
      key_name: 'credit_score',
      object_name: 'CreditScore',
      type: 'string | null'
    },
    vehicle: {
      key_name: 'vehicle',
      object_name: 'Vehicle',
      type: 'string | null'
    },
    attribute: {
      key_name: 'attribute',
      object_name: 'Attribute',
      type: 'string | null'
    },
    sensitive: {
      key_name: 'sensitive',
      object_name: 'Sensitive',
      type: 'string | null'
    },
    balance: {
      key_name: 'balance',
      object_name: 'Balance',
      type: 'string | null'
    },
    card_brand: {
      key_name: 'card_brand',
      object_name: 'CardBrand',
      type: 'string | null'
    },
    payoff: {
      key_name: 'payoff',
      object_name: 'Payoff',
      type: 'string | null'
    },
    transaction: {
      key_name: 'transaction',
      object_name: 'Transaction',
      type: 'string | null'
    },
    update: {
      key_name: 'update',
      object_name: 'Update',
      type: 'string | null'
    },
    latest_verification_session: {
      key_name: 'latest_verification_session',
      object_name: 'AccountVerificationSession',
      type: 'string | null'
    },
    'liability.mch_id': {
      key_name: 'liability.mch_id',
      object_name: 'Merchant',
      type: 'string'
    }
  };
  const ExpandableFields = field_name => <ParamField body={ExpandableFieldsNameToValues[field_name].key_name} type={ExpandableFieldsNameToValues[field_name].type}>
      <>
        ID of the {ExpandableFieldsNameToValues[field_name].object_name} record.{' '}
        <Tooltip tip="This can be expanded into an object with the expand query parameter.">
          <a href="/reference/expanding">Expandable</a>
        </Tooltip>.
      </>
    </ParamField>;
  return ExpandableFieldsByResourceType[resource_type].map(field_name => {
    return ExpandableFields(field_name);
  });
};

export const ParamList = ({items = [], is_child = false}) => {
  return items.map(item => {
    const field_props = {
      id: Math.random().toString(),
      body: item.name,
      name: item.name,
      type: item.type,
      required: item.required
    };
    const enums = item.enums || [];
    const items = item.items || [];
    const has_items = items?.length > 0;
    const has_enums = enums?.length > 0;
    const should_default_open = item.defaultOpen || false;
    const render_child_item = () => {
      const child_props = {
        title: has_enums ? "Possible enum values" : "properties"
      };
      if (should_default_open) child_props.defaultOpen = true;
      const has_inline_enums = has_enums && enums.every(enum_item => typeof enum_item === 'string') && enums.map((enum_item, idx) => {
        const is_last = idx === enums.length - 1;
        const is_2nd_to_last = idx === enums.length - 2;
        return <>
            <code>{enum_item}</code>
            {is_last && ''}
            {is_2nd_to_last && ' or '}
            {!is_last && !is_2nd_to_last && ', '}
          </>;
      });
      const enum_list = has_enums && !has_inline_enums && <Accordion {...child_props}>
          {enums.map((enum_item, index) => <div key={`enum-${index}`}>
              <code>{enum_item.name}</code>
              <br />
              <p>{enum_item.description}</p>
            </div>)}
        </Accordion>;
      const item_list = has_items && <Expandable {...child_props}>
          <ParamList items={items || []} is_child />
        </Expandable>;
      return <>
          <p>
            {item.description}
            {has_inline_enums && [has_inline_enums.length > 1 ? ' One of ' : ' Must be ', ...has_inline_enums]}
          </p>

          {enum_list}
          {item_list}
        </>;
    };
    return is_child ? <ResponseField {...field_props}>{render_child_item()}</ResponseField> : <ParamField {...field_props}>{render_child_item()}</ParamField>;
  });
};

Accounts are a representation of an Entity's financial accounts. An Account
can be a checking or savings account (ACH) or a credit card, student loan,
mortgage, personal loan, etc. (Liability).

## Account Objects

<Tabs>
  <Tab title="Liability">
    <ParamList
      items={[
        get_common_parameters('Account').id,
        {
            name: 'holder_id',
            type: 'string',
            description: 'The ID of the Entity who is the legal holder of this Account.',
            required: false,
        },
        get_common_parameters('Account').status([
            { name: 'active', description: 'The Account is open and is in a usable state.' },
            {
                name: 'disabled',
                description: (
                    <>
                        The Account has been disabled and is no longer usable. Check
                        the account's <code>error</code> property for more information.
                    </>
                ),
            },
            { name: 'closed', description: 'The Account has been closed, and is either fully paid-off or no longer exists.' },
        ]),
        {
            ...get_common_parameters('Account').type(['liability']),
            description: 'The type of Account. A debt-type account (Credit Card, Mortgage, etc).',
        },
        {
            name: 'liability',
            type: 'object | null',
            description: 'Liability Account information',
            items: [
                {
                    name: 'liability.name',
                    type: 'string',
                    description: 'A presentable name for the liability. Ex. Chase Sapphire Credit Card',
                },
                {
                    name: 'liability.mch_id',
                    type: 'string',
                    description: 'Unique identifier of the Merchant associated with this Account.',
                },
                {
                    name: 'liability.mask',
                    type: 'string | null',
                    description: 'The last 4 digits of the associated account number.',
                },
                {
                    name: 'liability.type',
                    type: 'enum',
                    description: (
                        <>
                            The type of liability
                            account. See <a href="/2026-03-30/reference/accounts/overview#account-liability-types">
                            Account Liability Types.</a>
                        </>
                    ),
                },
                {
                    name: 'liability.sub_type',
                    type: 'enum',
                    description: (
                        <>
                            The sub-type of the liability Account. See <a href="/2026-03-30/reference/accounts/overview#account-liability-sub-types">Account Liability Sub-Types.</a>
                        </>
                    ),
                },
                {
                    name: 'liability.ownership',
                    type: 'enum',
                    description: 'Indicates the type of ownership that the related Entity has over the Account.',
                    enums: [
                        { name: 'primary', description: 'Refers to the main account holder.' },
                        { name: 'authorized', description: 'The related holder was granted permission by the primary holder.' },
                        { name: 'joint', description: 'The ownership on the Account is shared between two or more holders.' },
                        { name: 'unknown', description: 'The ownership status cannot be determined.' },
                    ],
                },
                {
                    name: 'liability.fingerprint',
                    type: 'string',
                    description: 'A SHA-512 hash of the account number.',
                },
            ],
        },
        get_expandable_field('latest_verification_session'),
        {
            name: "products",
            type: "string[]",
            description: (
                <>
                    A list of products that the Account has access to. See{" "}
                    <a href="/2026-03-30/reference/accounts/products/overview#product-names">
                        Product Names
                    </a>
                    .
                </>
            ),
        },
        {
            name: "restricted_products",
            type: "string[]",
            description: (
                <>
                    A list of products that the Account can have access to but is
                    missing some requirements. See{" "}
                    <a href="/2026-03-30/reference/accounts/products/overview#product-names">
                        Product Names
                    </a>
                    .
                </>
            ),
        },
        {
            name: "subscriptions",
            type: "string[]",
            description: (
                <>
                    A list of products that the Account is subscribed to. See{" "}
                    <a href="/2026-03-30/reference/accounts/subscriptions/overview#subscription-names">
                        Subscription Names
                    </a>
                    .
                </>
            ),
        },
        {
            name: "available_subscriptions",
            type: "string[]",
            description: (
                <>
                    A list of products that the Account can enroll into a subscription with. See{" "}
                    <a href="/2026-03-30/reference/accounts/subscriptions/overview#subscription-names">
                        Subscription Names
                    </a>
                    .
                </>
            ),
        },
        {
            name: "restricted_subscriptions",
            type: "string[]",
            description: (
                <>
                    A list of products that the Account can subscribe to but is missing some requirements. See{" "}
                    <a href="/2026-03-30/reference/accounts/subscriptions/overview#subscription-names">
                        Subscription Names
                    </a>
                    .
                </>
            ),
        },
        get_common_parameters('Account').error,
        get_common_parameters('Account').metadata,
        get_common_parameters('Account').created_at,
        get_common_parameters('Account').updated_at,
    ]}
    />

    ## Additional Properties based on liability type

    <Tabs>
      <Tab title="Auto Loan">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('payoff'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Collection">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Credit Builder">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Credit Card">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('card_brand'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Insurance">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Loan">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Medical">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Mortgage">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Personal Loan">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Student Loans">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="Utility">
        <ParamList
          items={[
                get_expandable_field('update'),
                get_expandable_field('balance'),
                get_expandable_field('attribute'),
            ]}
        />
      </Tab>

      <Tab title="BNPL">
        <ParamList
          items={[
                get_expandable_field('update'),
            ]}
        />
      </Tab>

      <Tab title="Fintech">
        <ParamList
          items={[
                get_expandable_field('update'),
            ]}
        />
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="ACH">
    <ParamList
      items={[
  get_common_parameters('Account').id,
  {
    name: 'holder_id',
    type: 'string',
    description: 'The ID of the Entity who is the legal holder of this Account.',
    required: false,
  },
  get_common_parameters('Account').status([
    { name: 'active', description: 'The Account is open and is in a usable state.' },
    {
      name: 'disabled',
      description: (
        <>
          The Account has been disabled and is no longer usable. Check
          the account's <code>error</code> property for more information.
        </>
      ),
    },
    { name: 'closed', description: 'The Account has been closed, and is either fully paid-off or no longer exists.' },
  ]),
  {
    ...get_common_parameters('Account').type(['ach']),
    description: 'The type of Account. A bank account (Checking or Savings).',
  },
  {
    name: 'ach',
    type: 'object | null',
    required: false,
    description: 'ACH Account information.',
    items: [
      {
        name: 'ach.type',
        type: 'enum',
        required: false,
        description: 'The type of ACH Account.',
        enums: ['checking', 'savings'],
      },
      {
        name: 'ach.routing',
        type: 'string',
        required: false,
        description: 'ABA routing number of the ACH Account. (maximum of 9 characters)',
      },
      {
        name: 'ach.number',
        type: 'string',
        required: false,
        description: 'Account number of the ACH Account. (maximum of 17 characters).',
      },
    ],
  },
  get_expandable_field('latest_verification_session'),
  {
    name: "products",
    type: "string[]",
    description: (
      <>
        A list of products that the Account has access to. See{" "}
        <a href="/2026-03-30/reference/accounts/products/overview#product-names">
          Product Names
        </a>
        .
      </>
    ),
  },
  {
    name: "restricted_products",
    type: "string[]",
    description: (
      <>
        A list of products that the Account can have access to but is
        missing some requirements. See{" "}
        <a href="/2026-03-30/reference/accounts/products/overview#product-names">
          Product Names
        </a>
        .
      </>
    ),
  },
  get_common_parameters('Account').error,
  get_common_parameters('Account').metadata,
  get_common_parameters('Account').created_at,
  get_common_parameters('Account').updated_at,
]}
    />
  </Tab>
</Tabs>

## Account Liability Types

| Type             | Description                                                                                                                                             |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `auto_loan`      | A financial obligation incurred when borrowing funds to purchase a vehicle, usually secured by the vehicle itself.                                      |
| `collection`     | An account that reflects debts not paid on time, now handled by a third-party collection agency to recover the funds.                                   |
| `credit_builder` | A type of financial arrangement, typically a small loan or secured credit card, designed to help individuals establish or improve their credit history. |
| `credit_card`    | A revolving line of credit that allows the holder to make purchases or cash advances up to a certain limit, requiring regular payments.                 |
| `insurance`      | Financial protection against specific losses in exchange for premiums paid, not typically a liability unless premiums are unpaid.                       |
| `loan`           | Money borrowed that must be repaid with interest, can include various types such as personal, auto, or business loans.                                  |
| `medical`        | Accounts representing charges for healthcare services, often resulting from treatments or procedures not fully covered by insurance.                    |
| `mortgage`       | A long-term loan secured by real estate property, used to purchase or refinance that property.                                                          |
| `personal_loan`  | A secured or unsecured loan taken out by individuals from a bank or other financial institution for personal use.                                       |
| `student_loans`  | Loans issued for the purpose of financing postsecondary education, payable under terms agreed upon completion of study.                                 |
| `utility`        | Bills owed for basic services such as electricity, water, and gas, which if unpaid, can become delinquent liabilities.                                  |
| `bnpl`           | Buy Now, Pay Later — a type of loan that lets the borrower make a purchase immediately and pay for it over time in installments.                        |
| `fintech`        | An account facilitated by a financial technology (fintech) company acting as an intermediary between the borrower and a partner bank or lender.         |

## Account Liability Sub-Types

| Type             | Subtypes                                                                       |
| ---------------- | ------------------------------------------------------------------------------ |
| `loan`           | `business`, `unsecured`                                                        |
| `auto_loan`      | `lease`, `loan`                                                                |
| `collection`     | -                                                                              |
| `mortgage`       | `heloc`                                                                        |
| `credit_card`    | `business`, `charge`, `flexible_spending`, `secured`                           |
| `personal_loan`  | `line_of_credit`, `heloc`, `purchase`, `lease`, `note`, `secured`, `unsecured` |
| `student_loans`  | `private`, `federal`                                                           |
| `credit_builder` | `rent`                                                                         |

## Webhook Payload

The [Webhook](/2026-03-30/reference/webhooks/overview) payload will contain the following information:

```json theme={null}
{
  "id": "string",
  "type": "account.create" | "account.update" | "account.number.update",
  "path": "/accounts/<acc_id>",
  "event": "<evt_id>"
}
```

<RequestExample>
  ```json Liability theme={null}
  {
    "id": "acc_RGACQH7XdfYhC",
    "holder_id": "ent_HYmQrVrcJQBBQ",
    "status": "active",
    "type": "liability",
    "liability": {
      "mch_id": "mch_302086",
      "mask": "1580",
      "ownership": "primary",
      "fingerprint": "27d5c0ea28338619192076d150eb7b56c288f9a1",
      "type": "credit_card",
      "name": "Chase Sapphire Reserve Credit Card"
    },
    "latest_verification_session": "avf_tB9mpmew8FLit",
    "update": "upt_NYV5kfjskTTCJ",
    "balance": "bal_dGCCNWHMQYRay",
    "card_brand": "crd_eVRdjn4jsfk3e",
    "payment_instrument": "pmt_inst_pd788hPVhLT37",
    "attribute": "acc_attr_cWBKqwVP87kim",
    "products": ["balance", "card_brand", "update", "payment", "payment_instrument.card", "payment_instrument.network_token", "payment_instrument.inbound_achwire_payment"],
    "restricted_products": ["attribute", "sensitive"],
    "subscriptions": [],
    "available_subscriptions": ["update.snapshot", "update"],
    "restricted_subscriptions": ["transaction"],
    "error": null,
    "metadata": null,
    "created_at": "2024-02-12T18:57:57.857Z",
    "updated_at": "2024-03-20T04:43:21.655Z",
  }
  ```

  ```json ACH theme={null}
  {
    "id": "acc_BcRdHNjb9TYKV",
    "holder_id": "ent_wUzi83DJdx99e",
    "status": "active",
    "type": "ach",
    "ach": {
      "routing": "367537407",
      "number": "57838927",
      "type": "checking"
    },
    "latest_verification_session": "avf_7WGUjnFLcipRm",
    "products": [
      "payment"
    ],
    "restricted_products": [],
    "error": null,
    "metadata": null,
    "created_at": "2023-10-23T06:25:56.500Z",
    "updated_at": "2023-10-23T06:25:56.500Z"
  }
  ```
</RequestExample>
