Stop reconciling by hand.

Automated AP/AR cross-check · Bill.com + QuickBooks Online

The problem — and what changes
Today — manual
1
Export data from Bill.com
No CSV for line-item detail — manual screen copy or raw API
2
Export AR invoices from QBO
Another manual pull, different format, different system
3
Apply packaging formulas in Excel
Convert supplier units → customer units by hand, every cycle
4
Spot the discrepancy
Scroll, compare, flag — easy to miss, easy to error
5
Chase corrections
20–30 hours a month. Every month.
After — automated
1
Scripts fetch Bill.com + QBO data
Both sides checked — vendor billing (AP) and customer billing (AR). Zero manual steps.
2
Formulas applied automatically
BOM config translates supplier → customer units
3
Both sides compared
Engine calculates delta across every line
4
Alert on exceptions, confirmation when clean
Exception email with action steps, or "clear to close" when both sides reconcile.
5
Close with confidence, not guesswork
10 minutes a day instead of 30 hours a month.

How it works — four scripts in a chain
Bill.com
Vendor bills
AP line items
QBO
AR invoices
Customer billing
fetch.js Phase 1
Calls Bill.com + QBO APIs. Pulls vendor bills and AR invoices for the period. Caches raw data locally.
Output: bills.json · invoices.json
transform.js Phase 2
Reads BOM config. Converts supplier ingredient quantities into expected customer product units.
Output: comparison.json
reconcile.js Phase 2
Calculates delta between expected and actual per line. Flags anything outside tolerance.
Output: report.json
alert.js Phase 3
Silent if everything checks out. Sends a plain-text email listing discrepancies if not.
Output: email alert
Your inbox
Daily at 06:00
Exceptions flagged
Clear to close when clean
bom.json
Your packaging formulas
Supplier SKU → Customer SKU · quantities + units
↑ feeds transform.js
tolerance.json
Acceptable delta per ingredient line
e.g. ±0.5 kg flour before alert fires
↑ feeds reconcile.js

20–30h
recovered per month
Daily
automated check at 06:00
1 week
to first value — Phase 1
Delivery — three phases, value at each step
Phase 1 — FetchWeek 1
  • Connect Bill.com API
  • Connect QBO API
  • Pull vendor bills + AR invoices daily
  • Export to structured spreadsheet
~10 hrs/month saved immediately.
Manual data extraction eliminated.
Phase 2 — TransformWeek 2–3
  • Build BOM config from your formulas
  • Apply supplier → customer translation
  • Price variance checks against agreed rates
  • Generate delta comparison daily
~20 hrs/month saved.
Excel formula work eliminated.
Phase 3 — AlertWeek 4
  • Daily reconciliation run, 06:00
  • Exception alert with action steps per issue
  • Clear-to-close confirmation when both sides pass
Full 20–30 hrs/month recovered.
Nothing to do until the alert fires.

Phase 4 — The app (optional)
From scripts to product
Phases 1–3 solve your problem. Phase 4 turns the solution into something you can hand to a colleague — or sell to the next groovyipo.
When you're ready
OAuth login
Each user connects their own Bill.com and QBO accounts. No shared credentials, no JSON files to edit.
Formula config UI
The BOM editor as a live interface. Anyone on the finance team can update formulas without touching a file.
Reconciliation history
A full audit trail of every run, every discrepancy flagged, every correction made. Not just the latest alert.
Multi-tenant
The same engine, white-labelled for multiple clients. One codebase. Recurring revenue.

Want the full detail?

The Functional Spec covers every exception type the engine catches — Side 1 (vendor billing accuracy) and Side 2 (customer billing accuracy) — plus what a clean close confirmation looks like.