All clearing accounts should net to ~$0 monthly. Bank feed entries hit one side, SaasAnt imports hit the other. When balanced = reconciled.
SaasAnt Import Detail — How PetroNet Data Enters QBO
Each daily PetroNet category becomes a Purchase line item with Sage GL code mapped to QBO account
Sage GL Code
QBO Account
Type
Example
40110
Car Wash Sales
Income
Daily carwash revenue ($34-$344/day)
40510-LOT-LTY
Lottery - 1
Income
Daily lottery sales ($162-$609/day)
40510-LOT-LTO
Lotto
Income
Lotto ticket sales ($193-$377/day)
50600
COS Lottery and Lotto
COGS
Lottery cost ($113-$572/day)
40109-011-015
Commissary
Income
Commissary sales ($4-$163/day)
40300-026-025
Prepaid-Communications
Income
Phone card sales ($10-$75/day)
60250
Cash Over/Short - 1
Expense
Register variances ($4-$85/day)
60120
Discounts
Expense
Customer discounts ($14-$34/day)
50700
Store Supplies
Expense
Misc supplies
All entries hit the "Holiday Sales & Deposits" clearing account as the pay-from account (Credit Card type). Python converter scripts (sales_to_saasant.py etc.) transform PetroNet's Sage CSV format into SaasAnt's expected import format.
JRD Companies (IN N OUT) — Automated POS Pipeline
PRI*SCAN POS ScanGroup register
→
PostgreSQL pscommp database
→
qbo-sync/sync_all.py SSH tunnel + dept mapping
→
QBO Journal Entries 32 dept → acct mappings
Fully automated — 7 days posted (JE #54177-54183) — no SaasAnt needed
JRD Auto (Maplewood) — Manual + SaasAnt
Mitchell1 ShopKey SQL Server ROs
→
Julie / SaasAnt Manual data entry
→
QBO JRD Auto 88K+ ROs unimported
No automation pipeline built — SaasAnt used for manual bulk operations
SaasAnt Capabilities in UseTool
Feature
How It's Used
Status
CSV Bulk Import
PetroNet CSVs converted by Python scripts, imported as Purchases against clearing accounts
Active
Bank Statement Import
PDF bank statements → AI extraction → QBO transactions (supplements bank feeds)
Partial
Receipt/Invoice Scan
AI extracts vendor, amount, tax from receipt images/PDFs
Available, unknown usage
Live Edit
Edit existing QBO transactions in bulk without export/reimport
Active
Bulk Delete
Remove bad imports for re-import with corrected data
Used when errors found
Email Automation
Files emailed to trigger auto-import (hourly check)
Available, not configured
Local Folder Monitor
Desktop client watches folder, auto-imports new files hourly
Available, not configured
Zapier Integration
External triggers push files for import
Available, not configured
Automation opportunity: SaasAnt's email automation + local folder monitor could fully automate the PetroNet import. Julie currently runs the Python converters and SaasAnt import manually. Configuring auto-import would eliminate the manual steps entirely.
Python Converter Scripts (Google Drive)Code
Script
Input
Output
Purpose
sales_to_saasant.py
Sales_Impt_*.CSV
SaasAnt purchase format
Revenue categories → QBO income accounts
ap_to_saasant.py
AP_Impt_*.CSV
SaasAnt purchase format
Vendor charges → QBO COGS/expense accounts
deposits_to_saasant.py
Dep_Impt_*.CSV
SaasAnt deposit format
Cash deposits → bank account entries
eft_to_saasant.py
AREFT*.PDF
SaasAnt purchase format
EFT settlements → clearing account offsets
pull_and_process.py
All of the above
Orchestrated output
Master script that runs all converters
Located at: Google Drive/Other computers/My Mac/Documents/SaaSant-Templates/
Also: saasant-ui/ — custom Node.js web interface (server.js + uploads/) for managing imports
2026 Issues Found
Filtered to real problems — not obvious data entry mistakes
PetroNet Sales CSVs include payment method lines (Credit Card +$393K, Debit Card +$181K, etc.) that are NOT revenue or expenses — they show HOW customers paid. SaasAnt imports them into QBO as expenses. Then EFT CC-PT batches ALSO settle the same card money. Card payments are counted TWICE, inflating expenses by $588K.
$588,452 Fake expenses
$393,165 Credit Card double-count
$181,113 Debit Card double-count
CRITICAL
AP Clearing $422K Imbalance — Two Different Transaction Sets
EFT OD Invoices ($499K, big fuel wholesale) and AP CSV ($77K, small daily vendor charges) are mapped to the same AP Clearing account, but they represent completely different transactions. The EFT fuel invoices are Circle K's wholesale cost deductions — they bypass the AP CSV entirely. Mapping both to AP Clearing creates a permanent $422K imbalance.
$422,000 Clearing imbalance
$499K EFT OD (fuel wholesale)
$77K AP CSV (vendor charges)
CRITICAL
Clearing Accounts Not Clearing — $70K+ Stuck
Multiple clearing accounts have significant balances that should be near $0. This indicates transactions are entering one side of the clearing but not being settled on the other side. This has been accumulating throughout 2026.
-$25,263 EFT Clearing
-$20,840 Sales & Deposits
$15,783 Payroll Clearing
-$8,722 Undeposited Cash (NEG!)
WARNING
Wrong-Sign Liability Accounts — Julie Never Caught This
Three liability accounts show DEBIT balances (positive numbers). Liabilities should always be credits (negative). This means either payouts exceed collections, or transactions are booked backwards. A bookkeeper reviewing the trial balance monthly would catch this immediately.
$32,786 Lottery Payable (DR)
$1,989 Sales Tax Payable (DR)
$3,138 Gift Cards (DR)
WARNING
$749K Accounts Payable — 159 Bills, Only 15 Payments
In January alone, $413K in bills were entered but only $28K was paid. Circle K bills alone total $397K. Either bills are not being paid on time, or payment transactions aren't being recorded. If real, this is a serious cash flow issue. If recording-only, Julie is entering bills without matching payments.
$749,209 Total AP balance
$413,422 Jan bills entered
$27,773 Jan payments recorded
$385,649 Unpaid gap
WARNING
Undefined Journal Entry Doc Numbers
JE #undefinedR on Jan 1 reversing $12,280 in accrued payroll has a broken document number. This suggests the JE was created programmatically with a bug, or manually entered without proper documentation. A $12K reversal should have a clear audit trail.
AUDIT
Potentially Personal Charges on Business Amex ($9,520 flagged)
Multiple charges across Jan-Feb 2026 appear to be personal expenses on the business credit card. These should either be reclassified as owner draws/distributions or reimbursed. DoorDash food delivery ($1,612), Lenscrafters ($805), personal Amazon orders, etc.
$1,612 DoorDash
$805 Lenscrafters
$908 Anthropic (AI)
$422 ChatGPT
$5,395 Indeed (hiring)
AUDIT
$8,000 Payment to Joshua Clemons (Feb 2026) — Who?
Single $8,000 payment via Tradition Capital bank to "Joshua Clemons" in February. This is a large payment to an individual that doesn't appear in the vendor list elsewhere. Could be a contractor, but needs documentation for tax purposes (1099 threshold is $600).
CRITICAL
Auto-Refresh Cron Broken — Tokens Will Keep Dying
The QBO token refresh script (~/qbo_refresh_tokens.py) was deleted but the cron job still runs every 12 hours, failing silently. Tokens expired after ~30 days without refresh. All 3 companies are disconnected from QBO API.
Payroll Analysis — DY Holdings (Jan-Feb 2026)
January Payroll
$42,235
Gross wages + taxes + processing
Gross Wages$15,904
FICA/Medicare$1,392
Payroll Expenses (6000)$19,080
Payroll Taxes$23,155
Paycor Processing$18,275
February Payroll
$39,119
Paycor bank drafts only (no JE detail)
Paycor Drafts$39,119
Journal EntriesNONE
Breakout DetailMISSING
Feb payroll has no journal entry breakout. $39K was drafted by Paycor but there's no wage/tax split in QBO. Julie needs to post the payroll JE from Paycor reports.
Payroll Red Flags
Payroll Clearing balance$15,783
Paycor Jan vs Feb jump+114%
Feb JE missingNot Posted
Accrued Payroll-$6,101
Federal Tax Liability-$10,725
Payroll Issues Detail
PAYROLL
Payroll Clearing Never Clears — $15,783 Stuck
The Payroll Clearing account should net to $0 after each pay cycle (money in from Paycor = money out to wage/tax accounts). A $15,783 balance means either payroll JEs are incomplete, or Paycor drafts aren't matching the posted entries. Julie should be reconciling this after every pay period.
PAYROLL
Paycor Cost Doubled Jan → Feb ($18K → $39K)
Paycor bank drafts jumped from $18,275 in January to $39,119 in February — a 114% increase. Possible causes: (1) double-drafted pay period, (2) quarterly tax payments included, (3) new hires, (4) back-pay corrections. Without the payroll JE breakout, there's no visibility into what this money was for.
PAYROLL
February Has ZERO Payroll Journal Entries
January has a proper payroll JE (#12.31.26 EFT) breaking out gross wages ($15,904) and FICA ($1,392). February has $39K in Paycor drafts but NO corresponding journal entry. The money left the bank but QBO has no record of what it was for. This means Feb P&L payroll numbers are wrong.
Payroll Tax Liabilities
Account
Balance
Status
Federal Taxes (941/943/944)
-$10,725
Unpaid
Federal Unemployment (940)
-$477
Unpaid
MN Income Tax
-$796
Unpaid
MN PFML SUI
-$301
Unpaid
MN Unemployment
-$315
Unpaid
Accrued Payroll
-$6,101
Not reconciled
Note: Negative balances are correct for liabilities (amounts owed). These should be cleared when tax payments are made. Verify payments are being submitted to agencies on time.
Recommendations & One-Click Fixes
Each button triggers the specific API call or script needed to resolve the issue
Priority 1: Restore QBO AccessBlocked
All analysis and fixes require live QBO API access. Tokens expired because the refresh cron script was deleted.
Priority 2: Fix Import Pipeline Bugs5 Bugs
The SaasAnt import pipeline (master-import.js + reconcile-upload.js) has 5 critical bugs creating $1M+ in bogus entries.
Priority 3: Clean DY Holdings DataData Quality
After pipeline bugs are fixed: wipe sandbox, re-import Jan-Apr with clean code, verify clearing accounts net to ~$0.
Priority 4: Post Missing Payroll JEsPayroll
February (and likely Mar-Apr) have Paycor drafts but no payroll journal entries. Pull Paycor reports, create JEs.
Priority 5: Audit Personal ChargesTax
Reclassify identified personal expenses ($9,520) as owner draws. Flag Joshua Clemons $8K for 1099.
Priority 6: Build Auto Shop PipelineNew
JRD Auto has 88K+ repair orders in Mitchell1 with no QBO sync. Build automated pipeline like IN N OUT.
Julie Performance AssessmentIssues Found
Area
Expected
Actual
Severity
Payroll JE posting
Post after each pay period
Feb completely missing, Payroll Clearing $15.8K stuck
CRITICAL
Bank reconciliation
Monthly, clearing accounts ~$0
EFT -$25K, Sales -$21K, Cash -$8.7K never cleared
CRITICAL
Trial balance review
Monthly, catch wrong signs
Lottery $32.8K, Sales Tax $2K, Gift Cards $3.1K all wrong sign
HIGH
AP management
Match payments to bills
159 bills ($413K), only 15 payments ($28K) recorded
HIGH
SaasAnt imports
Validate data before import
$588K fake expenses from unfiltered payment methods
CRITICAL
JE documentation
Clear doc numbers, notes
"undefinedR" doc number on $12K reversal
MEDIUM
Expense categorization
Separate business/personal
$9.5K personal charges uncategorized on business Amex