> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.hopnow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Account

> Fetch a single account with its full KYB response

Fetches a single account with its full KYB response, including onboarding progress, requirements, and rejection reasons. Returns 404 if the account does not exist and 403 if the id resolves to an account owned by another organization.

## Path Parameters

<ParamField path="customer_id" type="string" required>
  Platform customer id.
</ParamField>

<ParamField path="account_id" type="string" required>
  Account id.
</ParamField>

## Response

Returns the full account object.

<ResponseField name="object" type="string">
  Always `account`.
</ResponseField>

<ResponseField name="id" type="string">
  Account id (e.g. `acct_3mnq7c1e6a2b4f3c9b8d2e5a`).
</ResponseField>

<ResponseField name="customer_id" type="string">
  Platform customer id.
</ResponseField>

<ResponseField name="type" type="enum | null">
  Entity type: `individual` or `business`. `null` until KYC starts.
</ResponseField>

<ResponseField name="kyc_status" type="enum | null">
  Verification status: `not_started`, `under_review`, `action_needed`, `approved`, or `rejected`. Newly created accounts remain `not_started` until the requirements returned by this endpoint are complete; Hop then starts verification review automatically.
</ResponseField>

<ResponseField name="display_name" type="string | null">
  Account display name.
</ResponseField>

<ResponseField name="contact_email" type="string | null">
  Primary contact email.
</ResponseField>

<ResponseField name="country_code" type="string | null">
  ISO 3166-1 alpha-2 country code. Derived from `registered_address.country`.
</ResponseField>

<ResponseField name="onboarding" type="object">
  Onboarding state.

  <Expandable title="child attributes">
    <ResponseField name="requirements_version" type="string">
      Opaque identifier of the requirement set applied to this account. Treat it as an opaque value; do not parse it.
    </ResponseField>

    <ResponseField name="ready_for_submission" type="boolean">
      Whether all requirements are complete and the account is ready for final submission.
    </ResponseField>

    <ResponseField name="submission_status" type="enum">
      One of `not_ready`, `ready`, `submitting`, or `submitted`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="requirements" type="object">
  Requirement state: `complete` (string\[]), `pending` (string\[]), `missing` (object\[]), and `issues` (object\[]). This is the preferred source for rendering the next onboarding action.
</ResponseField>

<ResponseField name="associated_persons" type="object[]">
  Associated-person progress, including `verification_status`, `hosted_url`, and `hosted_url_expires_at` when hosted verification is required.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string">
      Associated person id (`aap_…`).
    </ResponseField>

    <ResponseField name="role" type="enum">
      Person's role (e.g. `ultimate_beneficial_owner`, `director`, `control_person`).
    </ResponseField>

    <ResponseField name="is_signer" type="boolean">
      Whether the person is an authorized signer.
    </ResponseField>

    <ResponseField name="email" type="string">
      Person's email address.
    </ResponseField>

    <ResponseField name="phone_number" type="string">
      Person's phone number.
    </ResponseField>

    <ResponseField name="verification_status" type="enum">
      Person's verification status.
    </ResponseField>

    <ResponseField name="hosted_url" type="string | null">
      Hosted verification URL, present when hosted verification is required.
    </ResponseField>

    <ResponseField name="hosted_url_expires_at" type="string | null">
      ISO 8601 expiry timestamp of the hosted verification URL.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="rejection_reasons" type="object[] | null">
  Review rejection reasons, populated only when `kyc_status` is `rejected` (terminal). Null otherwise. Recoverable review requests (`action_needed`) appear as `rfi.*` entries under `requirements.issues`, each carrying its own `reason`, `developer_reason`, and `accepted_document_types`; upload the corrected document with the entry's key as `requirement_key` and re-submission happens automatically. During an open request-for-information cycle, `onboarding.submission_status` cycles back through `not_ready` / `ready` until the corrected documents are re-submitted.

  <Expandable title="child attributes">
    <ResponseField name="reason" type="string">
      User-safe rejection reason — safe to display to your end customer.
    </ResponseField>

    <ResponseField name="developer_reason" type="string">
      Machine-readable reason for your integration logic. Must not be shown to end customers.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created" type="string">
  ISO 8601 timestamp when created (standard envelope).
</ResponseField>

<ResponseField name="updated" type="string">
  ISO 8601 timestamp when last updated (standard envelope).
</ResponseField>

<ResponseField name="created_by" type="string | null">
  Actor that created the account (standard envelope).
</ResponseField>

<ResponseField name="updated_by" type="string | null">
  Actor that last updated the account (standard envelope).
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "object": "account",
    "id": "acct_3mnq7c1e6a2b4f3c9b8d2e5a",
    "customer_id": "cus_x7k2m9p4q1w8e5r3t6y0u2i4",
    "type": "business",
    "kyc_status": "not_started",
    "display_name": "Acme Pte Ltd",
    "contact_email": "ops@acme.example",
    "country_code": "SG",
    "onboarding": {
      "requirements_version": "ads_business_sgp_v1",
      "ready_for_submission": false,
      "submission_status": "not_ready"
    },
    "requirements": {
      "complete": ["company.proof_of_address", "company.register_of_directors"],
      "pending": [],
      "missing": [
        {
          "key": "company.certificate_of_incorporation",
          "type": "company_document",
          "label": "Certificate of incorporation",
          "accepted_document_types": ["certificate_of_incorporation"]
        },
        {
          "key": "associated_person.ubo.min_count",
          "type": "associated_person",
          "label": "At least one ultimate beneficial owner is required",
          "role": "ultimate_beneficial_owner",
          "min_count": 1
        }
      ],
      "issues": []
    },
    "associated_persons": [
      {
        "id": "aap_8rty2c1x7k2m9p4q1w8e5r3t",
        "role": "ultimate_beneficial_owner",
        "is_signer": true,
        "email": "jane@acme.example",
        "phone_number": "+6581234567",
        "verification_status": "under_review",
        "hosted_url": "https://verify.platform.example/s/3f6b2a91-4c8e-4f27-9d15-8a2e6c1b7d40",
        "hosted_url_expires_at": "2026-06-30T04:20:00Z"
      }
    ],
    "rejection_reasons": null,
    "created": "2026-05-01T10:00:00Z",
    "updated": "2026-05-01T10:05:00Z",
    "created_by": "ak_x7k2m9p4q1w8e5r3t6y0u2i4",
    "updated_by": null
  }
  ```
</ResponseExample>
