> ## 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 entity 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 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>;
  });
};

Entities are a representation of your application's end-users (individuals or corporations). Throughout
Method's ecosystem, an `Entity` is the legal owner of an [Account](/2026-03-30/reference/accounts/overview), and is the primary object for many of Method's API endpoints.

<Note>
  Entities should be persisted with a 1:1 relationship throughout the lifecycle
  of your end-user.
</Note>

#### PII Requirements

`Entity` PII requirements are pre-defined during onboarding based on your team's specific use case. Entities require at a minimum name + phone number for most services.
Some `Products` and `Subscriptions` may require additional information to be provided to Method to enable certain features. Contact your Method CSM for more information.

## Entity Objects

<Tabs>
  <Tab title="Individual">
    <ParamList
      items={[
    get_common_parameters("Entity").id,
    get_common_parameters("Entity").type(["individual"]),
    {
      name: "individual",
      type: "object | null",
      description: "Individual information of the Entity.",
      items: [
        {
          name: "individual.first_name",
          type: "string | null",
          description: "The legal first name of the individual.",
        },
        {
          name: "individual.last_name",
          type: "string | null",
          description: "The legal last name of the individual.",
        },
        {
          name: "individual.phone",
          type: "string | null",
          description:
            "Mobile phone number of the individual in E.164 format. The number will only be used for KYC / AML verification.",
        },
        {
          name: "individual.dob",
          type: "string | null",
          description: "The individual's date of birth in ISO 8601 format.",
        },
        {
          name: "individual.email",
          type: "string | null",
          description:
            "Email address of the individual. The email will only be used for KYC / AML verification.",
        },
        {
          name: "individual.ssn_4",
          type: "string | null",
          description: (
            <>
              The last 4 digits of the individual's SSN. This field is
              hidden after the SSN 4 is provided, and can be accessed via{" "}
              <a href="/2026-03-30/reference/entities/identities/retrieve">
                Entity Identity
              </a>
              .
            </>
          ),
        },
        {
          name: "individual.ssn",
          type: "string | null",
          description: (
            <>
              The individual's SSN. This field is hidden after the SSN is provided, and can be accessed
              via{" "}
              <a href="/2026-03-30/reference/entities/identities/retrieve">
                Entity Identity
              </a>
              .
            </>
          ),
        },
      ],
    },
    get_common_parameters("Entity").error,
    {
      name: "address",
      type: "object | null",
      description: "The Entity's address.",
      items: [
        {
          name: "address.line1",
          type: "string",
          description: "The first line of the Entity's address.",
        },
        {
          name: "address.line2",
          type: "string",
          description: "The second line of the Entity's address.",
        },
        {
          name: "address.city",
          type: "string",
          description: "The city of the Entity's address.",
        },
        {
          name: "address.state",
          type: "string",
          description:
            "The two-letter abbreviation for the state of the Entity's address.",
        },
        {
          name: "address.zip",
          type: "string",
          description: "The ZIP code of the Entity's address.",
        },
      ],
    },
    get_common_parameters("Entity").status([
      {
        name: "active",
        description: (
            <>
              The Entity has completed all <code>Verification</code> and can access most of Method's products. Verification requirements
              are set on a team-by-team basis and some verification might be auto populated.
            </>
        ),
    },
      {
        name: "incomplete",
        description: (
            <>
                The Entity has not completed all <code>Verification</code> requirements based on the PII provided and your team's restrictions.
            </>
        )
      },
      {
        name: "disabled",
        description: (
          <>
            The Entity has been disabled and no longer has access to Method's products.
            Entities can transition into the <code>disabled</code> status if
            an Entity withdraws consent (via the Consent endpoint or via a Payment failure)
          </>
        ),
      },
    ]),
    {
      name: "verification",
      type: "object",
      description: "Verification status of the Entity. Verification requirements are set on a team-by-team basis.",
      items: [
        {
          name: "verification.identity",
          type: "object",
          description: "Identity verification status for the Entity.",
          items: [
            {
              name: "verification.identity.verified",
              type: "boolean",
              description:
                "The Entity's identity, who they claim to be, has been verified.",
            },
            {
              name: "verification.identity.matched",
              type: "boolean",
              description:
                "The Entity's identity has been matched through a Method trusted provider.",
            },
            {
              name: "verification.identity.latest_verification_session",
              type: "string | null",
              description: (
                <>
                  The ID of the latest verification session for the Entity's
                  identity.{" "}
                  <Tooltip tip="This can be expanded into an object with the expand query parameter.">
                    <a href="/2026-03-30/reference/expanding">Expandable</a>
                  </Tooltip>
                  .
                </>
              ),
            },
            {
              name: "verification.identity.methods",
              type: "string[]",
              description: (
                <>
                  The{" "}
                  <a href="/2026-03-30/reference/entities/verification-sessions/overview#verification-methods">
                    Verification Methods
                  </a>{" "}
                  that the Entity can use to verify their identity. Verification and the available methods are unique on a team-by-team basis.
                </>
              ),
              enums: ['kba', 'byo_kyc', 'element'],
            },
          ],
        },
        {
          name: "verification.phone",
          type: "object",
          description: "Phone verification status for the Entity.",
          items: [
            {
              name: "verification.phone.verified",
              type: "boolean",
              description: "The Entity's phone number has been verified.",
            },
            {
              name: "verification.phone.latest_verification_session",
              type: "string | null",
              description: (
                <>
                  The ID of the latest verification session for the Entity's
                  phone number.{" "}
                  <Tooltip tip="This can be expanded into an object with the expand query parameter.">
                    <a href="/2026-03-30/reference/expanding">Expandable</a>
                  </Tooltip>
                  .
                </>
              ),
            },
            {
              name: "verification.phone.methods",
              type: "string[]",
              description: (
                <>
                  The{" "}
                  <a href="/2026-03-30/reference/entities/verification-sessions/overview#verification-methods">
                    Verification Methods
                  </a>{" "}
                  that the Entity can use to verify their phone number. Verification and the available methods are unique on a team-by-team basis.
                </>
              ),
              enums: ['sms', 'sna', 'byo_sms'],
            },
          ],
        },
      ],
    },
  ]}
    />

    <ExpandableFieldsList resource_type="entity" />

    <ParamList
      items={[
    {
      name: "products",
      type: "string[]",
      description: (
        <>
          A list of products that the Entity has access to. See{" "}
          <a href="/2026-03-30/reference/entities/products/overview#product-names">
            Product Names
          </a>
          .
        </>
      ),
    },
    {
      name: "restricted_products",
      type: "string[]",
      description: (
        <>
          A list of products that the Entity can have access to but is
          missing some requirements. (e.g. Missing <code>Verification</code> requirements) See{" "}
          <a href="/2026-03-30/reference/entities/products/overview#product-names">
            Product Names
          </a>
          .
        </>
      ),
    },
    {
      name: "subscriptions",
      type: "string[]",
      description: (
        <>
          A list of products that the Entity is subscribed to. See{" "}
          <a href="/2026-03-30/reference/entities/subscriptions/overview#subscription-names">
            Subscription Names
          </a>
          .
        </>
      ),
    },
    {
      name: "available_subscriptions",
      type: "string[]",
      description: (
        <>
          A list of products that the Entity can enroll into a subscription
          with. See{" "}
          <a href="/2026-03-30/reference/entities/subscriptions/overview#subscription-names">
            Subscription Names
          </a>
          .
        </>
      ),
    },
    {
      name: "restricted_subscriptions",
      type: "string[]",
      description: (
        <>
          A list of products that the Entity can subscribe to but is missing
          some requirements. (e.g. Missing <code>Verification</code> requirements) See{" "}
          <a href="/2026-03-30/reference/entities/subscriptions/overview#subscription-names">
            Subscription Names
          </a>
          .
        </>
      ),
    },
    get_common_parameters("Entity").metadata,
    get_common_parameters("Entity").created_at,
    get_common_parameters("Entity").updated_at,
  ]}
    />
  </Tab>

  <Tab title="Corporation">
    <ParamList
      items={[
    get_common_parameters("Entity").id,
    get_common_parameters("Entity").type(["corporation"]),
    {
      name: "corporation",
      type: "object | null",
      description: "Corporation information of the Entity.",
      items: [
        {
          name: "corporation.name",
          type: "string | null",
          description: "The legal name of the corporation Entity.",
        },
        {
          name: "corporation.dba",
          type: "string | null",
          description:
            "DBA (Doing Business As) name of the corporation Entity.",
        },
        {
          name: "corporation.ein",
          type: "string | null",
          description: "The EIN of the corporation Entity.",
        },
        {
          name: "corporation.owners",
          type: "object[]",
          description:
            "The details of the corporation's owners (only include individuals owning 25% or more of the corporation).",
          items: [
            {
              name: "corporation.owners.first_name",
              type: "string | null",
              description: "The legal first name of the corporation owner.",
            },
            {
              name: "corporation.owners.last_name",
              type: "string | null",
              description: "The legal last name of the corporation owner.",
            },
            {
              name: "corporation.owners.phone",
              type: "string | null",
              description:
                "Mobile phone number of the corporation owner in E.164 format. The number will only be used for KYC / AML verification.",
            },
            {
              name: "corporation.owners.email",
              type: "string | null",
              description:
                "Email address of the corporation owner. The email will only be used for KYC / AML verification.",
            },
            {
              name: "corporation.owners.dob",
              type: "string | null",
              description:
                "The corporation owner's date of birth in ISO 8601 format.",
            },
            {
              name: "corporation.owners.address",
              type: "object",
              description: "The corporation owner's address.",
              items: [
                {
                  name: "corporation.owners.address.line1",
                  type: "string | null",
                  description:
                    "The first line of the corporation owner's address.",
                },
                {
                  name: "corporation.owners.address.line2",
                  type: "string | null",
                  description:
                    "The second line of the corporation owner's address.",
                },
                {
                  name: "corporation.owners.address.city",
                  type: "string | null",
                  description:
                    "The city of the corporation owner's address.",
                },
                {
                  name: "corporation.owners.address.state",
                  type: "string | null",
                  description:
                    "The two-letter abbreviation for the state of the corporation owner's address.",
                },
                {
                  name: "corporation.owners.address.zip",
                  type: "string | null",
                  description: "The ZIP code of the corporation owner.",
                },
              ],
            },
          ],
        },
      ],
    },
    get_common_parameters("Entity").error,
    {
      name: "address",
      type: "object | null",
      description: "The Entity's address.",
      items: [
        {
          name: "address.line1",
          type: "string",
          description: "The first line of the Entity's address.",
        },
        {
          name: "address.line2",
          type: "string",
          description: "The second line of the Entity's address.",
        },
        {
          name: "address.city",
          type: "string",
          description: "The city of the Entity's address.",
        },
        {
          name: "address.state",
          type: "string",
          description:
            "The two-letter abbreviation for the state of the Entity's address.",
        },
        {
          name: "address.zip",
          type: "string",
          description: "The ZIP code of the Entity's address.",
        },
      ],
    },
    get_common_parameters("Entity").status([
      {
        name: "active",
        description:
          "The Entity has passed basic KYB verification.",
      },
      {
        name: "incomplete",
        description:
          "The Entity could not be verified using the information provided. Update the Entity by providing more information to enable capabilities.",
      },
      {
        name: "disabled",
        description: (
          <>
            The Entity has been disabled and no longer has capabilities.
            Entities can transition into the <code>disabled</code> status if
            an Entity revokes authorization for a payment that has already
            been sent.
          </>
        ),
      },
    ]),
    get_common_parameters("Entity").metadata,
    get_common_parameters("Entity").created_at,
    get_common_parameters("Entity").updated_at,
  ]}
    />
  </Tab>
