Ondology Labs · Crypto transaction reconciliation

A sample report. Sample Trading Ltd is a fictional company with three wallets, an exchange account and a ledger containing seven planted bookkeeping mistakes. This is the report the free AI Auditor produced for it, unedited. Open the sample in the tool or reconcile your own books, free.

Ondology Labs · AI Auditor

Reconciliation Report

Sample: FY2025 reconciliation · Sample Trading Ltd
Period: 2025-01-01 to 2025-12-31
Materiality: $10,000 · Base currency: USD
Generated 2026-01-15 09:00 UTC

Results at a glance

187
Entries in scope
96.6%
Activity matched (count)
98.0%
Activity matched (value)
21
Internal transfer pairs
7
Open breaks
3
High severity

Scope: wallet and account register

SourceKindChain / FormatAddressEntriesCoverage
Treasury wallet wallet ethereum 0x1111111111111111111111111111111111111111 33 Complete (33 txs)
Operations wallet wallet ethereum 0x2222222222222222222222222222222222222222 69 Complete (69 txs)
Cold storage wallet bitcoin bc1qsamplecoldstorage0000000000000000000000 2 Complete (2 txs)
Exchange main account exchange generic 20 Complete (20 txs)
General ledger extract ledger generic 71 Complete (71 txs)

Methodology

On-chain history was retrieved through Ondology's chain data layer and normalised into per-movement entries. Exchange statements and the client ledger were imported and normalised to the same shape. Matching ran deterministically in four passes: previously approved matches, transaction-reference matching (hash, asset, direction), tolerance matching (asset, direction, amount within 0.50%, timestamps within 24 hours), and internal transfer pairing across owned sources. Residual items became the break report below. AI-assisted match proposals, where used, were individually reviewed and appear in the match log as approved matches. Valuation convention: entries dated D are valued at the 00:00 UTC price on D from the primary source, cross-checked against a second source; same-day entries use the live price; stable-value assets are pegged at 1 USD. Every quote used is retained as a price snapshot, and cross-source disagreements above 2% appear in the break report.

Asset summary

AssetActivity inActivity outNet activityBooks inBooks out
BTC 2 4 -2 0 2
ETH 85.58 160 -74.42 5.58 100
USDC 1,502,500 935,800 566,700 848,500 302,600

Position schedule

Balances at the period dates, derived from every recorded movement: opening is the sum of all movements before 2025-01-01, closing is opening plus inflows less outflows and fees. In the first table, inflows and outflows are movements with third parties: transfers the engine paired between the client's own accounts are left out. Fees are charged to the asset they were paid in. Closing balances are valued at 2026-01-01 00:00 UTC.

AssetOpeningInflowsOutflowsFeesClosingClosing valueNet movement per ledgerDifference
BTC 12 0 2 0.0002 9.9998 $899,982-2-0.0002
ETH 249.9955 25.58 100 0.0506 175.5249 $526,575-94.4219.9494
USDC incomplete 500,000 862,500 295,800 655 1,066,045 $1,066,045545,90020,145
Total closing value of valued assets$2,492,602

Difference is the net movement shown by wallets and exchanges less the net movement in the ledger. A non-zero figure is explained by the open items in the break report.

By wallet and account

Every movement on each account, transfers between own accounts included.

SourceAssetOpeningInflowsOutflowsFeesClosingBasis
Treasury wallet ETH 244.9955 5.58 80 0.0212 170.5543 Full history
Treasury wallet USDC 400,000 0 360,000 0 40,000 Full history
Operations wallet ETH 5 0 0 0.0294 4.9706 Full history
Operations wallet USDC 100,000 1,082,500 295,800 0 886,700 Full history
Cold storage BTC 12 0 2 0.0002 9.9998 Full history
Exchange main account BTC 0 2 2 0 0 Statement window
Exchange main account ETH 0 80 80 0 0 Statement window
Exchange main account USDC 0 420,000 280,000 655 139,345 Statement window
At least 80,005 USDC of earlier history is missing

Break report (7 open)

SeverityTypeFindingAmountValueStatus
high unrecorded activity Unrecorded inflow: 14000 USDC
This activity movement (tx 0x53b79c82a4d61e…) with counterparty Customer B has no corresponding ledger entry. Every movement must be recorded or explained.
14,000 USDC $14,000 open
high unrecorded activity Internal transfer recorded one-sided: 20 ETH from Treasury wallet to Exchange main account
Both legs of this movement share one transaction and both accounts belong to the client, so it is a transfer between own accounts. The ledger records only the outflow, which reads as a disposal or payment. Confirm the ledger entry is booked as a transfer, with no gain or loss and no change in cost basis.
20 ETH $60,000 open
high balance mismatch Negative balance on Exchange main account: USDC falls to -80005 on 2025-01-08
Adding up every recorded movement, more USDC left Exchange main account than had arrived by 2025-01-08. At least 80005 USDC of history is missing: the statement starts after the account was funded, or deposits and trade proceeds are absent from it. Opening and closing balances for this asset are understated until the earlier history is added.
80,005 USDC $80,005 open
medium unsupported book entry Unsupported ledger entry: out 7250 USDC
No on-chain transaction or exchange record was found supporting this ledger entry dated 2025-09-22. Ledger memo: "Supplier invoice (hosting)".
7,250 USDC $7,250 open
medium balance mismatch Balance mismatch on Treasury wallet: computed vs live differs by -1.50000000 ETH
Summing all fetched flows gives 170.55430000 ETH, but the live balance is 172.05430000 ETH. Possible causes: transfers missing from the fetched window, fee attribution differences, or activity via mechanisms the data source does not index.
1.5 ETH $4,500 open
low amount mismatch Amount mismatch on USDC (d6140f3ea98f…)
Ledger records 9050 USDC but the matched activity entry shows 9500 USDC for the same transaction reference. Difference: -450.
450 USDC $450 open
low unrecorded activity Unrecorded network fees: 2 entries totalling 0.0018 ETH
2 fee/self entries have no ledger counterpart. Gas is a real cost that must be recognised somewhere (capitalised, expensed, or treated as disposal cost) according to the engagement's treatment decision.
0.0018 ETH $5 open

Treatment memorandum

No treatment decisions recorded yet. Document the position taken on gas, rewards, airdrops, internal transfers, and DeFi positions before finalising.

Match log summary

Match typeCount
books/reference48
books/window22
internal/reference21
Total accepted matches91

Disclosures and limitations