Start your Hyperliquid tax records by saving original history files, listing every account and network, and checking the dates each file covers. Compare fills, funding, fees and transfers with any software import; record unexplained gaps before paying for a report. Then choose reporting software or an accountant based on the history you can actually support.
For a casual trader, begin with one row per account and record type in the records inventory . For a busy bot account, check the oldest available fill first. If you used both HyperCore and HyperEVM, preserve both histories and match transfers between them.
Preserve the source records first
Keep raw exports or saved API responses separately from spreadsheets you edit. Record the retrieval date, account, timezone and source; retain any export settings and warnings. Save a backup in storage you control. A screenshot of a final balance is useful context, but cannot replace the underlying history.
Use the actual account that holds the funds, including each relevant subaccount. An agent or API wallet is a signer: querying its address can return empty history for an active main account. Hyperliquid documents this distinction in its Info endpoint reference . Email logins, connected wallets and provider-created accounts also need their own identity checks; see the bot custody checklist .
For each account, collect the applicable streams:
| Records to preserve | What to check |
|---|---|
| Perpetual and spot fills | Executed fills, timestamps, assets, size, price, trade IDs and order IDs. An order may have several fills or none; an orders list is not a fills history. |
| Realized PnL and trading fees | Preserve the original fields, amounts and fee currency. Keep rebates signed. In Hyperliquid’s fill schema, fee already includes builderFee; do not add it again. |
| Funding payments | Preserve actual signed payments, dates and currency rather than estimating a payment from a rate. |
| Deposits, withdrawals and other ledger activity | Keep internal sends, subaccount movements, spot/perps transfers and applicable vault, reward or liquidation records separate until explained. |
| HyperEVM and outside accounts | Keep EVM transactions, receipts, token events and gas records, plus relevant exchange/bridge and prior acquisition history. |
The fill schema explains fee and identity fields. The perpetuals reference documents separate funding and non-funding history queries; the latter includes deposits, transfers and withdrawals. Do not infer that one fills file covers these other streams.
Where to start with an export
In the official app, inspect your selected account’s history and save available downloads for the period and record types you need. Record what each file actually contains; this guide does not verify today’s frontend export buttons or promise an all-history CSV.
For technical retrieval, Hyperliquid documents userFills, userFillsByTime, userFunding and userNonFundingLedgerUpdates. Preserve original responses and query settings. Its historical-data page
also links an independently maintained trade-history exporter and describes node archives. Those are recovery leads, not a completeness guarantee. Review any third-party tool’s permissions and privacy before revealing an address; never supply signing secrets to export history.
Check coverage before choosing a report
Follow this workflow once for each account and stream:
- Define the period. Write the intended start/end and timezone, including relevant earlier acquisitions. Keep original timestamps; use a consistent UTC comparison copy without overwriting them.
- Inventory coverage. Record each file’s earliest/latest event, row count, source and settings. Check an apparent quiet period against other retained evidence; no rows can mean no activity or missing history.
- Compare records. Use event identities, dates, assets, signed amounts and fees. Explain any grouping and rounding, and compare opening/closing holdings and transfers. For large histories, preserve a reproducible mapping rather than relying on a dashboard count.
- Record discrepancies. List missing periods, unmatched transfers, duplicates and unexplained totals. Keep the originals intact. Mark the stream incomplete while investigating; do not invent transactions to make balances match.
- Choose the next step. If gaps remain, look for preserved older files or ask the source provider about history coverage. Give an accountant the inventory and unresolved questions. Evaluate reporting software only against the records and accounting representation you can support.
A matching ending balance alone is not reconciliation proof. Missing inflows and outflows can offset. Check period coverage, identities and signed totals by record type as well as balances. For a discussion of results and costs, see ROI and trading risk metrics .
Four different limits
Source history. Hyperliquid documents at most 2,000 recent fills from userFills. Its userFillsByTime query returns at most 2,000 fills per response and exposes only the 10,000 most recent fills. Paging within that retained window does not recover unavailable older fills. Time bounds are inclusive; a retrieval process must check boundary overlaps and timestamp ties. Other record streams need their own coverage checks.
Connector history. Koinly’s Hyperliquid integration documentation states up to 10,000 transactions per wallet. That vendor counting unit is not established as identical to raw fills. The page does not prove which old records survive or how a current account warns about omissions.
Product allowance. Koinly’s tax-plan help distinguishes a free account’s 10,000 transactions across wallets from paid report access and plan allowances. It says free-account calculations halt above that allowance and free accounts cannot generate reports. Check the applicable tax year, total history and selected allowance before buying. Paying for capacity does not prove missing source or connector history will be restored.
Accounting representation. Koinly’s derivatives documentation includes Hyperliquid among integrations represented through realized PnL and associated fees rather than every contract execution. It describes daily aggregation for some integrations, without establishing that every integration uses it. Raw fills, imported accounting entries and billable transactions need separate counts and an explained mapping.
Keep HyperCore and HyperEVM histories distinct
HyperCore activity and HyperEVM application activity are separate record streams. Hyperliquid describes HyperEVM as EVM blocks within Hyperliquid’s execution under HyperBFT consensus, with HYPE as gas. Do not treat a Core fills export as EVM history. The network guide explains the practical distinction.
For a Core/EVM transfer , retain both sides. Compare the asset identity, account, direction, amount, timestamp, references and any fee or precision difference. Label the proposed match in your working notes; if a leg or mapping is unclear, leave it unresolved. Two source records can describe one movement, so retaining both is different from counting both as new economic activity. Tax classification still requires jurisdiction-specific review.
Koinly lists Hyperliquid and HyperEVM as separate integrations. This is vendor-documented availability, not HypeChain proof of complete DeFi coverage or successful transfer matching. Start from deposit and withdrawal records when tracing movement into or out of the account.
Download the records inventory
- Blank records inventory CSV — header only; add your own inventory rows locally.
- Synthetic example inventory CSV — fictional aliases and coverage notes showing an unresolved gap.
Both files are inventory/checklist files. They are not transaction exports, Koinly-compatible import files, tax calculations or filing-ready reports. Nothing is uploaded to HypeChain by using them.
Add one row per account, network, record type and source file. Enter the intended period/timezone, coverage dates, source row count, known gaps, review status and notes. Use a local alias instead of publishing an address. Store the originals separately; enter a SHA-256 checksum of the actual file if you calculate one, or leave it explicitly not recorded. A checksum helps identify a file; it does not prove that file’s history is complete. Keep working copies private and review untrusted spreadsheet input before opening it.
Worked example: an unresolved bot-history gap
This is synthetic, not a wallet import or a Koinly result. Suppose SYNTHETIC-demo-bot-subaccount needs January 1–31, 2026 in UTC. Its saved fill file contains 120 rows, with its earliest fill on January 8. A retained bot log indicates activity during January 1–7. That gives a reason to investigate the uncovered period, but does not establish how many fills are missing.
The example inventory records the gap and marks the stream incomplete. Funding and transfer files receive separate rows; their presence does not repair the fills gap. Even if a month-end balance matches, preserve that discrepancy. Look for older originals and verify their identities and overlap before joining working copies. If coverage cannot be established, bring the limitation to the accountant; do not manufacture January 1–7 transactions.
Evaluate Koinly against your inventory
Koinly is one reporting-software candidate. HypeChain has not tested its suitability for your account. The links here are neutral official links, with no affiliate code or offered discount.
After checking the four limits above, read the official Hyperliquid sync instructions and, where relevant, HyperEVM sync instructions . They describe importing through a public address and then reviewing transactions. A public address reveals financial history; make that privacy decision deliberately. These instructions do not call for a recovery phrase, private key or trading signature.
If you choose to import, compare the result with the preserved source records. Check period boundaries, missing or mistagged entries, fees, funding and transfers before relying on a dashboard or report. Keep the raw source count, imported-entry count and billable count separately.
Use one import method per wallet as your starting point. Koinly warns that mixing API and CSV history can create duplicates because records may differ in timestamps, rounding or representation. Do not blindly layer a CSV over sync, import both orders and fills as trades, or split wallets to evade a limit. A recovery import needs an explained overlap mapping and a restorable working copy.
Check current Koinly pricing for the selected year, allowance and report. This guide makes no claim that a paid plan fixes incomplete history or that a generated report is ready to file. Ask a qualified local tax professional about derivatives, funding, fees, transfers, prior acquisitions and reporting obligations. For US readers, the IRS explains how to choose a tax professional ; elsewhere, use your tax authority or professional body’s register and check relevant crypto experience.
Troubleshooting
Why is a busy bot account’s history empty? Check the account address and selected subaccount first. An agent signer’s address may identify the wrong history. Empty data is not proof of no trading.
Why are transactions missing in Koinly? Compare the missing period with the originals. Separate unavailable source history, the connector limit, an account allowance/calculation block and accounting grouping. Record the warning and oldest imported entry; no single fix is established for all four causes.
Why does the import count differ from fills? Orders can have multiple fills, and derivatives may be represented as PnL/fees. Require a mapping and matching amounts before calling the difference explained.
Can I fill a gap with the example CSV? No. It lists files to collect and questions to resolve. It contains no transactions to import and no substitute for missing evidence.