DC-Services — Digital Claims Services Limited

Digital Asset Records · 3 February 2026 · 10 min read

Reading Exchange Statements Without Inventing Facts

Exchange exports look like data and behave like opinion. DC-Services classifies what each column can support and refuses to fill the rest in.

Reading Exchange Statements Without Inventing Facts

Exchange exports look reassuringly numerical, which is the source of most of the trouble. Two venues will describe the same trade with different timestamps, different fee conventions, different ticker symbols and, occasionally, a different idea of which calendar day it was. DC-Services reads these files line by line, keeps the venue's record separate from any on-chain match, and writes the disagreements down rather than averaging them into a comfortable middle. The sections below describe how a statement becomes a usable record — and where it stops being one.

Timestamps That Quietly Disagree With Each Other

Every export carries a clock. Some use UTC, some use the user's local time at export, some use UNIX epoch, and a few use whichever the engineer reached for first. Combining them without normalisation produces a timeline that looks neat and is wrong, often by a full calendar day on either side of a withdrawal. The first job is to convert everything to a single reference, usually ISO 8601 UTC, and to record what the original value was before the conversion.

Where a block timestamp can be matched against a withdrawal entry, that match is documented as a verified finding. Where the venue's clock and the chain disagree by more than the network's confirmation window, the variance is recorded as such — not adjusted, not smoothed, not blamed on the user. A statement is allowed to be slightly wrong about time; it is not allowed to be silently corrected.

Fees Hidden In Three Different Places

Trading fees behave differently across venues. Some deduct from the asset received, some from a separate balance, some from a held token denominated in the platform's own coin, and some show a gross amount that includes the fee while others show the same trade net. Adding rows from two such venues without identifying the convention will inflate one balance and deflate another, and the spreadsheet will look internally consistent the entire time.

Each fee deduction is recorded with the asset it was charged in, the time it was charged, and whether the line reflects gross or net of fee. Where the export is ambiguous, the line is classified as ambiguous rather than resolved — a small admission that prevents a larger correction later.

Ticker Symbols That Mean Different Things

Token tickers are not universal identifiers. The same three letters can refer to two different contracts on two different networks, and migrations and rebrands routinely leave a venue's history showing one symbol for what is now a different asset. Equally common: an export uses a wrapped representation while the chain shows the underlying, or vice versa.

Symbols are mapped to the specific contract or asset reference the venue actually credited at the time. Inverted pairs are recalculated to the directional flow that occurred. Where the venue's symbol cannot be tied to a specific underlying, the entry is held in a separate column rather than guessed.

Reading Exchange Statements Without Inventing Facts

Internal Transfers Dressed As Withdrawals

Many statements record movements between sub-accounts of the same venue using the same row format as on-chain withdrawals. Read literally, the file shows assets leaving the platform when in fact they never did. The clue is usually the absence of a transaction hash, but the export will not always announce that helpfully — it will simply leave the field blank.

Lines without a verifiable on-chain identifier are classified as internal movements until a hash is produced. Tracing them externally before that point produces false alarms and wasted reviewer time, both of which are easier to avoid than to apologise for.

Outbound Transactions That Need Confirming Off-Site

A withdrawal row in a statement records that the platform accepted a request, not that the network settled it. Settlement requires a hash, a destination address, a block confirmation and a matching credit on the receiving side. Where any of those is missing, the withdrawal is described as initiated rather than completed, with a short note explaining which piece is absent.

Where all four match, the transfer is documented as record-backed end to end. The point is not pedantry; it is that the difference between requested and settled occasionally matters, and the file should not have to be re-read later to find out which one it claimed.

Pre-Extraction Export Validation Checklist

  • Confirm the timezone selected at export time and record it in the file header.
  • Re-pull the export with transaction hash fields enabled, where the venue offers them.
  • Download the full historical range, not the default last-90-days window.
  • Separate API-generated exports from screenshots or PDF account statements.
  • Identify sub-account transfers that lack any on-chain identifier.
  • Note the fee deduction asset for each trading pair encountered.
  • Record any historical periods that the venue no longer retains.

Frequently asked questions

What do you do when a withdrawal row has no transaction hash?

It is recorded as a platform-initiated movement, not a settled on-chain transfer. The file flags the missing identifier rather than guessing the chain destination. Where the user can later supply or reconstruct the hash, the entry is upgraded to a record-backed finding.

Do mixed timezone formats really change the picture?

They can. A single day's drift is enough to put a withdrawal in the wrong tax year, the wrong reconciliation window, or the wrong side of a contractual deadline. Every timestamp is normalised to UTC, with the original value preserved in the working file so the conversion is checkable.

What happens when the export's maths does not add up?

The line is isolated and recorded as a numerical variance, with the gross and net figures shown side by side. The file does not silently overwrite the venue's figures, and it does not invent a fee to make the totals match.

How are renamed or migrated tokens handled?

Each ticker is mapped to the specific contract or underlying the venue credited at the time. Renames and migrations are documented as events on the asset's own row, so the historical record remains accurate even when the symbol on the platform has since changed.

Will you reconstruct fees that the export does not show?

No. The file works from the records the venue actually produced. Where a fee structure is known to apply but the line item is absent from the export, the gap is documented rather than back-calculated, and the user is told what to request from the venue.

An exchange statement is a useful record when it is read for exactly what it says, and a misleading one when it is asked to say more. The output is a normalised ledger with the venue's figures intact and the unresolved questions visible.

More in Digital Asset Records