CARF and DAC8 summary
Exchanges in the EU (under DAC8, from 2026) and in other countries as they adopt CARF report each customer's yearly crypto totals to tax authorities. Here is your own wallet activity in the same shape, so the two can be compared line by line.
Defaulted to USD for United States, where exchanges report under Form 1099-DA (use the 1099-DA reconciliation for that). Values are the report's USD prices restated at the ECB reference rate for each day.
Why you would want this
A self-custody wallet never files a CARF or DAC8 report; only exchanges and brokers do. But what they file about you covers only what happened on their platform. When an exchange reports that you withdrew 500 ATOM, your tax authority sees that, not the staking rewards the ATOM earned in your wallet afterwards. This summary gives you (or your controller) the wallet side in the same element names and codes, so differences are easy to explain.
Amounts are the fair market value at each event, from the same daily prices as every other report, restated into your currency at the European Central Bank reference rate for that day (the previous business day's rate on weekends and holidays). Units are rounded to six decimals and amounts to two, as the schema specifies.
Where each event lands
| On chain | CARF |
|---|---|
| Staking rewards and validator commission | CryptoTransferIn, CARF502 Staking income |
| Receipt tagged airdrop | CryptoTransferIn, CARF501 Airdrop |
| Receipt tagged payment | CryptoTransferIn, CARF506 Sale of goods or services |
| Protocol income, or a receipt tagged income, gift or internal transfer | CryptoTransferIn, CARF508 Other |
| Any other receive or IBC transfer in | CryptoTransferIn, CARF509 Unknown |
| Swap or NFT trade, the coin received | CryptotoCryptoIn |
| Swap or NFT trade, the coin given up | CryptotoCryptoOut |
| A payment to a protocol, or a send tagged payment or expense | CryptoTransferOut, CARF603 Purchase of goods or services |
| A send tagged gift, lost or internal transfer | CryptoTransferOut, CARF605 Other |
| Any other send or IBC transfer out | CryptoTransferOut, CARF606 Unknown |
| Delegations, unbonding, protocol deposits, escrow | Not reported: you still own them |
| Network fees | Listed per asset beside the CARF lines; CARF amounts are net of fees |
The chain cannot tell whether a counterparty is an exchange, so plain transfers use the schema's own Unknown codes. Tag a row on the report and its code follows the tag. Bought with or sold for fiat (CryptoFiatIn and CryptoFiatOut) never happens on chain; those lines live only on the exchange's report.
Transfer in codes
CARF501AirdropCARF502Staking incomeCARF503Mining incomeCARF504Crypto loanCARF505Transfer from another RCASPCARF506Sale of goods or servicesCARF507CollateralCARF508OtherCARF509Unknown
Transfer out codes
CARF601Transfer to another RCASPCARF602Crypto loanCARF603Purchase of goods or servicesCARF604CollateralCARF605OtherCARF606Unknown
Source: OECD Crypto-Asset Reporting Framework XML Schema (July 2025): User Guide for Tax Administrations, schema v1.5. EU member states use the same code lists for DAC8. Agents can call GET /api/tax/v1/carf?address=…&year=2026¤cy=CHF; see the API docs. US filers want the 1099-DA reconciliation instead.