QuickBooks Online Journal Entry Import Checker
Check a journal entry CSV before importing it into QuickBooks Online: unbalanced entries, rejected account names, A/R and A/P lines with no name. $12.
View QuickBooks Online Journal Entry Import Checker
Approving expense reports by eye misses the same charge in two reports, a client dinner two people both claimed, and a meal split into two charges to stay under the limit. This checks every line against your policy and writes neutral questions for the approver.

| Situation | Code | Level |
|---|---|---|
| Same person, date, merchant and amount (also across reports) | duplicate_expense | high |
| Two people claimed the same charge | claimed_by_two_people | high |
| Over the policy limit (meals per person per day using attendees, lodging per night, per-line caps) | over_limit | high |
| Several charges at one merchant on one day, each under the limit, together over it | split_charge | high |
| Mileage claimed above miles x the rate for that date (2026 IRS: 72.5 cents to Jun 30, 76 cents from Jul 1) | mileage_over_rate | high |
| No receipt over the threshold (default 75) | missing_receipt | normal |
| Restricted words (alcohol, gift card, minibar...) | restricted_item | normal |
| Group meal with no business purpose | missing_purpose | normal |
| Submitted more than 60 days after the expense | late_submission | info |
| Weekend spend (not travel) | weekend_expense | info |
| Whole-dollar meal or ride amounts | round_amount | info |
examples/ridgeline-october/ is a fictional software company's October: 19 expense lines from 4 people with 15 planted findings (toner bought once and claimed in two reports, a client dinner claimed by two employees, a dinner split into two charges, a hotel night over the cap, mileage above the IRS rate, a gift card, a bar tab, an August car rental submitted in October and more). expected.json labels what a careful approver would question; the tests assert the tool reaches exactly that in any row order, that the mileage rate follows the expense date, that your policy file overrides the defaults, and that a clean report exits 0.
Outputs in out/: findings.csv (priority order), employees.csv (lines, total and findings per person), report.md, summary.json. Exit 0 = no high findings; 1 = at least one; 2 = an input problem (the message says which flag fixes it).

./run_tests.sh
python3 -m expaudit --expenses examples/ridgeline-october/expenses.csv --name "Ridgeline Software" --out out/
python3 -m expaudit --expenses x.csv --show-policy > policy.json # edit limits, then pass --policy policy.jsonPython 3.9+ (tested on 3.10 and 3.13), no dependencies.
Zip, 16 KB, v1.0, 13 files. Use and modify it for yourself and for clients you serve; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.
Audit expense reports against your policy: duplicate and split charges, over-limit meals and hotels, missing receipts, mileage over the IRS rate. Offline. $19.
Check a journal entry CSV before importing it into QuickBooks Online: unbalanced entries, rejected account names, A/R and A/P lines with no name. $12.
View QuickBooks Online Journal Entry Import CheckerRent roll analysis in one command: occupancy, loss-to-lease, delinquency, lease expirations and the data errors that break underwriting. $29, offline.
View Rent Roll Analysis SkillCAM reconciliation for every tenant: pro-rata shares, gross-up, caps, admin fee, base-year stops, statements that foot. $29 once, offline.
View CAM Reconciliation Skill