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

# Onboard individuals

> Submit, upload, and approve individual end client onboarding applications via the Anchorage Digital onboarding API.

This flow supports opening the following account types for individual end clients:

* `INDIVIDUAL_TAXABLE`
* `INSTITUTIONAL_TAXABLE`
* `IRA` — may contain an optional `CONVERSION` or `ROLLOVER` sub-type
* `ROTH` — may contain an optional `CONVERSION` or `ROLLOVER` sub-type
* `JOINT`
* `CUSTODIAL`

Key differences from the existing individual onboarding flow:

* `physicalStateUS` must be the 2-letter USPS state code when `physicalCountry` is `US`.
* `physicalStateOther` must contain alphabetical characters when `physicalCountry` is not `US`.
* New `idType` field: `GOVERNMENT_ISSUED_ID_CARD` or `PASSPORT`.
  * `GOVERNMENT_ISSUED_ID_CARD` requires uploading `idCardFront` and `idCardBack`.
  * `PASSPORT` requires uploading `passportDocument`.
* Removed fields: `initialFundingMethod`, `sourceOfWealth`, `initialFundingWalletGroup`.

***

## Integration steps

<Steps>
  <Step title="Create an individual application">
    **`POST /v2/onboarding/customers`**

    * `applicationType`: `RIA_PC_INDIVIDUAL`
    * `externalId`: unique identifier used by the wealth platform to identify this end client
    * `entries`: see table below

    <Note>
      If the given `externalId` has already been tied to another end client, an `external_id already in use` error will be returned.
    </Note>

    | **Tag**                               | **Description**                       | **Required**                                                           | **Type** | **Value restrictions**                    |
    | :------------------------------------ | :------------------------------------ | :--------------------------------------------------------------------- | :------- | :---------------------------------------- |
    | legalEntityName                       | legal entity name                     | Yes                                                                    | String   |                                           |
    | programCustomer                       | list of end clients                   | Yes                                                                    | Array    | 1 entry                                   |
    | programCustomer/firstName             | end client first name                 | Yes                                                                    | String   | limited to 36 characters                  |
    | programCustomer/lastName              | end client last name                  | Yes                                                                    | String   | limited to 48 characters                  |
    | programCustomer/middleName            | end client middle name                | No                                                                     | String   |                                           |
    | programCustomer/dateOfBirth           | end client date of birth              | Yes                                                                    | Date     | ISO 8601 date (without time)              |
    | programCustomer/email                 | end client email address              | Yes                                                                    | String   | valid e-mail address                      |
    | programCustomer/ssn                   | end client social security number     | Yes (this or `governmentId` required)                                  | String   | 9-digit number                            |
    | programCustomer/governmentId          | end client government-specific ID     | Yes (this or `ssn` required)                                           | String   |                                           |
    | programCustomer/physicalCountry       | end client country                    | Yes                                                                    | String   | ISO 3166-1 alpha-2 country code           |
    | programCustomer/physicalStreetAddress | end client street address             | Yes                                                                    | String   |                                           |
    | programCustomer/physicalCity          | end client city name                  | Yes                                                                    | String   |                                           |
    | programCustomer/physicalStateUS       | end client US state                   | Yes, for US country                                                    | String   | 2-character USPS state code               |
    | programCustomer/physicalStateOther    | end client non-US state or province   | Yes, for non-US countries                                              | String   |                                           |
    | programCustomer/physicalPostalCode    | end client zip code or postal code    | Yes                                                                    | String   |                                           |
    | programCustomer/idType                | end client type of ID uploaded        | Yes                                                                    | Enum     | `GOVERNMENT_ISSUED_ID_CARD` or `PASSPORT` |
    | certifiedW9                           | customer has signed W-9 certification | Yes if `programCustomer/ssn` is provided (US individuals)              | Boolean  | `true` or `false`                         |
    | certifiedW8                           | customer has signed W-8 certification | Yes if `programCustomer/governmentId` is provided (non-US individuals) | Boolean  | `true` or `false`                         |

    A unique `customerId` is returned, which will be used in all future calls to identify this end client at Anchorage Digital.

    **Sample — non-US individual (W-8):**

    ```json theme={null}
    {
      "applicationType": "RIA_PC_INDIVIDUAL",
      "entries": [
        { "key": "legalEntityName", "value": "RIA PC Inv 1 Test" },
        {
          "key": "programCustomer",
          "value": {
            "firstName": "Kevin",
            "lastName": "Flynn_1",
            "dateOfBirth": "01/01/1970",
            "email": "kevin.flynn_1@test.com",
            "governmentId": "123456789",
            "physicalCity": "city",
            "physicalCountry": "FRANCE",
            "physicalPostalCode": "7500",
            "physicalStateOther": "Paris",
            "physicalStreetAddress": "123 Lightcycle Way",
            "idType": "GOVERNMENT_ISSUED_ID_CARD"
          }
        },
        { "key": "certifiedW8", "value": true }
      ]
    }
    ```

    **Sample — US individual (W-9):**

    ```json theme={null}
    {
      "applicationType": "RIA_PC_INDIVIDUAL",
      "entries": [
        { "key": "legalEntityName", "value": "RIA PC Inv 1 Test" },
        {
          "key": "programCustomer",
          "value": {
            "firstName": "Kevin",
            "lastName": "Flynn_1",
            "dateOfBirth": "01/01/1970",
            "email": "kevin.flynn_1@test.com",
            "ssn": "123456789",
            "physicalCity": "city",
            "physicalCountry": "US",
            "physicalPostalCode": "94104",
            "physicalStateUS": "CA",
            "physicalStreetAddress": "123 Lightcycle Way",
            "idType": "GOVERNMENT_ISSUED_ID_CARD"
          }
        },
        { "key": "certifiedW9", "value": true }
      ]
    }
    ```

    **Response:**

    ```json theme={null}
    {
      "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "status": "IN_PROGRESS"
      }
    }
    ```
  </Step>

  <Step title="Upload required document images">
    **`POST /v2/onboarding/customers/{{customerId}}/document`**

    | **Tag**      | **Description**                 | **Required**                     | **Type** | **Value restrictions**             |
    | :----------- | :------------------------------ | :------------------------------- | :------- | :--------------------------------- |
    | documentType | passport                        | Yes, if ID card is not provided  | Upload   | GIF, JPEG, PNG, or PDF — max 25 MB |
    | documentType | government-issued ID card front | Yes, if passport is not provided | Upload   | GIF, JPEG, PNG, or PDF — max 25 MB |
    | documentType | government-issued ID card back  | Yes, if passport is not provided | Upload   | GIF, JPEG, PNG, or PDF — max 25 MB |

    <Note>
      Upload a single image file (GIF, JPEG, PNG, or PDF). If a second file is uploaded, the latest replaces the first. Multi-file archives are rejected. A signed upload URL is returned and accepts the document via a PUT request. The URL is valid for 15 minutes — if it expires, request a new one by calling this endpoint again.
    </Note>

    **Sample request:**

    ```json theme={null}
    {
      "documentType": "programCustomer.idCardFront"
    }
    ```

    **Sample response:**

    ```json theme={null}
    {
      "data": {
        "url": "https://storage.googleapis.com/staging-191601-bio-default/anchorage/pii/v1/64626bc421f36808f99fa9542a2075ce67d0466a019f31aefa22f84f31a3adb2/ID_CARD_FRONT/55c7e1dc053fdd522470040e59a448cb3ad9593dd169729cee27660ae95466c4?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=kyc-default%40staging-191601.iam.gserviceaccount.com%2F20250409%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250409T042548Z&X-Goog-Expires=899&X-Goog-Signature=38c2cfa9f06d32c5ba0641fab10ca2270603b0f9c22fe0d2493787cc58673b2b557c8f243347b43fd42e216acc3f0fe391c7f5ba5df2442c2c4ec4a08ad9524554122ca0a0228761d90f668251812f359e2dbad39126b8c8cab4d0175bea227091ea85ac6e3c0a5d8ea587b02fcfee733f8e033f43b7835170db9cea9eaf3496198e112e7aa7b1cd6f2891f4540e09d3167960891dfdfe80ac93c2cd5a6e049d9eda3f97fcddc7fa36b932bd0b8ee8fe5f6c2689586d333c7b6a6aa0d431040d1fd961773e8dbff3d968599a565da379c50c81182279e925c7e30b75ea89a59988e9e53cbd6a133dfc8084cbd3a707e4bacbd08408c5f324e67a528c63a5b92c&X-Goog-SignedHeaders=host"
      }
    }
    ```

    **Upload the image:**

    ```bash theme={null}
    curl -X PUT -H 'Content-Type: application/octet-stream' --data-binary @image.png {{step2url.response.body.data.url}}
    ```
  </Step>

  <Step title="Check the status of the application">
    **`GET /v2/onboarding/customers/{{customerId}}`**

    Any errors or missing documents are listed in the `errors` section of the response.

    **Sample response:**

    ```json theme={null}
    {
      "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "entries": [
          {
            "key": "programCustomer",
            "value": [
              {
                "dateOfBirth": "01/01/1970",
                "email": "kevin.flynn_1@test.com",
                "firstName": "Kevin",
                "idCardBack": "866b68b4a99de75dd9bca11d231041a7bd4e2469bc488abf5d6614283917b34c",
                "idCardFront": "55c7e1dc053fdd522470040e59a448cb3ad9593dd169729cee27660ae95466c4",
                "idType": "GOVERNMENT_ISSUED_ID_CARD",
                "lastName": "Flynn_1",
                "physicalCity": "city",
                "physicalCountry": "US",
                "physicalPostalCode": "94104",
                "physicalStateUS": "CA",
                "physicalStreetAddress": "123 Lightcycle Way",
                "ssn": "123456789"
              }
            ]
          },
          {
            "key": "legalEntityName",
            "value": "RIA PC Inv 1 Test"
          }
        ],
        "errors": [
          {
            "key": "programCustomer.idCardFront",
            "status": "MISSING",
            "value": "expected 1 answer for non-void triggered question, instead got 0"
          },
          {
            "key": "programCustomer.idCardBack",
            "status": "MISSING",
            "value": "expected 1 answer for non-void triggered question, instead got 0"
          }
        ],
        "status": "IN_PROGRESS"
      }
    }
    ```
  </Step>

  <Step title="Submit the application">
    **`POST /v2/onboarding/customers/{{customerId}}/submit`**

    Once successfully submitted, you may submit another end client application or a linked subaccount application.

    <Note>
      You do not need to wait for approval before submitting linked subaccount applications.
    </Note>
  </Step>

  <Step title="Check the approval status">
    **`GET /v2/onboarding/customers/{{customerId}}`**

    Upon successful submission, status changes from `IN_PROGRESS` to `IN_REVIEW`. Once fully approved, status changes to `COMPLETE`.

    To receive asynchronous notification when approval is complete, register for webhooks. See [Configure webhooks](/knowledge-base/platform/developers/webhooks/webhooks-configure).

    **Sample response:**

    ```json theme={null}
    {
      "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "entries": [
          {
            "key": "programCustomer",
            "value": [
              {
                "dateOfBirth": "01/01/1970",
                "email": "kevin.flynn_1@test.com",
                "firstName": "Kevin",
                "idCardBack": "866b68b4a99de75dd9bca11d231041a7bd4e2469bc488abf5d6614283917b34c",
                "idCardFront": "55c7e1dc053fdd522470040e59a448cb3ad9593dd169729cee27660ae95466c4",
                "idType": "GOVERNMENT_ISSUED_ID_CARD",
                "lastName": "Flynn_1",
                "physicalCity": "city",
                "physicalCountry": "US",
                "physicalPostalCode": "94104",
                "physicalStateUS": "CA",
                "physicalStreetAddress": "123 Lightcycle Way",
                "ssn": "123456789"
              }
            ]
          },
          {
            "key": "legalEntityName",
            "value": "RIA PC Inv 1 Test"
          }
        ],
        "errors": [],
        "status": "COMPLETE"
      }
    }
    ```
  </Step>
