Onboard institutions

Updated as of 12/04/2025

Institution payloads

New customer 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

This step to create an institution 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 hasDbaName that is a boolean value true or false
  • New dbaNames is a text value that needs to be provided if hasDbaNameis true
  • New upload field called constitutionDocument that is a required field (step 2 and 3)
  • New upload field called proofOfAddressthat is required if hasProofOfAddress is true (step 4 and 5)
  • These fields have been removed in the new flow:
    • legalStructure
    • customerType
    • countryOfIncorporation
    • legalRegistAddrDifPrincPlace and all related fields:
      • legalCountry
      • legalStreetAddress
      • legalCity
      • legalStateProvince
      • legalPostalCode
    • initialFundingWalletGroup
    • sourceOfWealth



Integration steps: End client institution onboarding

Step 1: Create an institution application

POST /v2/onboarding/customers

  • applicationType: RIA_PC_INSTITUTION
  • 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 general entries data:

TagDescriptionRequiredTypeValue Restrictions
legalEntityNamelegal entity nameYesString
hasDbaNamedoes your organization have a registered DBA name?YesBooleantrue or false
dbaNameslast nameYes, if hasDbaName = YESString
businessRegistrationNumberBusiness registration numberyes (this or taxId should be provided)String
taxIdEINyes (this or businessRegistrationNumber should be provided)Number9-digit number
proofOfAddressContextWhen hasProofOfAddress is false explain whyNoString
legalStructureLegal structure of the institutionNoEnumC_CORP; LLC; LLP; LP; S_CORP; SOLE_PROP; TRUST; NON_PROFIT; OTHER
legalStructureOtherLegal structure of the institution when selects OTHER in the legalStructure questionNoString
physicalCountrycountryYesStringISO 3166-1 alpha-2 country code
physicalStreetAddressstreet addressYesString
physicalCitycity nameYesString
physicalStateUSUS stateYes, for US countryString2-character USPS state code
physicalStateOthernon-US state or provinceYes, for non-US countriesString
physicalPostalCodezip code or postal codeYesString
hasProofOfAddresscan you provide a proof of address?YesBooleantrue or false
hasProofOfAddressContextadditional context if unable to provide proof of addressNoString

Please note new entries data for inclusion in payload due to new IRS reporting requirements for both US and Non-US Entities.

TagDescriptionRequiredTypeValue Restrictions
US Entity
taxClassificationUsTax classification (entity type)Yes if taxId is provided (US entity)ENUMsee Tax Classifications page
taxExemptionPayeeCodeExempt payee codeNoENUMTAX_EXEMPT_PAYEE_CODE_1, TAX_EXEMPT_PAYEE_CODE_2 …. TAX_EXEMPT_PAYEE_CODE_13. (Values found here)
fatcaExemptionReportingCodeExemption from FATCA reporting codeNoENUMsee FATCA page
certifiedW9customer has signed w9 certficationYes if taxId is provided (US entity)Booleantrue or false (true if required)
Non-US Entity
taxClassificationNonUsTax classification (entity type)Yes if businessRegistrationNumber is provided (Non-US entity)ENUMsee Tax Classifications page
disregardedEntityNameDisregarded entity nameYes if taxClassificationNonUs=DISREGARDED_ENTITYString
fatcaEntityTypeFATCA entity typeYes if taxClassificationNonUs=DISREGARDED_ENTITYENUMsee FATCA page
fatcaStatusFfiFATCA statusYes if fatcaEntityType=FFIENUMsee FATCA page
fatcaStatusNffeFATCA statusYes if fatcaEntityType=NFFEENUMsee FATCA page
fatcaStatusExemptBOFATCA statusYes if fatcaEntityType=EXEMPTBOENUMsee FATCA page
giinGIINYes if fatcaStatusFfi is one of (REPORTING_MODEL_1, REPORTING_MODEL_2 or REGISTERED_DEEMED_COMPLIANT_OTHER_THAN_MODEL_1)StringGIIN validation referenced here
beneficialOwnersRequiredAre there any individuals who directly or indirectly own 25% or more of the entity?Yes if fatcaStatusNffe=passiveBoolean
beneficiaryFirstNameBeneficiary’s Legal first NameYes if beneficialOwnersRequired=trueString
beneficiaryLastNameBeneficiary’s Legal last NameYes if beneficialOwnersRequired=trueString
beneficiaryTaxIdBeneficiary’s US taxpayer ID numberYes if beneficialOwnersRequired=trueStringThe US taxpayer ID must be a nine-digit number
beneficiaryAllocationBeneficiary’s Percentage of ownershipYes if beneficialOwnersRequired=trueStringOwnership percentage must be between 1 and 100, no percentage or spaces (e.g., 35)
beneficiaryCountryBeneficiary’s Residential CountryYes if beneficialOwnersRequired=trueStringISO 3166-1 alpha-2 country code
beneficiaryStreetAddressBeneficiary’s Residential Street AddressYes if beneficialOwnersRequired=trueString
beneficiaryCityBeneficiary’s Residential CityYes if beneficialOwnersRequired=trueString
beneficiaryStateUSBeneficiary’s Residential State/provinceYes, for US countryString2-character USPS state code
beneficiaryStateOtherBeneficiary’s Residential State/provinceYes, for non-US countriesString
beneficiaryPostalCodeBeneficiary’s Zip code/postal codeYes if beneficialOwnersRequired=trueString
certifiedW8customer has signed w8 certficationYes if businessRegistrationNumber is provided (Non-US entity)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 Payloads

