One bank debit is not 40 USDC payouts: a local CSV reconciliation preflight
Description and use
A local CSV preflight tool identifies mismatches between bank funding, contractor invoices, and processor payouts, aiding in detecting errors in stablecoin distribution.
Problem
A single fiat transfer to a payment processor does not guarantee that 40 contractors receive the expected stablecoin payouts, leading to mismatches between bank funding, contractor invoices, and processor payouts.
Outcome
The tool flags exceptions such as a 20 USDC discrepancy between an invoice of 220 USDC and a processor payout of 200 USDC, and highlights that a single bank debit does not equate to successful individual payouts.
Workflow
- 1. Export bank funding CSV with fields batch_id, amount, currency, status.
- 2. Export contractor invoices CSV with fields invoice_id, payout_id, amount, currency.
- 3. Export processor payouts CSV with fields payout_id, invoice_id, batch_id, sent_amount, sent_currency, received_amount, received_currency, status.
- 4. Run the CLI: node cli.mjs --funding
<bank_csv>--invoices<invoices_csv>--payouts<payouts_csv>--format json. - 5. Review the JSON or CSV exception output for mismatches such as differing amounts or missing payout_ids.
- 6. Optionally use --strict flag in CI to enforce exit codes based on findings.
Evidence
I built a free, offline CSV preflight to make the exceptions visible without pretending to perform an audit or an on-chain verification.
The tool is free, open-source, and requires only Node.js 18+. It runs without npm packages, API keys, wallet connections, or file uploads.
node cli.mjs --funding fictional-bank-batches.csv --invoices fictional-invoices.csv --payouts fictional-processor-payouts.csv --format json
- Record date: 2026-10-20T21:41:31.915Z