Onboard individuals

Updated as of 12/04/2025

Individual payloads

New endpoint payloads and flows were developed to add support to more account types with more complex structures, including joint accounts. This new flow supports opening the following account types:

  • INDIVIDUAL_TAXABLE (current account type that is created in our flow when we create an account for an Individual End Client)
  • INSTITUTIONAL_TAXABLE (current account type that is created in our flow when we create an account for an Institutional End Client)
  • IRA - may contain an optional CONVERSION or ROLLOVER sub-type
  • ROTH - may contain an optional CONVERSION or ROLLOVER sub-type
  • JOINT
  • CUSTODIAL

Note: This step to create an individual end client is very similar with the already existing flow.

The differences are:

  • physicalStateUS needs to be filled with the United States state 2 letter code when the physicalCountry is US.
  • physicalStateOther needs to be filled with alphabetical characters when the physicalCountry is not US.
  • New idType field that needs to have the value GOVERNMENT_ISSUED_ID_CARD or PASSPORT
    • If GOVERNMENT_ISSUED_ID_CARD the files that will need to be provided are idCardFront (step 2 and 3) and idCardBack (step 4 and 5)
    • If PASSPORT the files that will need to be provided is passportDocument (step 6 and 7)
  • This fields have been removed on this new flow:
    • initialFundingMethod
    • sourceOfWealth
    • initialFundingWalletGroup



Integration steps - End client individual onboarding steps

Step 1: 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 - refer the table below to check all the possibilities for the entries object

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

The endpoint accepts the following entries data:

TagDescriptionRequiredTypeValue restrictions
legalEntityNamelegal entity nameYesString
programCustomerlist of end clientsYesArray1 entry
programCustomer/firstNameend client first nameYesStringlimited to 36 characters
programCustomer/lastNameend client last nameYesStringlimited to 48 characters
programCustomer/middleNameend client middle nameNoString
programCustomer/dateOfBirthend client date of birthYesDateISO 8601 date (without time)
programCustomer/emailend client email addressYesStringvalid e-mail address
programCustomer/ssnend client social security numberYes (this or governmentId should be provided)String9-digit number
programCustomer/governmentIdend client governement specific idYes (this or ssn should be provided)String
programCustomer/physicalCountryend client countryYesStringISO 3166-1 alpha-2 country code
programCustomer/physicalStreetAddressend client street addressYesString
programCustomer/physicalCityend client city nameYesString
programCustomer/physicalStateUSend client US stateYes, for US countryString2-character USPS state code
programCustomer/physicalStateOtherend client non-US state or provinceYes, for non-US countriesString
programCustomer/physicalPostalCodeend client zip code or postal codeYesString
programCustomer/idTypeend client type of ID uploadedYesEnumGOVERNMENT_ISSUED_ID_CARD or PASSPORT
certifiedW9customer has signed w9 certficationYes if programCustomer/ssn is provided (US individuals)Booleantrue or false (true if required)
certifiedW8customer has signed w8 certficationYes if programCustomer/governmentId is provided (Non-US individuals)Booleantrue or false (true if required)

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


Sample

Example payload for PC Individual for w8 (Non-US Individual):

{
  "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": "[email protected]",
			  "governmentId": "123456789",
			  "physicalCity": "city",
			  "physicalCountry": "FRANCE",
			  "physicalPostalCode": "7500",
			  "physicalStateOther": "Paris", 
			  "physicalStreetAddress": "123 Lightcycle Way",
			  "idType": "GOVERNMENT_ISSUED_ID_CARD"
			}
		},
	  { "key": "certifiedW8", "value": true },
  ]
}

Example payload for PC Individual for w9 (US individual)

{
  "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": "[email protected]",
			  "ssn": "123456789",
			  "physicalCity": "city",
			  "physicalCountry": "US",
			  "physicalPostalCode": "94104",
			  "physicalStateUS": "CA", 
			  "physicalStreetAddress": "123 Lightcycle Way",
			  "idType": "GOVERNMENT_ISSUED_ID_CARD"
			}
		},
	  { "key": "certifiedW9", "value": true },
  ]
}

Response:

{
    "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "status": "IN_PROGRESS"
    }
}

Step 2: Upload required document images

POST /v2/onboarding/customers/{{customerId}}/document

