How to reconcile stablecoin activity to your ledger
Reconciling onchain activity to your ledger is checking that the transfers, mints, burns and positions on the chain agree with your own records, such as a fintech ledger, a bank’s core ledger or a custodian’s figures, and explaining each difference before the books close.
This playbook sets out the decisions in the order you’ll make them. Each one links to the use case pages and docs that cover it in detail.
See stablecoin cash on every wallet and chain
Stream each wallet’s balance into your database or call a balances API from your app, depending on how many wallets you hold.
- Use caseStablecoin treasury management across chainsSee stablecoin cash across every wallet and chain in one place.
- Use caseWays to see stablecoin cash across chainsEach way to build it side by side, with what each one suits best.
- DocsFeeds API: BalancesGet the latest native and token balances for one wallet across chains, with USD values and a total for the wallet.
Decide when idle cash is swept
Set the balance above which operating cash counts as idle, leaving the working float your operations need.
Keep gas wallets funded on every chain
Set a floor for each wallet that pays network fees, because an empty one stops payouts, mints and settlements on its chain.
Track the gas you pay for your users
List the paymasters and accounts that are yours, so spend per user can be totaled from the chain and checked against the provider’s bill.
Post customer transfers to your ledger
Choose whether your ledger reads each transfer from your own queue or from transfer rows synced into your database.
- Use casePost onchain transfers to your ledgerPost each confirmed onchain transfer to the fintech’s own ledger, corrected for reorgs.
- Use caseWays to post onchain transfers to a fintech ledgerEach way to build it side by side, with what each one suits best.
- DocsTurbo Kafka sinkPublish pipeline rows to your Kafka topic as Avro or JSON, at least once, with each row marked as an insert, update or delete.
- DocsSync Feeds to your databaseHave a feed’s rows pushed to your database or a webhook as they land, so your app doesn’t poll the API.
Decide when a transfer is final enough to post
Set when a transfer counts as final on each chain, because the chain can replace its newest blocks and undo a transfer you’ve seen.
- DocsTurbo Pipelines delivery guaranteesHow Turbo Pipelines delivers every record at least once, why your destination should ignore duplicates, and how reorg corrections reach your database or queue.
- Use casePost onchain transfers to your ledger with a synced transfers feedFeeds pushes new transfer rows into your database as they land, and your ledger code reads them from there.
Feed your crypto accounting subledger
Decide whether each transfer reaches the subledger with its USD value already on the row or joined on by your team.
- Use caseOnchain data for crypto accountingSend priced onchain activity to a crypto subledger so finance can close the books.
- Use caseWays to feed onchain data to a crypto subledgerEach way to build it side by side, with what each one suits best.
- DocsFeeds API: TransfersGet the native and token transfers in and out of one wallet across chains, newest first, with the USD value at transfer time.
Match payments to invoices
Decide how a payment points back to its invoice: a memo reference where the token carries one, or its own address or amount.
- Use caseStablecoin invoice matchingMatch incoming stablecoin payments to invoices or customers and flag the ones that don’t match.
- Use caseWays to match stablecoin payments to invoicesEach way to build it side by side, with what each one suits best.
- GuideReal-time payment reconciliationDecode payment memos with Turbo Pipelines, stream each settlement into your ledger database and match it to an invoice as it lands.
Match intercompany settlements to the netting run
Watch every entity wallet, so each transfer between your entities lands beside the intercompany ledger for treasury to match.
Tie each mint and burn to its reserve movement
Agree with your custodian how it reports each cash movement, so every mint and burn can be matched before the examination.
Tie out tokenized deposits to the core
Start the tie-out when the core ledger closes, so tokens outstanding at the cutoff block are compared with the deposits the core holds.
- Use caseTokenized deposit tie-out to the core ledgerTie tokenized-deposit balances onchain to the bank’s core ledger each day.
- DocsCompose task triggers: cron, HTTP, and onchainRun a Compose task on a schedule, from an HTTP call or when an onchain event lands, and set how it retries when a run fails.
- DocsEdge RPC eth_callRead a contract’s state, such as its total supply, at any block number without sending a transaction.
Reconcile tokenized and book-entry positions
Agree one cutoff with your transfer agent or custodian, because each holder’s token balance is compared with their position at that moment.
Fix the period-end cut-off
Set the cut-off date, time and time zone before anything is read, because balances, positions and prices all have to describe the same moment.
- Use caseDigital asset audit evidenceGive auditors each wallet’s balance at the year-end cut-off block and the year’s transfers.
- Use caseDeFi accounting for positions and vaultsBook accrued rewards, vault shares and lending positions across DeFi protocols at period end.
- Use caseCrypto fair-value pricing from DEX tradesFeed DEX trade prices into principal-market fair-value marks and the VWAPs used to check them.
- DocsFeeds API: BlocksTurn a time into a block number, such as the newest block at or before a month-end cut-off.
Build the data behind tax forms and reports
Keep every customer wallet’s transfers with their USD values at the time, going back far enough for cost basis and each year’s totals.
- Use caseForm 1099-DA data for brokersSupply the transfer history and USD values behind each customer’s Form 1099-DA.
- Use caseDAC8 and CARF reporting dataSupply the valued transfer history behind each user’s yearly DAC8 or CARF report.
- DocsFeeds API: TransfersGet the native and token transfers in and out of one wallet across chains, newest first, with the USD value at transfer time.
Report from your warehouse
Keep decoded onchain history in the warehouse where finance and BI already work, so their reports join it with the rest of your data.
Show client and firm assets apart on any date
Label every wallet as firm or client, so the split can be checked against your custodian and your books on any date an auditor or regulator picks.
Turn this plan into a working build
We can help you work through each decision and get the first stage into production.