- Tax data overview and accounting method
- Critical transaction and cost basis considerations
- Supported tax forms
- Integration steps
Anchorage Digital does not provide financial, tax, or legal advice.
Tax data overview
Anchorage Digital reports tax data for two account types:- Taxable accounts — individual, trust, joint, etc.
- Individual Retirement Accounts (IRA)
HIFO accounting method
Anchorage Digital uses HIFO (highest-in, first-out) by default — the highest-priced units are sold first when calculating cost basis. This can be changed at the wealth manager level or overridden per account. Example: Investor holds 10 BTC at 22k, 15 BTC at $35k. Selling 25 BTC under HIFO:- 15 BTC from the $35k purchase sold first
- 10 BTC from the $22k purchase sold next
Tax reporting partnership
Anchorage Digital partners with a third-party tax reporting provider to give wealth managers and end clients required tax data, compliance features, and tax forms.Transaction types
Taxable subaccount transaction event
types: DEPOSIT, TRADE, WITHDRAW.
Cost basis tracking
Cost basis is tracked automatically throughout the asset lifecycle. For in-kind deposits, the wealth manager and end client must supply the cost basis via API.subaccountId and customerId mapping
Each subaccountId maps 1:1 to an Account Owner ID with our tax reporting provider (which Anchorage Digital maps to customerId). This provides:
- Accurate, segregated tracking — clear traceability between strategies, trades, and their cost-basis impact.
- Tax-loss harvesting flexibility — losses can be realized within individual accounts without affecting others.
Tax terminology
Critical considerations
- Missing cost basis is
null, not0. - Default method is HIFO — configurable per wealth manager or per account.
- All tax data is at the subaccount level, regardless of account owners.
- Trade rounding (dust): Trades cannot always settle to full decimal precision. Rounded values are stored in the ledger and used for balancing, but full-precision quantities appear in trade confirmations and tax reporting — meaning tax data and ledger values may differ slightly by a small “dust” amount. This is an industry-wide issue with trade confirms vs. custody precision.
Supported tax forms
Anchorage Digital does not perform tax reporting on behalf of wealth managers or end clients, and does not issue tax forms directly. Our tax reporting provider generates and provides forms based on the data Anchorage Digital provides.
Integration steps
Sandbox tax testing may be limited due to the absence of a full trade → settlement lifecycle for mainnet assets.
Step 1: Review tax transactions
GET /v2/tax/transactions/{subaccountId}
Returns tax transaction data for a subaccount. Check for missing cost basis on deposits.
Step 2: Update missing cost basis
PATCH /v2/tax/transaction/{transactionId}
Only cost basis data can be updated. Transaction asset and quantity cannot be changed.
Step 3: View asset inventory
GET /v2/tax/inventory/{subaccountId}/{assetType}
Returns total quantity and all tax lots for a specific asset in a subaccount.
GET /v2/tax/inventory/summary/{subaccountId}
Returns inventory summary across all assets.
Step 4: Review cost basis and gains
GET /v2/tax/gains/summary/{subaccountId}
Returns combined cost basis, proceeds, and gains/losses for a subaccount and time range.
GET /v2/tax/gains/costbasis/{subaccountId}
Returns per-disposal gain/loss records broken down into short-term and long-term, with cost basis and proceeds.
Step 5: Fetch tax forms
GET /v2/tax/subaccounts/{subaccountId}/forms
Returns pre-signed download links for a subaccount’s tax forms. Links are time-limited.
GET /v2/tax/clients/{customerId}/forms
Returns forms for all subaccounts belonging to a customerId. Use customerId as affiliateId.
Step 6: Tag or untag a transaction
IRA transactions need a tag identifying the retirement-specific event type before they can be reflected correctly on 1099-R and Form 5498 reporting.POST /v2/tax/transaction/{transactionId}/tag
tag values:
distributionCode is required when tag is distribution, and must be a valid IRS Form 1099-R distribution code (for example, 7 for a normal distribution or 4 for death). postponedLateReason is required when tag is postponed or late-rollover.DELETE /v2/tax/transaction/{transactionId}/tag: