Reconciliation means proving that the balance your books compute for an account equals the balance the canonical source reports for that account at a point in time. For crypto, there are two canonical sources — the exchange statement for what a CEX custodies on your behalf, and the chain itself for what a self-custody wallet holds — and the books must agree with both, independently.
Two canonical sources, two reconciliations
When funds sit on a centralised exchange, the exchange is the custodian. Its API balance or CSV export is the canonical record of what it holds for you. The chain cannot tell you this — the assets are pooled in the exchange's own wallets, indistinguishable from every other customer's. So the canonical source for a Coinbase or Kraken account is the exchange statement, full stop.
When funds sit in a wallet you control, the position reverses. The chain is canonical — the on-chain balance at a block is the ground truth, and no third-party indexer or dashboard overrides it.
Reconciling to each source independently is the point. If the books agree with the exchange and separately agree with the chain, the numbers are not merely internally consistent — they are confirmed against the two parties who actually hold the assets. That is what makes a set of crypto books audit-defendable rather than merely plausible.
What a discrepancy actually is
A reconciliation fails when the book balance for an account does not equal the canonical balance at the chosen point in time. The difference is never random; it has a finite list of causes, and naming the cause is most of the fix:
- A missing trade or transfer — a movement happened on the exchange or chain that the import never saw.
- An unbooked fee — a trade fee or withdrawal fee that reduced the real balance but was not posted.
- A one-sided internal transfer — a withdrawal recorded on the sending account but never matched to the receiving wallet, or the reverse.
- A misclassified transaction — the movement was imported but posted with the wrong type, so it hit the wrong account or the wrong basis effect.
- A dust or scam token — the exchange or chain credited a token the user never acquired, inflating a balance with something that is not a real holding.
- Rounding — sub-unit differences that accumulate across many trades.
Each of these is a specific, resolvable condition, not a vague "the numbers are off."
The double-entry treatment that keeps the books balanced
The reason discrepancies stay small and findable is that every movement is posted as a balanced pair. A spot trade is two asset legs and, where applicable, a fee leg:
Debit Bought Asset (asset) $2,400 Debit Trading Fees (expense) $6 Credit Sold Asset (asset) $2,406
The single most common reconciliation error is treating an exchange withdrawal to a self-custody wallet as a disposal. It is not a disposal — nothing was sold. It is one internal-transfer posting that moves the asset from the exchange account to the wallet account:
Debit Cold Wallet (asset) $2,400 Credit Exchange Account (asset) $2,400
Booked this way, the withdrawal nets to zero across the two accounts. Booked as a disposal, it invents a phantom gain and leaves both the exchange account and the wallet out of balance against their canonical sources — two discrepancies from a single mistake. HQ Wealth pairs the two sides of every internal transfer automatically, so a wallet-to-wallet or exchange-to-wallet movement is never counted twice and never surfaces as a false disposal.
Clearing the queue
Reconciliation in HQ Wealth is not a pass/fail banner — it is a worklist. Every imported movement is checked against its canonical source: the chain, the exchange API, a CEX CSV statement, or a bank feed. Anything that does not match is routed into a reconciliation queue the user works through and signs off, item by item.
A practical pass looks like this:
- Run the reconciliation for the period close date so the book balance and the canonical balance are compared at the same instant.
- Open the queue. Each entry names the account, the size of the gap, and the most likely cause.
- Resolve each one — add the missing trade, book the unbooked fee, pair the orphaned transfer side, reclassify the mistyped transaction, or flag the credit as scam.
- Scam and airdrop tokens are checked against a system-wide blocklist before they ever reach a balance, so most never enter the queue in the first place.
- Sign off. CEX journal entries carry counterparty tracking, so a cleared item records who the movement was with, not just that it balanced.
When the queue is empty, the books equal the exchange statement and equal the chain, each verified on its own terms.
Takeaway: Reconciling to the exchange and to the chain independently is what proves the numbers — internal consistency is not enough. A reconciliation queue that names each discrepancy by cause, pairs internal transfers automatically, and books a withdrawal as a transfer rather than a disposal is what turns a plausible balance into an audit-defendable one.