Crypto tax and accounting API

Every transaction a wallet made, including internal transfers, each token's price on the day it moved, and balances on any date for period-end close. One API key across 100+ chains, Bitcoin included, so you build the tax engine instead of the indexer.

demo.eth on EthereumBalances on 31 Dec 2025
Value on 31 Dec 2025
$8,120.77
Priced tokens
42
Largest token balances for demo.eth on 31 Dec 2025
TokenBalanceValue
USDT3,007$2,961.09
USDC1,632$1,607.94
WBTC0.01572$1,345.42
BNB1$839.19
ETH0.1191$344.44
cETH4.99$290.02
One call to historical_balances with date=2025-12-31, 1 credit. Block 24,128,884, valued at prices from that day.

Used by EY, Awaken Tax and Crypto Tax Calculator

  • EY
  • Awaken Tax
  • Crypto Tax Calculator
  • Integral
  • Koinly
  • CoinLedger
  • Fidelity
  • Consensys
  • Jump
  • Ondo
  • ThorWallet
  • Rainbow

Inside a historical balances response

A historical balances call returns every token an address held on the date you pass, each priced that day. Three fields carry a year-end valuation: the block the balances were read at, the price, and the value. Here is the Ether item from the call behind the panel above, and what to do with each.

The response, as JSON
GET/v1/eth-mainnet/address/demo.eth/historical_balances/?date=2025-12-31&no-spam=true
{  "contract_decimals": 18,  "contract_name": "Ether",  "contract_ticker_symbol": "ETH",  "contract_address": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",  "block_height": 24128884,  "is_native_token": true,  "type": "cryptocurrency",  "is_spam": false,  "balance": "119077849440095085",  "quote_rate": 2892.5405,  "quote": 344.4375,  "pretty_quote": "$344.44"}
one of data.items
The Ether item from the historical_balances response for demo.eth on Ethereum, with date=2025-12-31 and no-spam=true. 1 credit per call. Captured 29 Oct 2026; a past date returns the same balances every time.

Transactions classified for tax reporting

Add with-classification=true to a transactions call and every transaction comes back with a type, a category, a one-line description and the assets the wallet sent and received. Map the types to your tax events instead of writing a decoder for every protocol.

// data.items[n].classification{  "type": "swap",  "category": "defi",  "description": "Swapped 872.59 AERO for 0.279091760280112109 WETH.",  "sent": [    { "action": "token_sent", "amount": "872.59", "token": { … } },    { "action": "paid_gas", "amount": "0.0000…", "token": { … } }  ],  "received": [    { "action": "token_received", "amount": "0.2790…", "token": { … } }  ]}
# Two query parameters on the paginated transactions endpointGET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/    ?with-classification=true&with-internal=true
  • Types your tax rules can branch on

    A type such as swap, send_token, receive_token or add_liquidity, in a category such as defi, nft, transfer or lending.

  • Amounts from the wallet's side

    Sent and received amounts are adjusted for decimals, include gas, and are relative to the account you pass, so one transaction reads correctly for each party.

  • A description for the audit trail

    The plain-English description can go straight into a ledger note or a client report.

  • 23 chains, 0.05 credits

    Classification adds 0.05 credits per transaction on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Smart Chain and 17 more chains, the same chains as internal transfers.

Crypto transaction history API for tax

Each step of a tax or accounting workflow maps to an endpoint or two. Credit costs are per call unless a row says per item.

  • Complete history, internal transfers included

    Page through every transaction an address made, oldest first if you need it. with-internal=true adds internal transfers, the ETH that moves inside contract calls, and with-classification=true labels each transaction as a swap, a send or a receive. Both work on select EVM chains.

  • Historical prices for cost basis

    Look up a token's daily price over any date range, in any of 16 fiat currencies, to value each acquisition and disposal on the day it happened. Token transfers come back with the price at the time.

  • Balances on any date or block

    Read every token an address held at a block height or on a date, priced that day, for year-end statements and period-end close. Block heights turns a date range into the blocks it spans.

  • Bitcoin wallets and xPubs

    Read the balance of every address derived from an xPub, yPub or zPub, the transactions of a single Bitcoin address, and a Bitcoin balance on a past date, with the same API key.

  • Reconciliation across chains

    Find every chain an address has used in one call, then get each chain's transaction count and first and last transaction, so a client's ledger can be checked chain by chain.

MCP server and Agent Skills for tax data

The hosted GoldRush MCP server gives Claude, Cursor and other MCP clients 37 tools, including transactions_for_address, historical_token_balances, historical_token_prices and block_heights. GoldRush Agent Skills give coding agents the endpoints, parameters and credit costs, so the code they write calls the API correctly. Both work in Claude Code and Cursor, among other agents, and agents without an API key can pay per request in stablecoins on Base through x402.

# MCP server: 37 tools, hosted by GoldRushclaude mcp add --transport http goldrush \  https://mcp.goldrushdata.com/mcp \  --header "Authorization: Bearer $GOLDRUSH_API_KEY" # Agent Skills: Foundational API, x402 and CLInpx skills add covalenthq/goldrush-agent-skills
  • Year-end statement

    Read each of a client's wallets on 31 December and draft a statement with that day's prices.

  • Missing cost basis

    Find disposals with no matching acquisition and trace where those tokens came from.

  • Month-end check

    Compare each treasury wallet's onchain balance with the ledger and flag the differences.

Crypto tax API: GoldRush vs Moralis

Both return decoded wallet history with internal transactions and balances on past dates. The differences are chain coverage, how usage is billed, and how agents pay.

GoldRush vs Moralis
MoralisGoldRush
Chains30+, with 26 listed for wallet history100+, including Bitcoin and Solana
Internal transactionsinclude_internal_transactions=truewith-internal=true, on select EVM chains
What happenedA category and a summary per transactionA type, a category, a description, and the assets sent and received
Balances on a past dateSupportedBy date or by block height, priced that day
BillingCompute units that vary by endpointCredits, with the cost listed on every endpoint
Pay per request without an accountNot advertised as of 31 May 2026x402, in stablecoins on Base

Sources: Moralis wallet history API, GoldRush vs Moralis, paginated transactions and Bitcoin HD wallet balances.

Security and SOC 2 compliance

GoldRush is SOC 2 Type 2 compliant. Data is encrypted at rest with AES-256 and in transit with TLS 1.2, and we work with security firms to take down phishing sites and impersonators.

AICPA SOC and SOC 2 Type 2 badges

Start free

Every account starts with a 14-day free trial: 25,000 API credits and 4 requests per second, with no credit card. A historical balances call costs 1 credit, so the trial covers 25,000 year-end snapshots. Paid plans start at $10 a month.

Crypto tax API FAQ

An API that returns the onchain records tax and accounting software needs: every transaction an address made, each token's price on the day it moved, and balances on any date. GoldRush serves these over REST for 100+ chains. It is the data layer, not a tax calculator.

Crypto tax API docs

Start here

Reference

Compare