Stablecoin Reconciliation: From On-Chain Transactions to Month-End Close
A practical workflow for mapping USDC and USDT activity to ledger entries, importing data into NetSuite or QuickBooks, resolving exceptions, and closing the month.
Stablecoin reconciliation connects three records: what happened on-chain, what happened in your treasury platform, and what was posted to the general ledger. The objective is straightforward: every USDC or USDT movement should have a business purpose, an accounting entry, and evidence that supports it.
The work becomes more complicated when a company uses several wallets, blockchains, fiat accounts, payout batches, cards, and on/off-ramps. A single vendor payment may involve a stablecoin transfer, a network fee in another token, an invoice, an approval record, and a fiat valuation for bookkeeping.
A consistent data model and close process make this manageable, whether the accounting system is NetSuite, QuickBooks, or another general ledger.
What to capture for every transaction
Start with a transaction-level activity file for the accounting period. For on-chain movements, each record should contain enough information to identify the transfer independently on a blockchain explorer.
- Transaction hash: the unique identifier for an on-chain transaction.
- Network: such as Ethereum, Base, Arbitrum, Polygon, Tron, BNB Chain, Optimism, or Solana.
- Wallet addresses: the sending and receiving addresses.
- Asset and amount: for example, 25,000 USDC or 10,000 USDT.
- Token contract: important because different tokens can use the same ticker.
- Timestamp: normally recorded in UTC and converted consistently for the accounting cutoff.
- Network fee: including the amount and asset used to pay it.
- Business reference: vendor, employee, customer, invoice, payroll run, or internal transfer.
- Approval evidence: requestor, signers, approval time, and applicable policy.
- Fiat book value: the functional-currency value and the valuation source used.
Stablerail treasury activity can include self-custodial MPC vault transactions, fiat movements, conversions, payouts, card spending, and yield activity. Its audit log and evidence records can be used alongside invoices, payroll files, bank statements, and blockchain data to support the accounting entry.
Map activity to ledger entries
Do not map every blockchain movement to revenue or expense. First identify the economic purpose. Transfers between wallets controlled by the same company are usually balance-sheet movements, while payments to third parties may settle liabilities or record expenses.
| Activity | Typical debit | Typical credit | Evidence |
|---|---|---|---|
| Buy USDC with USD | Stablecoin asset | Bank or fiat balance | Conversion record and bank movement |
| Vendor payment | Accounts payable | Stablecoin asset | Invoice, approval, and transaction hash |
| Customer payment received | Stablecoin asset | Accounts receivable | Invoice, payment reference, and transaction hash |
| Transfer between company wallets | Destination wallet account | Source wallet account | Both addresses and transaction hash |
| Blockchain network fee | Transaction or network fee expense | Native-token asset | On-chain fee record |
| Stablecoin sold for fiat | Bank or fiat balance | Stablecoin asset | Conversion and settlement records |
| Yield received | Stablecoin or yield asset | Interest or other income | Yield statement and liquidity terms |
These are illustrative entries, not universal accounting treatment. Classification can depend on jurisdiction, accounting standards, redemption rights, and company policy. Stablecoins are not automatically treated as cash or cash equivalents in every reporting framework. Confirm the policy with your controller or external accountant.
Record fees separately
A transfer of 10,000 USDC may also consume ETH, SOL, TRX, or another network asset. Record the stablecoin payment and the network fee as separate ledger lines. Combining them can cause the wallet subledger to disagree with the on-chain balance.
Conversion fees and spreads should also be separated where the source records provide them. Use the gross asset movement, the explicit fee, and the net fiat or stablecoin proceeds rather than posting only the amount received.
Structure exports for NetSuite or QuickBooks
For NetSuite and QuickBooks crypto bookkeeping, the main decision is whether to import transaction-level detail or summarized journals. The right approach depends on volume and how much detail the finance team wants in the general ledger.
- Transaction-level import: useful for lower volumes and direct drill-down, but it can create a large ledger.
- Daily summaries: reduce journal volume while preserving a clear reconciliation by wallet, asset, and activity type.
- Monthly summaries: simpler, but require a strong supporting subledger and evidence pack outside the accounting system.
A practical CSV import usually includes posting date, account, debit, credit, currency, entity or subsidiary, department, counterparty, memo, transaction hash, network, and batch reference. Keep the raw export unchanged, then create a separate transformed file for import. This preserves a traceable link between source data and journal entries.
Do not assume that a native accounting integration applies the company’s chart of accounts or valuation policy correctly. Test mappings with a small period before automating the import. The Stablerail help centre can be used when reviewing available transaction and evidence records.
Run a three-way stablecoin reconciliation
At month-end, reconcile each wallet and token independently. USDC on Ethereum and USDC on Solana should be treated as separate subledger balances even if they roll up to the same general-ledger account.
- Reconcile opening balance: agree the prior period’s closing balance to the current period’s opening balance.
- Add incoming transactions: customer receipts, wallet transfers, stablecoin purchases, refunds, and yield.
- Subtract outgoing transactions: payouts, payroll, card funding, stablecoin sales, and network fees.
- Compare with the on-chain closing balance: use the balance at the documented cutoff time.
- Compare with the ledger: confirm that the token quantity and functional-currency value agree with the accounting records.
Apply the same process to fiat accounts and conversion activity. A stablecoin purchase may appear on-chain before the related fiat debit settles, particularly around weekends or banking cutoffs. Record it as an in-transit item rather than forcing both sides into the same date.
Set a clear cutoff policy
Blockchain networks operate continuously, while accounting periods use a fixed cutoff. Define the timezone, required transaction status, and handling of transactions submitted before month-end but confirmed afterward. Apply that policy consistently across all networks.
For batch activity through stablecoin payouts, reconcile both the batch total and each underlying payment. A batch can be approved as one business instruction while producing multiple on-chain transfers.
Resolve exceptions before close
Create an exception queue rather than editing source data. Common exceptions include:
- Transactions with no invoice, payroll run, or counterparty reference.
- Transfers involving an unknown or incorrectly labelled wallet.
- Internal transfers recorded as expenses or revenue.
- Duplicate imports caused by loading the same transaction hash twice.
- Network fees omitted from the ledger.
- Failed, replaced, or pending blockchain transactions.
- Differences caused by timezone or valuation cutoffs.
Assign each exception an owner, status, and resolution note. If a correction is needed, post an adjusting entry without overwriting the raw transaction record. Wallet allowlists, sanctions and wallet screening, approval logs, and quorum-signing records can provide additional context when investigating unfamiliar activity.
Build the month-end evidence pack
The final close package should let a reviewer move from a general-ledger balance to the underlying transactions without repeating the entire reconciliation.
- Closing balance by legal entity, wallet, network, and token.
- Raw transaction export and transformed accounting import.
- Reconciliation workbook with opening balance, movements, and closing balance.
- Journal entry report with preparer and approver.
- Invoices, payroll files, payout batches, and conversion confirmations.
- Transaction hashes and wallet addresses.
- Valuation method and exchange-rate source.
- Exception report, including unresolved in-transit items.
Good stablecoin reconciliation is not about copying blockchain data into a ledger. It is about translating each movement into its economic purpose, applying a consistent valuation and cutoff policy, and retaining enough evidence for another person to verify the result.
Finance writers covering stablecoin treasury, payments, compliance, and risk controls.
More about the Stablerail team- Stablecoin treasury managementApprovals, limits, yield and reporting on one balance.
- Stablecoin payoutsBatch contractor and vendor payments with screening.
- USDT vs USDCWhich stablecoin your company should settle in.
- Stablecoin finance glossaryMPC, off-ramp, travel rule and the rest, in plain English.
- Product updatesEverything we ship, month by month.