TagDescriptionRequiredTypeValue Restrictions
documentTypepassportyes, if ID card is not providedUploadimage/gif, image/jpeg, image/png, or application/pdf less than 25MB
documentTypegovernment issued ID card frontyes, if passport is not providedUploadimage/gif, image/jpeg, image/png, or application/pdf less than 25MB
documentTypegovernment issued ID card backyes, if passport is not providedUploadimage/gif, image/jpeg, image/png, or application/pdf less than 25MB

Note: A single image file of type GIF, JPEG, PNG or PDF should be uploaded to the URL. If a second one is uploaded, the latest one will be the one used. A multi-file archive would be rejected since it’s not one of these MIME types.

A signed upload URL is returned, which will accept the document in a PUT call. The upload URL will only accept a document for 15 minutes. If the URL times out, a new one can be requested by calling the above endpoint again.


Sample

Request:

{
    "documentType": "programCustomer.idCardFront"
}

Response:

{
    "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 image:

curl -X PUT -H 'Content-Type: application/octet-stream' --data-binary @image.png {{step2url.response.body.data.url}}

Step 3: check the status of the individual application

GET /v2/onboarding/customers/{{customerId}}

Any errors or missing documents will be listed in the errors section of the returned JSON.


Sample

Response:

{
    "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "entries": [
            {
                "key": "programCustomer",
                "value": [
                    {
                        "dateOfBirth": "01/01/1970",
                        "email": "[email protected]",
                        "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 4: Submit the application

POST /v2/onboarding/customers/{{customerId}}/submit

Once the application is 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.

Step 5: Check the approval status of the individual application

GET /v2/onboarding/customers/{{customerId}}

Upon successful submission, the returned application status will change from IN_PROGRESS to IN_REVIEW. Once the application has been fully approved, the status will change to COMPLETE.

Alternatively you can register for a webhook asynchronous response for an event when the application is approved. Information on registering for webhooks is available here.


Sample

Response:

{
    "data": {
        "customerId": "c78e4bbd8f346e1f314f160ef3c84e69d2d1cbc878e569137eba688a1cf56ea1",
        "entries": [
            {
                "key": "programCustomer",
                "value": [
                    {
                        "dateOfBirth": "01/01/1970",
                        "email": "[email protected]",
                        "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 6: (Reliance Only) Edit Customer Onboarding Information

RIAs for which Anchorage has full or partial KYC reliance have access to a unique onboarding flow in which Program Customers are “auto-approved” given they have already gone through KYC with the RIA. As a result, for these RIAs, we allow editability for select Program Customer fields even after application “status” is “COMPLETE”.

TagDescriptionRequiredCan EditTypeValue Restrictions
legalEntityNamelegal entity nameYesNoString
programCustomerlist of end clientsYesYesArray1 entry
programCustomer/firstNameend client first nameYesYesStringlimited to 36 characters
programCustomer/lastNameend client last nameYesYesStringlimited to 48 characters
programCustomer/middleNameend client middle nameNoYesString
programCustomer/dateOfBirthend client date of birthYesNoDateISO 8601 date (without time)
programCustomer/emailend client email addressYesYesStringvalid e-mail address
programCustomer/ssnend client social security numberYes (this or governmentId should be provided)NoString9-digit number
programCustomer/governmentIdend client governement specific idYes (this or ssn should be provided)NoString
programCustomer/physicalCountryend client countryYesYesStringISO 3166-1 alpha-2 country code
programCustomer/physicalStreetAddressend client street addressYesYesString
programCustomer/physicalCityend client city nameYesYesString
programCustomer/physicalStateUSend client US stateYes, for US countryYesString2-character USPS state code
programCustomer/physicalStateOtherend client non-US state or provinceYes, for non-US countriesYesString
programCustomer/physicalPostalCodeend client zip code or postal codeYesYesString
programCustomer/idTypeend client type of ID uploadedYesNoEnumGOVERNMENT_ISSUED_ID_CARD or PASSPORT
certifiedW9customer has signed w9 certficationYes if programCustomer/ssn is provided (US individuals)NoBooleantrue or false
certifiedW8customer has signed w8 certficationYes if programCustomer/governmentId is provided (Non-US individuals)NoBooleanshould be true if required


Changelog

DateChange
December 4, 2025Updates for new onboarding API fields related to new 1099-DA requirements to collect W8/W9 to avoid backup withholding. New fields added are around Country of Citizenship and Tax Reporting Certification.
June 10, 2025Updates for new onboarding API payloads and flows
May 1, 2025Initial version

Did this page help you?