Skip to main content
Open a crypto account for an individual end client. If they’re new to your platform, onboard them first, then open their account. If they already have a customerId, skip straight to opening the account.

How it works

1

Check whether the client is new

Look up whether this individual already has a customerId with Anchorage Digital. Existing clients can open additional accounts without repeating onboarding.
2

Onboard the client (new clients only)

Submit the client’s KYC information and documentation, and collect their agreement to your terms and conditions. Anchorage Digital performs due diligence and returns a customerId.
3

Open the account

Create an account (subaccount) for the client, specifying the account type and linking it to their customerId — either the one just created, or an existing one.
4

Confirm approval

Check the account’s status, or subscribe to the subaccount.opened webhook, to know when it’s active.
You don’t need to wait for a new client’s onboarding to be fully approved before opening their account — you can submit the account application right after receiving their customerId. Client onboarding and account opening are approved together.
This flow supports opening every individual account type — see the account types table in Step 6 for the full list. Before onboarding your first client, decide how you’ll deliver terms and conditions and whether you’re using a KYC reliance model — see Terms and conditions.

Integration steps

If this client already has a customerId, skip ahead to Step 6: Create the account.

Step 1: Onboard the client

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
Sandbox: applications must use mock data and reviews are expedited. Production: actual client information is required and a more thorough review process applies — no mock data is permitted in production.
A unique customerId is returned, which is used in all future calls to identify this end client.

Step 2: Upload required documents

POST /v2/onboarding/customers/{{customerId}}/document
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.
Upload the image to the returned URL:

Step 3: Check onboarding status

GET /v2/onboarding/customers/{{customerId}} Any errors or missing documents are listed in the errors section of the response.
Response

Step 4: Submit the client application

POST /v2/onboarding/customers/{{customerId}}/submit Once submitted, you can move on to opening the account — you don’t need to wait for approval first (see the note above).

Step 5: Check client 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 completes, register for webhooks — see Configure webhooks.

Step 6: Create the account

POST /v2/onboarding/subaccounts Supported individual account types: Expected program signers by account type: Key fields:
Each account requires a signer who can represent the client. The signer can be the end client themselves or another authorized individual.
Example request
A unique subaccountId is returned for all future references to this account. Every account type follows this same payload shape — only accountType, accountSubtype (where applicable), and the number of programCustomers entries change, per the table above. Add termsAgreementId to a program signer’s entry only if terms and conditions delivery requires their explicit agreement. See Onboarding examples for complete request payloads, with and without a termsAgreementId, for every account type.

Step 7: List account applications

GET /v2/onboarding/subaccounts Returns all account onboarding applications associated with this API key. Supports afterId and limit for cursor pagination.

Step 8: Check account status

GET /v2/onboarding/subaccounts/{subaccountId} Errors and missing documents are listed in the errors array of the response.

Step 9: Update the account application (if errors are present)

PUT /v2/onboarding/subaccounts/{subaccountId} Uses the same entries array shape as Step 6. Only include the entries you want to change — omitted fields keep their existing value.
Example request
Any change to a client’s data, or a request to terminate their account, is authenticated by Anchorage Digital Bank with the end client via DocuSign before processing.

Step 10: Submit the account application (if submit: false)

POST /v2/onboarding/subaccounts/{subaccountId}/submit

Step 11: Check account approval status

GET /v2/subaccounts/customers/accounts?subaccountIds={subaccountId} Status values: PENDING (received, awaiting approval) → OPEN (approved and active). Alternatively, subscribe to the subaccount.opened webhook event for asynchronous notification.
Example response (approved)

Reliance only: edit client 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.