US Entity Request:

{
  "applicationType": "RIA_PC_INSTITUTION",
  "entries": [
    { "key": "legalEntityName", "value": "Encom LLC" },
    { "key": "hasDbaName", "value": true },
    { "key": "dbaNames", "value": "Encom Video Games" },
    { "key": "taxId", "value": "123456789" },
    { "key": "physicalCountry", "value": "US" },
    { "key": "physicalStreetAddress", "value": "123 Lightcycle Way" },
    { "key": "physicalCity", "value": "San Francisco" },
    { "key": "physicalStateUS", "value": "CA" },
    { "key": "physicalPostalCode", "value": "94104" },
    { "key": "hasProofOfAddress", "value": true },
    { "key": "taxClassificationUs", "value": "C_CORP"},
		{ "key": "taxExemptionPayeeCode", "value": "TAX_EXEMPT_PAYEE_CODE_5"},
		{ "key": "fatcaExemptionReportingCode", "value": "FATCA_EXEMPT_REPORTING_CODE_D"},
		{ "key": "certifiedW9", "value": true}
  ]
}

Non-US Entity Request:

{
  "applicationType": "RIA_PC_INSTITUTION",
  "entries": [
    { "key": "legalEntityName", "value": "Encom LLC" },
    { "key": "hasDbaName", "value": true },
    { "key": "dbaNames", "value": "Encom Video Games" },
    { "key": "businessRegistrationNumber", "value": "123456789" },
    { "key": "physicalCountry", "value": "GB" },
    { "key": "physicalStreetAddress", "value": "123 Lightcycle Way" },
    { "key": "physicalCity", "value": "London" },
    { "key": "physicalStateOther", "value": "London" },
    { "key": "physicalPostalCode", "value": "94104" },
    { "key": "hasProofOfAddress", "value": true },
    { "key": "taxClassificationNonUs", "value": "CORP"},
		{ "key": "fatcaEntityType", "value": "NFFE"},       
		{ "key": "fatcaStatusNffe", "value": "PASSIVE"},
    { "key": "beneficialOwnersRequired", "value": true},
		{ 
      "key": "beneficiaryGroup", 
      "value": [
        {
				"beneficiaryFirstName":     "John",
				"beneficiaryLastName":      "Smith",
				"beneficiaryTaxId":         "123456789",
				"beneficiaryAllocation":    "60",
				"beneficiaryCountry":       "GB",
				"beneficiaryStreetAddress": "10 Downing Street",
				"beneficiaryCity":          "London",
				"beneficiaryStateOther":    "England",
				"beneficiaryPostalCode":    "SW1A 1AA"
			},
			{
				"beneficiaryFirstName":     "Jane",
				"beneficiaryLastName":      "Doe",
				"beneficiaryTaxId":         "987654321",
				"beneficiaryAllocation":    "40",
				"beneficiaryCountry":       "GB",
				"beneficiaryStreetAddress": "221B Baker Street",
				"beneficiaryCity":          "London",
				"beneficiaryStateOther":    "England",
				"beneficiaryPostalCode":    "NW1 6XE"
			}
    ]},
		{ "key": "certifiedW8", "value": true}
  ]
}

Response:

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

Step 2: Upload required document images

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

TagDescriptionRequiredTypeValue Restrictions
constitutionDocumentconstitutional documentyesUploadimage/gif, image/jpeg, image/png, or application/pdf less than 25MB
proofOfAddressproof of addressyes, if hasProofOfAddress = TRUEUploadimage/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, while will accept the document in a PUT call. Note the upload URL will only accept a document for 15 minutes. If the URL is has timed out, a new one can be requested by calling the above endpoint again.


Sample

Request:

{
    "documentType": "constitutionDocument"
}

Response:

