Three Swan downloads. Only one of them has its columns in Swan’s own help.
Not tax advice · reviewed 25 October 2026
Swan CSV exports
Swan sells bitcoin. It does not, on the help pages read for BasisFix, sell a Form 8949 product, and no Swan price for tax software was found. Their help, updated 13 October 2026, describes three downloads and says a CPA often wants more than one. Anything BasisFix produces is a review with a tax pro.
Tax CSV
Swan says this file uploads to CoinTracker. Column C is Received Currency. A purchase receives BTC and sends USD. A sale receives USD and sends BTC. USD deposits that had a fee are in the file too. The columns BasisFix accepts are Date, Received Quantity, Received Currency, Sent Quantity, Sent Currency, Fee Amount, Fee Currency, and an optional Tag. That list is CoinTracker’s template plus Swan’s description of column C. Swan’s article does not paste the header row.
- A buy’s basis is the USD sent plus a USD fee. A blank fee currency is treated as USD. A fee charged in bitcoin reduces the coins instead of being added as dollars.
- A sale’s proceeds are the USD received minus a USD fee.
- A row with no bitcoin, including a wire deposit that only shows a fee, is skipped. It is not income.
Deposits and the fee lines
Swan says the Deposits and Purchases CSV contains every deposit and shows fees as their own lines. The article does not name the columns. BasisFix reads an Event ledger whose header was marked confirmed in btctax-adapters 0.18: Event, Date, Transaction ID, Transaction USD, Fee USD, Unit Count, Asset Type, USD Cost Basis, Acquisition Date, plus the extra columns in that project’s fixture. Two lines of preamble before the header are ignored. Calling that file “Deposits and Purchases” is an assumption.
- purchase. A buy. Basis is Transaction USD plus Fee USD. In the confirmed sample, USD Cost Basis matches Transaction USD and leaves the fee out, so that column is not the one BasisFix adds.
- deposit. A transfer in. USD Cost Basis is kept when the cell is filled. Acquisition Date is stored in the notes and is not the lot date. An unmatched deposit uses the deposit timestamp. A matched send carries the original lot. See self-transfers are not sales.
- monthly_fee, prepaid_fee, fee. Skipped. Not a second purchase and not a sale, even if the line has a bitcoin amount.
Withdrawals
A third header from the same adapter is Created At and Bitcoin Amount, with a status and a transaction id. A settled row is a transfer out, not a sale. The adapter notes that the id on this file is not a stable match key. Swan’s help names a transaction-history download and does not publish this header, so a real history file with different columns will be rejected rather than guessed.
Using only the tax CSV can drop a deposit. Using only the deposits file can drop a sale. The gap looks like missing basis even when Swan has the records. River’s files are a different parser. Start at River CSV to Form 8949 if the coins moved, and keep the accounts distinct.
Questions
Does Swan file Form 8949?
Swan is not tax software. Their help describes CSV exports you hand to a CPA or to other software, and Form 1099-DA for some 2026 sales through their custodian. No Swan price for a tax product was found.
Which Swan headers does BasisFix read?
The CoinTracker Tax CSV Swan describes, with Received Currency in column C. An Event ledger whose columns were confirmed in a published adapter, which BasisFix treats as Deposits and Purchases because fees are their own rows. And a withdrawals file from that same adapter, with Created At and Bitcoin Amount. Swan’s help does not publish the last two headers. A different header stays unrecognized.
Which Swan file has the deposits?
Swan’s help says the Deposits and Purchases CSV lists all deposits, with fees on their own lines, and the Tax CSV lists purchases, sales, and only those USD deposits that had a fee. BasisFix skips a fee line instead of turning it into a second buy, and it skips a USD-only tax-CSV row. Preparers often need both files. Confirm the header against the download you actually have.