- What a subaccount is and how it works
- Balance types and transaction types
- Billing and fee configuration
- Integration steps for subaccount creation
What is a subaccount?
A subaccount is an end-client account tied to one or more beneficial owners (e.g., institutional taxable account, joint account, Roth IRA). It represents one account on the ledger. Each wealth manager has their own ledger instance with two types of subaccounts: 1. End client funds — Track end-client positions and transactions. 2. Anchorage Digital operational funds — Ensure the ledger remains balanced. Include:
Each end client may have one or many subaccounts assigned to their
customerId. Funds within a subaccount can be rebalanced across other subaccounts for the same end client, provided they are settled.
Balances
Each subaccount tracks three balance types:Subaccount transaction types
Billing and fee configuration
Plan your billing and fee strategy before onboarding clients.Billing methods
Fee model
Fee types
Fee visibility — isBillable
Fee accruals
Each subaccount includes anaccruedFees section showing estimated fees based on average AUC — not actual point-in-time fees.
accruedValue represents the average fee accrued based on days elapsed and average AUC. It is not the actual fees charged based on prior day accruals, and should not be used to display mid-month “performance net of fees” estimates.accruedFees:
Example subaccount with fee accruals
Fee calculation
Billing lifecycle
- Month 1, day 1 — Billing period starts.
accruedFeebegins calculating end of day.state: ONGOING. - Month 1, days 2–30 —
accruedFeereflects daily accrual from day 2. - Month 1, last day — Billing period closes.
state: DONE. - Month 2, day 1 — Fee transaction appears on the ledger at 8:00 AM ET as
PENDING. - Month 2, days 2–9th business day — Billing dispute period. Contact your account point of contact with any questions.
- Month 2, 10th business day — Billing finalized. Subaccount transaction updates to
POSTED. Fees withdrawn; wealth manager remittance begins. Updates at 8:00 AM ET.
Additional billing considerations
- Manual billing must be submitted via API before the 10th business day.
- Cash management — Keep 3 months of USD in the subaccount to avoid liquidation events that trigger taxable events.
- 0-rate fees — No accrual or transaction posted if rate is
0. - Negative USD balances — If USD balance goes negative mid-month, it must be offset before the 10th business day.
- Rate changes — Anchorage Digital emails end clients when fees with
isBillable: trueare created or changed. - Fee rate format — Configure as a decimal:
1% = 0.01.
Submitting a manual billing charge
Use manual billing when the wealth manager — not Anchorage Digital’s AUC-based accrual — determines what to charge each end client. This applies toADVISORY, MODEL, and MANAGEMENT fees only. Custody fees are set by Anchorage Digital and are never charged manually.
POST /v2/subaccounts/billing/charges
Each request applies a single
feeType and interval across all charges in the batch — submit separate requests to bill different fee types or periods in the same call.
DELETE /v2/subaccounts/billing/charges/{chargeId} with the ID returned above.
Manual charges debit the subaccount immediately and appear on the statement dated the day the charge is submitted — they don’t wait for the standard month-end billing cycle. Cancellations and financial impact to Ops and Finance settlement processes are minimal, but a charge can only be canceled before it’s finalized.
Integration steps: Subaccount creation
Supported account types
Each subaccount requires a signer who can represent the client. The signer can be the end client themselves or another authorized individual.
Expected program signers by account type
Step 1: Create a subaccount application
POST /v2/onboarding/subaccounts
Key fields:
Example request
subaccountId is returned for all future references to this subaccount.
Step 2: List all subaccount applications
GET /v2/onboarding/subaccounts
Returns all subaccount onboarding applications associated with this API key. Supports afterId and limit for cursor pagination.
Step 3: Check subaccount application status
GET /v2/onboarding/subaccounts/{subaccountId}
Errors and missing documents are listed in the errors array of the response.
Example response
Step 4: Update the application (if errors are present)
PUT /v2/onboarding/subaccounts/{subaccountId}
Uses the same entries array shape as Step 1. Only include the entries you want to change — omitted fields keep their existing value.
Example request
Step 5: Submit the application (if submit: false)
POST /v2/onboarding/subaccounts/{subaccountId}/submit
Step 6: Check subaccount 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 async notification.
Example response (approved)