{
    "data": {
        "url": "https://storage.googleapis.com/staging-191601-bio-default/anchorage/pii/v1/d6f81b1563687f326ac9e3d4a00f9a0949e4ca81158cc47674846d27094b2503/CONSTITUTION_DOCUMENT/994c0115e0f5cd3c0bd17f82c93bd63aec1f3f919a9e7e431ce62aa564ea2c3d?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=kyc-default%40staging-191601.iam.gserviceaccount.com%2F20250409%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250409T043734Z&X-Goog-Expires=899&X-Goog-Signature=8e49d401c3e0916a98dab97f3b4718a612e53a26998e5ca80d8dded71a2b99e9628db38b4eef1611a0b54721c80fe4f57869185a4ce57045af372df57dd87ec4429f0aac6dde0193f6b1e0bd03b0050121113e9cf9e86cb182c0eed220c3e697646733ee81d240b893bf6a9a118d5d5183cb4f0fa97f1ed983c13941a55acf26fb9e841c812bbce3d69a9ff4583e523aaddf09c430c640c2cac4cc6ac2e8c83535b57375288b3c18dd8c46257ea6eea12563e9a98d2a18382a7955cedea4ac68e5271c1d32aa97a0546bb3350ab4063e11ced5e7019026c10bfa2fb7b17ff79ad9d912de3ccda0c83c10b21d7e91259e85988c4dd098bc7b6ccc734df12c9c8f&X-Goog-SignedHeaders=host"
    }
}

Upload image:

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

Step 3: Check the status of the institutional application

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

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


Sample

{
  "data": {
    "customerId": "26c014539bd34e8e441e34381d9d5dad9434bb3645dbbf27d8267304e7ad0584",
    "entries": [
      {
        "key": "legalEntityName",
        "value": "ACME Corp - 2025-04-11T11:08:11.771Z"
      },
      {
        "key": "dbaNames",
        "value": "Encom Video Games"
      },
      {
        "key": "taxId",
        "value": "123456789"
      },
      {
        "key": "hasProofOfAddress",
        "value": "Yes"
      },
      {
        "key": "physicalCity",
        "value": "San Francisco"
      },
      {
        "key": "physicalCountry",
        "value": "United States"
      },
      {
        "key": "physicalStateUS",
        "value": "California"
      },
      {
        "key": "physicalStreetAddress",
        "value": "123 Lightcycle Way"
      },
      {
        "key": "physicalPostalCode",
        "value": "94104"
      },
      {
        "key": "hasDbaName",
        "value": "Yes"
      }
    ],
    "errors": [
      {
        "key": "constitutionDocument",
        "status": "MISSING",
        "value": "expected 1 answer for non-void triggered question, instead got 0"
      },
      {
        "key": "proofOfAddress",
        "status": "MISSING",
        "value": "expected 1 answer for non-void triggered question, instead got 0"
      }
    ],
    "errors": [],
    "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 institutional 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

{
  "data": {
    "customerId": "26c014539bd34e8e441e34381d9d5dad9434bb3645dbbf27d8267304e7ad0584",
    "entries": [
      {
        "key": "legalEntityName",
        "value": "ACME Corp - 2025-04-11T11:08:11.771Z"
      },
      {
        "key": "dbaNames",
        "value": "Encom Video Games"
      },
      {
        "key": "taxId",
        "value": "123456789"
      },
      {
        "key": "hasProofOfAddress",
        "value": "Yes"
      },
      {
        "key": "physicalCity",
        "value": "San Francisco"
      },
      {
        "key": "physicalCountry",
        "value": "United States"
      },
      {
        "key": "physicalStateUS",
        "value": "California"
      },
      {
        "key": "physicalStreetAddress",
        "value": "123 Lightcycle Way"
      },
      {
        "key": "physicalPostalCode",
        "value": "94104"
      },
      {
        "key": "hasDbaName",
        "value": "Yes"
      }
    ],
    "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 edit?TypeValue Restrictions
legalEntityNamelegal entity nameYesNoString
hasDbaNamedoes your organization have a registered DBA name?YesYesBooleantrue or false
dbaNameslast nameYes, if hasDbaName = YESYesString
taxIdEINyes (this or businessRegistrationNumber should be provided)NoNumber9-digit number
businessRegistrationNumberBusiness registration numberyes (this or taxId should be provided)NoString
proofOfAddressContextWhen hasProofOfAddress is false explain whyNoYesString
legalStructureLegal structure of the institutionNoNoEnumC_CORP; LLC; LLP; LP; S_CORP; SOLE_PROP; TRUST; NON_PROFIT; OTHER
legalStructureOtherLegal structure of the institution when selects OTHER in the legalStructure questionNoYesString
physicalCountrycountryYesYesStringISO 3166-1 alpha-2 country code
physicalStreetAddressstreet addressYesYesString
physicalCitycity nameYesYesString
physicalStateUSUS stateYes, for US countryYesString2-character USPS state code
physicalStateOthernon-US state or provinceYes, for non-US countriesYesString
physicalPostalCodezip code or postal codeYesYesString
hasProofOfAddresscan you provide a proof of address?YesYesBooleantrue or false
hasProofOfAddressContextadditional context if unable to provide proof of addressNoYesString



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 Tax Classification.
June 10, 2025Updates for new onboarding API payloads and flows
May 1, 2025Initial version

Did this page help you?