</Tabs>

## Webhook Payload

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

```json theme={null}
{
  "id": "string",
  "type": "entity.create" | "entity.update",
  "path": "/entities/<ent_id>",
  "event": "<evt_id>"
}
```

<RequestExample>
  ```json Individual theme={null}
  {
    "id": "ent_BzirqpLEm3BW7",
    "type": "individual",
    "individual": {
      "first_name": "Kevin",
      "last_name": "Doyle",
      "phone": "+15121231113",
      "dob": "1997-03-18",
      "email": "kevin.doyle@gmail.com",
      "ssn_4": "xxxx",
      "ssn": "xxxxxxxxx"
    },
    "error": null,
    "address": {
      "line1": "3300 N Interstate 35",
      "line2": null,
      "city": "Austin",
      "state": "TX",
      "zip": "78705"
    },
    "status": "incomplete",
    "verification": {
      "identity": {
        "verified": false,
        "matched": false,
        "latest_verification_session": null,
        "methods": [
          "element",
          "kba"
        ]
      },
      "phone": {
        "verified": true,
        "latest_verification_session": "evf_P4QXNj93Y9J8L",
        "methods": []
      }
    },
    "connect": null,
    "credit_score": null,
    "attribute": null,
    "vehicle": null,
    "products": [
      "identity"
    ],
    "restricted_products": [
      "credit_score",
      "connect",
      "attribute",
      "vehicle"
    ],
    "subscriptions": [],
    "available_subscriptions": [],
    "restricted_subscriptions": [
      "connect",
      "credit_score"
    ],
    "metadata": null,
    "created_at": "2023-10-24T21:50:53.024Z",
    "updated_at": "2023-10-24T21:50:53.024Z"
  }
  ```

  ```json Corporation theme={null}
  {
    "id": "ent_A6bmTtFmxQhGQ",
    "type": "corporation",
    "corporation": {
      "name": "Alphabet Inc.",
      "dba": "Google",
      "ein": "641234567",
      "owners": [
        {
          "first_name": "Sergey",
          "last_name": "Brin",
          "phone": "+16505555555",
          "email": "sergey@google.com",
          "dob": "1973-08-21",
          "address": {
            "line1": "600 Amphitheatre Parkway",
            "line2": null,
            "city": "Mountain View",
            "state": "CA",
            "zip": "94043"
          }
        }
      ]
    },
    "error": null,
    "address": {
      "line1": "1600 Amphitheatre Parkway",
      "line2": null,
      "city": "Mountain View",
      "state": "CA",
      "zip": "94043"
    },
    "status": "active",
    "metadata": null,
    "created_at": "2023-10-24T21:26:17.225Z",
    "updated_at": "2023-10-24T21:26:17.225Z"
  }
  ```
</RequestExample>
