Skip to main content
Topics covered:
  • 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:
  1. Taxable accounts — individual, trust, joint, etc.
  2. 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 20k,20BTCat20k, 20 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

TaxBit partnership

Anchorage Digital has partnered with TaxBit to provide wealth managers and end clients with required tax data, compliance features, and tax forms.

Transaction types

TypeDescription
On-chain transactionsAsset movement on-chain. Not relevant to tax APIs.
Subaccount transactionsAsset movement on the wealth manager’s ledger at Anchorage Digital.
Tax transactionsAny transaction with a taxable event — these are the transactions in the tax API.
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 a TaxBit “Account Owner ID” (which Anchorage 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

TermDescription
Tax transactionData used by TaxBit to generate tax outputs. Differs from subaccount or on-chain transactions.
Gain/lossDifference between sale price and cost basis. Reported as SHORT_TERM or LONG_TERM by tax year.
InventoryTotal quantity and cost basis of a specific asset type held by a subaccount, comprised of multiple tax lots.
Tax lotA group of units acquired at the same time and cost basis.
Acquisition dateDate an individual gains control of an asset. Determines long-term vs. short-term holding period in the US.
Cost basisValue of an asset at acquisition time; used to calculate gain/loss on disposal.
Cost basis methodHIFO (default) or LIFO/FIFO (configurable). Individual lot selection is on the TaxBit roadmap.
Missing cost basisOccurs when transferring assets in-kind into a deposit wallet. Can be supplied via API.
Holding periodDuration an asset is held. Long-term (>1 year) receives preferential US tax treatment.
Realized gain/lossGains/losses from actual sale or disposition of an asset.
Unrealized gain/lossGains/losses from price fluctuation without disposal.

Critical considerations

  • Missing cost basis is null, not 0.
  • 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. TaxBit generates and provides forms based on the data Anchorage Digital provides.
Account typeFormDescriptionDeadlineStatus
TaxableCost-basis dataProceeds and cost basis per transaction for Form 8949 and Schedule D.Preferred by Feb 15Supported
Taxable1099-BProceeds from brokerage/trading transactions.Jan 31Supported
Taxable1099-MISCMiscellaneous income (staking rewards, services, mining).Jan 31Coming soon
Non-taxable1099-RDistributions from retirement accounts.Jan 31Coming soon
Non-taxableForm 5498IRA contribution reporting.June 2Coming soon

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}Reference Returns tax transaction data for a subaccount. Check for missing cost basis on deposits.
curl --request GET \
     --url https://api.anchorage-staging.com/v2/tax/transactions/{subaccountId} \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'

Step 2: Update missing cost basis

PATCH /v2/tax/transaction/{transactionId}Reference Only cost basis data can be updated. Transaction asset and quantity cannot be changed.
curl --request PATCH \
     --url https://api.anchorage-staging.com/v2/tax/transaction/{transactionId} \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
  "type": "DEPOSIT",
  "assetType": "BTC",
  "lots": [
    {
      "acquisitionDatetime": "2025-03-03T14:48:06.111Z",
      "quantity": "1.0",
      "cost": "2500"
    }
  ],
  "acquisitionDatetime": "2025-03-03T14:48:06.111Z",
  "data": {
    "assetType": "BTC",
    "costBasis": "2500",
    "quantity": "1.0"
  }
}'

Step 3: View asset inventory

GET /v2/tax/inventory/{subaccountId}/{assetType}Reference Returns total quantity and all tax lots for a specific asset in a subaccount.
curl --request GET \
     --url https://api.anchorage-staging.com/v2/tax/inventory/{subaccountId}/LDO \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'
GET /v2/tax/summary/inventory/{subaccountId}Reference Returns inventory summary across all assets.
curl --request GET \
     --url https://api.anchorage-staging.com/v2/tax/summary/inventory/{subaccountId} \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'

Step 4: Review cost basis and gains

GET /v2/tax/gains/summary/{subaccountId}Reference Returns combined cost basis, proceeds, and gains/losses for a subaccount and time range.
curl --request GET \
     --url 'https://api.anchorage.com/v2/tax/gains/summary/{subaccountId}?startDateTime=2023-01-01T00:00:00Z&endDateTime=2025-03-01T23:59:59Z' \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'
GET /v2/tax/gains/costbasis/{subaccountId}Reference Returns per-disposal gain/loss records broken down into short-term and long-term, with cost basis and proceeds.
curl --request GET \
     --url 'https://api.anchorage.com/v2/tax/gains/costbasis/{subaccountId}?startDateTime=2023-01-01T00:00:00Z&endDateTime=2025-03-01T23:59:59Z' \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'

Step 5: Fetch tax forms

GET /v2/tax/subaccounts/{subaccountId}/formsReference Returns pre-signed download links for a subaccount’s tax forms. Links are time-limited.
curl --request GET \
     --url https://api.anchorage-staging.com/v2/tax/subaccounts/{subaccountId}/forms \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'
GET /v2/tax/clients/{customerId}/formsReference Returns forms for all subaccounts belonging to a customerId. Use customerId as affiliateId.
curl --request GET \
     --url https://api.anchorage-staging.com/v2/tax/clients/{customerId}/forms \
     --header 'Api-Access-Key: {API Key}' \
     --header 'accept: application/json'