Import Hyperliquid trades into TurboTax
updated october 2026 · ~5 min · not tax advice
The five columns TurboTax actually accepts
TurboTax Online's crypto upload (Wages & Income → Investments → Cryptocurrency → Upload it from my computer → Other) takes a gain/loss CSV with exactly five columns: Currency Name, Purchase Date, Cost Basis, Date Sold, Proceeds — dates as m/d/yyyy, dollar amounts to two decimals. One row per disposal.
That simplicity is the trap. TurboTax is not asking for transactions — it wants finished lots: each row is a closed position with an acquisition date, a basis and a proceeds figure already computed. Whoever produces that file has to do the hard part first.
Why perps break the usual path
Three problems stack up for a Hyperliquid account. First, coverage: the venue's fill endpoint retains roughly 30 hours, so any tool building 'your year' off it is silently holding two days. Second, semantics: a perp disposal isn't a coin sale — it is a position close, and shorts invert the usual buy/sell shape. A naive export mislabels or drops them outright.
Third, basis: a position opened in December and closed in January has its cost outside the report window unless the lot engine reads full history. Files produced without that history show a blank basis — which lands on your 8949 as a gain equal to the entire proceeds.
- Venue UI: no export button at all — nothing to upload.
- Generic wallet sync: caps, missing fills, $0 funding — and perp closes modeled as plain token sales.
- Manual entry: fine for a hundred fills, impossible at 100k+.
What a correct file looks like
Each row names a synthetic asset so perp lots never merge with your real coin inventory — ETH-PERP, not ETH. Purchase Date is the lot open; Date Sold is the close; Cost Basis and Proceeds carry the venue-accurate figures including allocated fees. Unknown basis stays blank rather than inventing a number.
Our paid report emits exactly this spec — basis computed under FIFO or weighted average over full history, exchange-carried basis where your Kraken/Coinbase exports prove it, and every row re-derivable from the underlying fills. TurboTax shows a gain summary on upload; if the totals don't match the report, something upstream is wrong and we print the residual for you.
Over ~10,000 rows
TurboTax Online starts struggling around 10,000 transactions per upload. Active Hyperliquid accounts exceed that in weeks. The practical path: import the per-disposal file if it fits, otherwise attach the short/long summary totals — the report ships both, and the row-level CSV stays as your evidence behind the summary line.
Common questions
?Can TurboTax import Hyperliquid directly?
No — TurboTax's exchange integrations don't cover Hyperliquid, and the venue issues no tax forms. The path is a gain/loss CSV upload (crypto service: Other).
?What if TurboTax rejects my CSV?
Almost always a column-name mismatch: it must be exactly Currency Name, Purchase Date, Cost Basis, Date Sold, Proceeds. Dates m/d/yyyy, dollars to two decimals, one row per disposal.
?Do I report perp shorts differently?
On the CSV a closed short is just another disposal row — proceeds minus basis. The engine resolves the direction internally; the filing surface doesn't need to know.
The TurboTax-ready file
The paid report ships a TurboTax-spec CSV alongside the 8949 rows, the full lot ledger and the verification document. Check your numbers free first.