How to Reconcile Crypto Payments at Month-End
Month-end crypto payment reconciliation: match invoices to on-chain txs, USDC wallet balances, QuickBooks/Xero exports, and IRS recordkeeping with Settlematic.
Do this next
Create a crypto invoice
- Quote the invoice in fiat.
- Client pays USDC, USDT, or EURC.
- Funds settle to a wallet you already control.
TL;DR
Reconcile crypto payments at month-end by matching three sources: your invoicing platform's paid invoice list, on-chain wallet transaction history, and accounting system entries (QuickBooks/Xero). Investigate discrepancies for missing exports, wrong-chain deposits, partial payments, and internal transfers. Settlematic's per-invoice tx hashes make matching tractable for non-custodial workflows.

Month-end crypto payment reconciliation is the finance process of proving that every invoice marked paid in your billing system corresponds to a verified on-chain transaction, that every wallet deposit is attributed to revenue or explained as non-invoice flow, and that your general ledger cash and income accounts agree with blockchain reality—satisfying internal controls and IRS/EU substantiation standards before you close the books.
Why Crypto Reconciliation Differs From Bank Reconciliation
Bank statements arrive as single institution-curated PDFs. Crypto wallets generate permissionless transaction streams across potentially multiple chains, tokens, and addresses. Non-custodial invoicing adds unique addresses per invoice—excellent for attribution, but multiplying addresses to monitor.
Challenges:
- No single statement — aggregate across Solana, Base, Ethereum
- Token diversity — USDC, USDT, ETH in same period
- Internal transfers — treasury moves look like income if unfiltered
- Timing — invoice paid date vs block timestamp vs export lag
- Wrong-chain deposits — funds received but not on expected network
Structured month-end process eliminates surprise adjustments during tax prep.
The Three-Way Match
| Source A | Source B | Source C |
|---|---|---|
| Settlematic paid invoices | On-chain wallet txs | QuickBooks/Xero GL |
Every paid invoice should appear in all three with consistent amounts (within tolerance). Discrepancies trigger investigation worksheet.
Pre-Close Preparation (T-3 Days)
Freeze informal wallet movements
Pause discretionary transfers from invoice-receiving wallets during close week. Treasury sweeps to cold storage should follow documented schedule after reconciliation sign-off.
Confirm export completeness
Run Settlematic paid report for [month_start, month_end]. Compare count to webhook payment_confirmed log if automated—see webhook-patterns-crypto-billing.
Pull accounting draft
QuickBooks/Xero trial balance for USDC asset accounts and revenue. Unmatched bank lines in Xero reconciliation queue should be zero before close.
Step 1: Invoice-to-Transaction Matching
From Settlematic dashboard or CSV export per export-crypto-invoice-data-quickbooks-xero:
For each paid invoice, verify:
- tx_hash exists on stated network
- On-chain to_address matches invoice payment address
- token and amount match within tolerance (0.01% for stables)
- confirmations met platform threshold at time of paid status
Mark matched rows green in reconciliation spreadsheet. Unmatched invoices (marked paid but tx not found) escalate to engineering—possible indexer false positive.
Step 2: Transaction-to-Invoice Matching (Reverse Direction)
Pull wallet transaction list from:
- Block explorer address history (manual, low volume)
- Indexer API (Alchemy, Helius, Solscan Pro)
- Settlematic aggregate deposit report
Each inbound transfer during period must be:
- Matched to invoice (expected)
- Identified as wrong-chain payment per crypto-invoice-paid-wrong-chain
- Classified as internal transfer (exclude from revenue)
- Flagged as unknown (investigate before close)
Unknown inbound txs are the highest-risk reconciliation gap—could be unrecorded revenue or client error.
Step 3: Accounting System Alignment
Compare sum of matched invoice USD amounts to QuickBooks/Xero payment imports:
| Check | Pass criteria |
|---|---|
| Row count | Invoice export count = QB payment count ± documented exceptions |
| Total amount | Σ invoice fiat = Σ GL deposits ± rounding |
| Tx hash coverage | 100% paid invoices have hash in GL memo |
| Open AR | No invoice both "open" in QB and "paid" in Settlematic |
Post adjusting journal entries for:
- Missing imports (understated cash)
- Duplicate imports (overstated cash)
- Period cutoff (paid last day of month, imported first day next month)
Reconciliation Worksheet Template
Columns:
- Invoice #
- Client
- Invoice date
- Paid date (platform)
- Fiat amount
- Crypto amount + token
- Network
- Tx hash
- On-chain verified (Y/N)
- QB/Xero posted (Y/N)
- Variance
- Notes
Sort by Variance ≠ 0 for investigation queue.
Handling Common Discrepancies
Partial payments
Invoice open in Settlematic, deposit in wallet. Do not recognize full revenue. AR aging should show balance due.
Overpayments
Record unapplied payment or issue credit note. Client communication per policy.
Wrong-chain EVM deposits
USDC on Ethereum when invoice expected Base—funds exist, attribution delayed. Suspense account until resolved per recover-wrong-chain-crypto-invoice-payment.
Gas and fees
Merchant-paid sweep gas is expense, not revenue reduction. Client withdrawal fees causing underpayment are invoice-level partial payment.
Stale unpaid invoices
Expire in Settlematic; no GL impact. Write off per bad debt policy if uncollectible.
Multi-Chain Consolidation
CFO question: total USDC equivalent received?
Method:
- Reconcile each network wallet separately (chain-specific explorers)
- Convert to functional currency at month-end rate if reporting EUR consolidated statements
- USDC ≈ USD 1:1 for management reporting; document FX policy
Solana USDC + Base USDC + Ethereum USDC = sum only after each chain reconciled independently—never assume cross-chain balance without per-chain tx review.
IRS and EU Recordkeeping
IRS Publication 583 and general requirements: maintain books showing income and expenses. Month-end reconciliation worksheet + tx hashes + exported CSVs form substantiation package.
EU VAT: reconciliation confirms payment received for cash-basis VAT schemes where applicable; accrual VAT entities may have recognized VAT on invoice date regardless of crypto payment timing.
MiCA does not directly govern merchant reconciliation but CASP partners would—non-custodial Settlematic Collect keeps reconciliation in your control.
Automation Opportunities
Reduce manual close from days to hours:
- Webhook → QuickBooks real-time posting
- Nightly indexer sync comparing wallet to platform
- Alert on unmatched inbound > $1,000
- Settlematic MCP queries for exception triage per settlematic-mcp-vs-dashboard-workflows
Retain human sign-off on reconciliation worksheet for SOX or investor audit contexts.
Close Sign-Off Checklist
- [ ] All paid invoices matched to on-chain txs
- [ ] All inbound wallet txs explained
- [ ] QB/Xero USDC accounts reconciled to platform totals
- [ ] Wrong-chain items in suspense with recovery plan
- [ ] AR aging matches Settlematic outstanding
- [ ] Reconciliation worksheet saved to immutable storage
- [ ] Controller/CFO approval documented
Timeline: Typical Close Calendar
| Day | Activity |
|---|---|
| Last day of month | Cutoff; no backdated invoice edits without disclosure |
| +1 | Pull reports; begin matching |
| +2 | Resolve exceptions; post adjustments |
| +3 | Sign-off; treasury sweeps allowed |
| +5 | Management reporting with crypto revenue breakout |
Tools Stack Reference
- Invoicing: Settlematic dashboard
- Explorers: Solscan, Basescan, Etherscan
- Accounting: QuickBooks Online or Xero
- Spreadsheet: Google Sheets reconciliation template
- Storage: S3/Google Drive audit folder by period
Scaling Month-End Close
| Volume | Approach |
|---|---|
| <50 invoices/month | Manual CSV + spreadsheet |
| 50-200 | Semi-automated webhook import |
| 200+ | Dedicated crypto sub-ledger + API sync |
Controller and Auditor Collaboration
External auditors sampling Q4 revenue will request proof of crypto receipts matching recognized income. Provide reconciliation worksheet signed by controller, Settlematic paid invoice export, matching QuickBooks deposit report, and block explorer printouts for sampled tx hashes. Explain non-custodial model—funds never commingled in processor omnibus wallet—so auditor understands why bank statements show wallet transfers not merchant processor deposits. SOC 2 Type II clients extend sampling to webhook processing logs per webhook patterns.
Segregation of Duties
Best practice: invoice creation (sales/ops) separate from reconciliation sign-off (controller). Same person creating and approving reconciliation weakens internal controls investors expect pre-Series B. Settlematic dashboard RBAC supports role separation—creators cannot void paid invoices without admin role. Document who holds wallet keys vs who marks invoices paid in system; key holder should not be sole reconciler without secondary review for payments above materiality threshold.
Prior Period Adjustments and Restatements
Discovering Q2 invoice never exported in Q4 close requires prior period adjustment, not silent Q4 lump sum. Post correcting journal entry with disclosure memo; attach late-discovered tx hash. Material misstatements may require restatement—crypto's transparency ironically makes omissions harder to hide because chain history persists. Run "full year re-reconcile" project if first year accepting crypto; do not assume first-pass exports were complete.
Software Tools Beyond Spreadsheets
At scale, consider: Cryptio, Tres Finance, or Koinly for sub-ledger automation (verify Settlematic export compatibility); Bitwave for enterprise treasury; custom Postgres reconciliation DB fed by webhooks. Spreadsheet suffices under 100 monthly invoices; graduate before close takes three full days. Evaluate tool cost against controller overtime during tax season.
Intercompany and Partner Revenue Splits
Agencies splitting revenue with partners after client crypto payment need clear policy: recognize gross then allocate per contract, or recognize net. On-chain payment arrives gross to agency wallet—partner split is off-chain second transfer with separate journal entry. Do not commingle partner-split transfers with invoice receipts in same wallet without tagging; reconciliation becomes intractable. Document partner payment tx hashes separately from client invoice tx hashes.
First-Month Reconciliation Bootcamp
Teams new to crypto should block four hours for first month-end close:
- Hour 1: Pull Settlematic paid report and wallet explorer history
- Hour 2: Build reconciliation spreadsheet template (reuse monthly)
- Hour 3: Match rows; flag exceptions
- Hour 4: Post QB/Xero adjustments; document open items
Second month typically halves duration. By month six, mature webhook automation reduces close to under one hour for sub-100 invoice volumes. Pair finance lead with engineer for first close—engineer explains tx hashes; finance owns GL impact. Record Loom walkthrough for future hires.
Reconciliation is not optional because crypto is "too new" for auditors—IRS and EU tax authorities expect substantiation regardless of payment rail. A single documented month-end close process converts crypto from finance team anxiety into routine operational overhead comparable to reconciling PayPal or Stripe payouts.
Annual Close and Crypto
Year-end close adds steps beyond monthly: verify no December invoices paid in January were recognized in wrong year (cutoff policy); confirm all suspense accounts (wrong-chain, partial payments) are zero or explained in footnotes; provide auditor with annual sum of crypto revenue by chain for disclosure schedules if material. Public companies may need crypto asset footnote under ASC 350/intangibles or fair value guidance depending on treasury policy—consult SEC reporting advisor if applicable.
Reconciliation Metrics for Management
Track and report monthly: total crypto revenue, average time invoice-to-payment, reconciliation exception count, wrong-chain rate, export automation percentage. Board slides showing improving metrics demonstrate finance ops maturity as crypto volume grows—justifies continued Settlematic Collect investment vs ad hoc wallet monitoring.
Assign a named reconciliation owner each month—even in two-person startups—to prevent "someone will do it" drift that leaves Q3 unreconciled until CPA panic in March. Ownership matters more than tooling sophistication for reliable month-end close.
Compare reconciliation duration month-over-month in your finance team retrospective—target 20% reduction quarter-over-quarter as automation matures from manual CSV to webhook-driven QuickBooks posting. Stagnant close times signal process debt requiring dedicated improvement sprint before invoice volume doubles.
Frozen reconciliation templates—pre-built spreadsheet formulas, explorer bookmark folders, Settlematic saved filters—reduce month-end setup from 45 minutes to 5. Invest one hour documenting your template after second successful close; amortize across every future month.
Reconciliation is the control that proves your crypto revenue is real, complete, and accurately recorded—without it, accepting crypto creates more audit risk than accepting wires. Treat month-end reconcile as non-negotiable as payroll—skip it only if you intend to stop accepting crypto entirely.
Building a reconciliation standard operating procedure
Document your month-end crypto reconciliation as a formal SOP that any finance hire can execute without tribal knowledge. The SOP should reference: report pull locations in Settlematic, wallet explorer bookmarks per chain, spreadsheet template version, exception escalation contacts (engineering for indexer issues, support for wrong-chain), and sign-off authority matrix. Include screenshots of each step for the first edition, then replace with links once the team is trained. Store the SOP alongside your reconciliation worksheets in immutable storage — auditors request process documentation, not just outputs.
Version the SOP when you add chains, change webhook integrations, or migrate accounting software. A reconciliation SOP that still references manual QuickBooks entry after you deployed webhook automation creates compliance gaps during personnel transitions. Quarterly SOP review takes thirty minutes and prevents month-end surprises when the controller is on vacation.
Automating exception detection before month-end
Proactive exception detection reduces close from reactive firefighting to structured review. Configure alerts during the month for: inbound transfers to invoice wallets without matching open invoice, invoices marked paid without tx hash in export, webhook delivery failures to accounting integration, and partial payments open longer than seven days. Address exceptions when they occur — month-end becomes verification of clean data rather than discovery of three-month-old problems.
Set materiality thresholds for auto-escalation: payments above $10,000 with any status ambiguity page finance lead same day; below threshold queue for weekly review. Materiality should reflect your revenue scale — a $500 exception matters for a solo freelancer; a $5,000 exception may be routine for a mid-market agency. Document thresholds in the SOP and apply consistently so auditors see systematic controls.
Cross-functional reconciliation meetings
Month-end close improves when finance, engineering, and client success participate in a thirty-minute reconciliation standup during exception-heavy months. Finance brings unmatched rows; engineering explains indexer lag or webhook retries; client success confirms client-reported payments awaiting on-chain confirmation. This meeting prevents finance from marking invoices unpaid when clients sent funds hours before close cutoff, and prevents engineering from dismissing finance concerns as "blockchain is slow" without specific tx hash investigation.
For low-volume months, async Slack updates suffice. For first crypto year or after adding a new chain, schedule synchronous review until exception rate stabilizes below five percent of invoice count. Meeting notes become audit evidence of management oversight.
Reconciliation tooling maturity model
| Stage | Characteristics | Typical invoice volume |
|---|---|---|
| 1 — Manual | CSV export + spreadsheet + explorer | Under 50/month |
| 2 — Semi-automated | Webhooks to DB + monthly tie-out | 50–200/month |
| 3 — Integrated | Real-time GL posting + exception dashboard | 200–500/month |
| 4 — Sub-ledger | Dedicated crypto accounting tool + API sync | 500+/month |
Assess your stage honestly. Stage 1 is appropriate for startups; staying at stage 1 with 300 monthly invoices guarantees controller burnout. Budget tooling upgrades when reconciliation labor exceeds four hours monthly — ROI typically positive within one quarter for B2B agencies at scale.
Frequently asked questions
- How long should crypto reconciliation take?
- Manual: 2-4 hours for <50 invoices. Automated: under 1 hour with mature pipeline.
- Do I reconcile per wallet or per chain?
- Per chain minimum; per wallet if multiple addresses per chain beyond invoice-derived addresses.
- What confirmation count is authoritative?
- Platform paid status uses configured threshold; reconciliation uses same tx regardless of later confirmations.
- Can I skip reconciliation for stablecoins only?
- No—stablecoins still require invoice matching and GL alignment.
- What if Settlematic and explorer disagree?
- Trust on-chain explorer; escalate indexer lag to support. Do not close with unresolved discrepancy.
- Where do I start if never reconciled before?
- Begin current month; prior periods as separate project. Book demo for reconciliation workshop. See pricing for export features.