</Steps>

***

## Reliance only: edit customer information

RIAs with full or partial KYC reliance have access to a flow in which program customers are auto-approved. For these RIAs, select fields remain editable even after application status is `COMPLETE`.

| **Tag**                               | **Description**                       | **Required**                                      | **Can edit** | **Type** | **Value restrictions**                    |
| :------------------------------------ | :------------------------------------ | :------------------------------------------------ | :----------- | :------- | :---------------------------------------- |
| legalEntityName                       | legal entity name                     | Yes                                               | No           | String   |                                           |
| programCustomer                       | list of end clients                   | Yes                                               | Yes          | Array    | 1 entry                                   |
| programCustomer/firstName             | end client first name                 | Yes                                               | Yes          | String   | limited to 36 characters                  |
| programCustomer/lastName              | end client last name                  | Yes                                               | Yes          | String   | limited to 48 characters                  |
| programCustomer/middleName            | end client middle name                | No                                                | Yes          | String   |                                           |
| programCustomer/dateOfBirth           | end client date of birth              | Yes                                               | No           | Date     | ISO 8601 date (without time)              |
| programCustomer/email                 | end client email address              | Yes                                               | Yes          | String   | valid e-mail address                      |
| programCustomer/ssn                   | end client social security number     | Yes (this or `governmentId` required)             | No           | String   | 9-digit number                            |
| programCustomer/governmentId          | end client government-specific ID     | Yes (this or `ssn` required)                      | No           | String   |                                           |
| programCustomer/physicalCountry       | end client country                    | Yes                                               | Yes          | String   | ISO 3166-1 alpha-2 country code           |
| programCustomer/physicalStreetAddress | end client street address             | Yes                                               | Yes          | String   |                                           |
| programCustomer/physicalCity          | end client city name                  | Yes                                               | Yes          | String   |                                           |
| programCustomer/physicalStateUS       | end client US state                   | Yes, for US country                               | Yes          | String   | 2-character USPS state code               |
| programCustomer/physicalStateOther    | end client non-US state or province   | Yes, for non-US countries                         | Yes          | String   |                                           |
| programCustomer/physicalPostalCode    | end client zip code or postal code    | Yes                                               | Yes          | String   |                                           |
| programCustomer/idType                | end client type of ID uploaded        | Yes                                               | No           | Enum     | `GOVERNMENT_ISSUED_ID_CARD` or `PASSPORT` |
| certifiedW9                           | customer has signed W-9 certification | Yes if `programCustomer/ssn` is provided          | No           | Boolean  | `true` or `false`                         |
| certifiedW8                           | customer has signed W-8 certification | Yes if `programCustomer/governmentId` is provided | No           | Boolean  | `true` or `false`                         |

***

## Changelog

| Date             | Change                                                                                                                                                                                                      |
| :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| December 4, 2025 | Updates for new onboarding API fields related to 1099-DA requirements: W-8/W-9 collection to avoid backup withholding. New fields added for **Country of Citizenship** and **Tax Reporting Certification**. |
| June 10, 2025    | Updates for new onboarding API payloads and flows                                                                                                                                                           |
| May 1, 2025      | Initial version                                                                                                                                                                                             |
