Free tool
Hyperliquid to Koinly CSV
Turn a wallet's Hyperliquid perp fills and funding payments into a file Koinly can import with its universal CSV template. It runs in your browser: the address goes straight to Hyperliquid's public API, and nothing is sent to our server.
Result
First rows
How each row is written
Koinly's guide for custom CSV files says futures should be imported as a deposit or withdrawal equal to the outcome of each closed position, without the opening or closing trade itself, using its futures tags. We follow that.
| Hyperliquid record | Koinly row | Tag |
|---|---|---|
| Fill with realized PnL above zero | Received Amount, USDC; trading fee in Fee Amount | realized gain |
| Fill with realized PnL below zero | Sent Amount, USDC; trading fee in Fee Amount | realized gain |
| Fill with no realized PnL (opening) | Sent Amount = fee | futures fee |
| Negative fee (maker rebate) | Received Amount = rebate | futures fee |
| Funding paid | Sent Amount, USDC | funding fee |
| Funding received | Received Amount, USDC | funding fee |
Koinly imports a Fee Amount on a realized gain row as a separate futures fee. Dates are written in UTC as YYYY-MM-DD HH:mm:ss. Amounts keep the exact digits Hyperliquid returned. Each fill's hash goes in TxHash; funding rows have no hash.
What this file can and cannot cover
- Only what the API returns. Hyperliquid's public API stops returning a wallet's older fills once it has traded enough. The converter writes what is returned today and tells you when funding shows an open position before the first returned fill. How we measure this.
- Unexplained position changes. Every fill states the position size before it. When a fill does not start where the previous fill for that coin ended, after ordering same-millisecond fills into a continuous chain, the position changed with no fill returned to explain it (for example a liquidation or transfer the API does not list as a fill). We count these and say how many are corroborated by funding rows. Realized PnL around them may be incomplete.
- Perps only. Spot fills are skipped and counted. Deposits, withdrawals, transfers, vault and staking activity are not included; import those separately.
- Funding window. For an address, funding is read from the first returned fill onward. For an uploaded file, funding is added only if you also give the address.
- Check the import. Koinly's own matching and cost-basis rules apply after import. Review the result there or with your accountant.