JRD Accounting Command Center

QBO Tokens Expired — Cached Data (Jan-Feb 2026)

QBO tokens expired. Auto-refresh cron script (~/qbo_refresh_tokens.py) was deleted. All 3 companies need re-authorization.

Data shown is from cached Jan-Feb 2026 exports. Click Re-Auth to restore live API access.

DY Holdings LLC 5 Issues
-$9,503
Jan 2026 Net Income
Revenue$141,293
Expenses$106,543
Other Expenses$44,253
AP Outstanding$749,209
Due from Circle K$597,419
JRD Companies (IN N OUT) Needs Re-Auth
--
Live data requires token refresh
POS SystemPRI*SCAN
Sync PipelineBuilt
Account Map32 departments
Last SyncMar 26
JEs Posted7 days (54177-54183)
JRD Auto (Maplewood) Needs Re-Auth
--
Live data requires token refresh
Shop SystemMitchell1
Data SourceSQL Server
QBO SyncNot Built
ROs to Import88,000+
Quick Stats (DY Holdings Jan-Feb 2026)
Total Deposits
$410,901
Tradition + Lakeview (2 months)
Total Purchases
$579,336
All accounts (2 months)
Payroll (Paycor)
$57,394
Jan $18.3K + Feb $39.1K
Amex Charges
$35,410
87 Jan + 93 Feb transactions
DY Holdings LLC — Holiday Stationstores #3851
16255 Ipava Ave, Lakeville MN 55044 | Circle K Franchise | QBO Realm: 9341454651353319
January 2026 P&L Net Loss
Fuel Sales (Petroleum)$361,806
Inside Fuel Margin$29,835
Inside Sales$113,519
Inside COS($27,250)
Car Wash$24,129
Lottery Revenue$1,510
Other Income$413
Total Income$141,293
Payroll$19,080
Controllable Expenses$50,280
Non-Controllable$14,027
Payroll Expenses (taxes)$23,155
Total Expenses$106,543
Other Expenses$44,253
Net Income($9,503)
Balance Sheet Highlights Imbalances
Assets
Tradition Capital Bank$72,429
Lakeview Bank$9,189
Inventory (all)$357,040
Loan to Shareholder$150,000
Due from Circle K$597,419
Fixed Assets (net)$1,060,647
Liabilities
Accounts Payable($749,209)
Notes Payable (all)($2,348,775)
Accrued Payroll($6,101)
Clearing Accounts (should be ~$0)
EFT Clearing($25,263)
Sales & Deposits Clearing($20,840)
Payroll Clearing$15,783
AP Clearing($880)
Undeposited Cash($8,722)
Wrong-Sign Liabilities
Lottery Payable$32,786 (DR!)
Sales Tax Payable$1,989 (DR!)
Gift Cards$3,138 (DR!)
January Transactions
Top Vendors (Bills)
VendorAmountBills
Circle K$396,717~140
Great Lakes Coca Cola$6,817~5
Lakeville Lawn Care$3,945~3
Autowash Systems$2,751~2
American Bottling$1,284~2
159 bills totaling $413,422 vs only 15 payments ($27,773) = $385,649 unpaid
Amex Spending Analysis
VendorJanFeb
Amazon$5,088$2,916
Indeed (hiring)$1,407$3,988
DoorDash$907$705
Microsoft$535$1,699
Anthropic (AI)$376$532
ChatGPT (AI)$222$200
Lenscrafters$805--
Joshua Clemons--$8,000
Total Amex$14,371$21,039
Journal Entries (Jan 2026)
DateDoc#DescriptionAmountFlag
01/31January Fuel inv adjInventory Gas → Fuel COS$16,701
01/0412.31.26 EFTPayroll Clearing → Wages/FICA$17,296Wrong year?
01/01undefinedRAccrued Payroll reversal$12,280Bad DocNumber
01/0112.31.25 EFTDue from CK → CC Fees + Clearing$12,725
01/012025-14RLottery Payable → Lakeview$236
01/032025-10AP Clearing → Sales & Deposits$1,190
VariousLotto JEs (4x)Lottery Payable → Commission$734
JRD Companies — IN N OUT Market
Maplewood MN | Minnoco Brand | QBO Realm: 9341455682723877

Live data unavailable. QBO tokens expired. Pipeline exists but needs fresh auth to pull current numbers.

Last sync: Mar 26 2026 — 7 days of POS journal entries posted (JE #54177-54183)

Data Pipeline Architecture
POS SystemPRI*SCAN (ScanGroup)
DatabasePostgreSQL (pscommp)
SSH Host192.168.68.77
Sync Script~/qbo-sync/sync_all.py
QBO BankJC - Sunrise Bank (#845)
CC ClearingJC - CC Clearing (#848)
Department → QBO Account Map (32 mappings)
POS DeptQBO Account
Fuel 1JC - Fuel Sales
Brand Pack/CartonJC - Cigarettes
TobaccoJC - Tobacco
LotteryJC - Lottery
Scratch Off TicketsJC - Scratch-Offs
Grocery/TaxableJC - Grocery
BakeryJC - Bakery
Pop/Energy/Non-CarbJC - Beverages (3 accts)
Car WashJC - Carwash Sales
Coffee (3 types)JC - Coffee
Donut HutJC - Donut Hut
Fountain PopJC - Drink Bar
JRD Auto — Maplewood Auto Service
Maplewood MN | durand-auto.com | QBO Realm: 9341455682738003

Live data unavailable. QBO tokens expired. No automated sync pipeline built yet.

Source data: Mitchell1 Shop Management (SQL Server on DURAND PC)

Current State
Shop ManagementMitchell1 / ShopKey
Data SourceSQL Server on DURAND (SSH)
Repair Orders88,000+ unimported
QBO Sync StatusNot Built
Bookkeeping MethodManual (Julie / SaasAnt)
SSH Accessmaplewood-ssh.jrdcompanies.com
SaasAnt Workflow — The Actual Data Flow
How data moves from source systems through SaasAnt into QuickBooks Online

DY Holdings (Holiday #3851) — Production Workflow

Three parallel data streams feed into QBO through different channels

STREAM 1: Bank Feeds (Automated)
Tradition Capital
Lakeview Bank
American Express
QBO Bank Feeds
Auto-import daily
Julie Categorizes
Vendor match + GL assign
Deposits, Purchases
Bill Payments
Matched to bank accounts
STREAM 2: PetroNet → SaasAnt (Julie)
PetroNet/Circle K
Weekly CSV emails
Sales, AP, Deposits
Python Converters
sales_to_saasant.py
ap_to_saasant.py
deposits_to_saasant.py
eft_to_saasant.py
SaasAnt Transactions
Bulk import (web app)
QBO Purchases
Against clearing accounts
Sage GL codes → QBO accts
STREAM 3: Manual JEs (Julie)
Paycor Reports
EFT Statements
Fuel Invoices
Lottery Settlements
Julie Manual Entry
QBO web interface
Journal Entries
Payroll, fuel adj,
lottery, clearing offsets
Clearing Account Architecture
Holiday Sales & Deposits
(10700) Credit Card type
PetroNet sales & cash deposits flow through here
EFT Holiday Clearing
(10600) Credit Card type
CC batches, OD invoices, fees settle here
Holiday AP Clearing
(10800) Credit Card type
Small vendor daily charges pass through
Payroll Clearing
Bank type
Paycor drafts ↔ wage/tax JEs
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 CodeQBO AccountTypeExample
40110Car Wash SalesIncomeDaily carwash revenue ($34-$344/day)
40510-LOT-LTYLottery - 1IncomeDaily lottery sales ($162-$609/day)
40510-LOT-LTOLottoIncomeLotto ticket sales ($193-$377/day)
50600COS Lottery and LottoCOGSLottery cost ($113-$572/day)
40109-011-015CommissaryIncomeCommissary sales ($4-$163/day)
40300-026-025Prepaid-CommunicationsIncomePhone card sales ($10-$75/day)
60250Cash Over/Short - 1ExpenseRegister variances ($4-$85/day)
60120DiscountsExpenseCustomer discounts ($14-$34/day)
50700Store SuppliesExpenseMisc 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 Use Tool
FeatureHow It's UsedStatus
CSV Bulk ImportPetroNet CSVs converted by Python scripts, imported as Purchases against clearing accountsActive
Bank Statement ImportPDF bank statements → AI extraction → QBO transactions (supplements bank feeds)Partial
Receipt/Invoice ScanAI extracts vendor, amount, tax from receipt images/PDFsAvailable, unknown usage
Live EditEdit existing QBO transactions in bulk without export/reimportActive
Bulk DeleteRemove bad imports for re-import with corrected dataUsed when errors found
Email AutomationFiles emailed to trigger auto-import (hourly check)Available, not configured
Local Folder MonitorDesktop client watches folder, auto-imports new files hourlyAvailable, not configured
Zapier IntegrationExternal triggers push files for importAvailable, 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
ScriptInputOutputPurpose
sales_to_saasant.pySales_Impt_*.CSVSaasAnt purchase formatRevenue categories → QBO income accounts
ap_to_saasant.pyAP_Impt_*.CSVSaasAnt purchase formatVendor charges → QBO COGS/expense accounts
deposits_to_saasant.pyDep_Impt_*.CSVSaasAnt deposit formatCash deposits → bank account entries
eft_to_saasant.pyAREFT*.PDFSaasAnt purchase formatEFT settlements → clearing account offsets
pull_and_process.pyAll of the aboveOrchestrated outputMaster 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
CRITICAL Double-Counted Card Payments Creating $588K Fake Expenses
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 missing Not 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
AccountBalanceStatus
Federal Taxes (941/943/944)-$10,725Unpaid
Federal Unemployment (940)-$477Unpaid
MN Income Tax-$796Unpaid
MN PFML SUI-$301Unpaid
MN Unemployment-$315Unpaid
Accrued Payroll-$6,101Not 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 Access Blocked

All analysis and fixes require live QBO API access. Tokens expired because the refresh cron script was deleted.

Priority 2: Fix Import Pipeline Bugs 5 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 Data Data 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 JEs Payroll

February (and likely Mar-Apr) have Paycor drafts but no payroll journal entries. Pull Paycor reports, create JEs.

Priority 5: Audit Personal Charges Tax

Reclassify identified personal expenses ($9,520) as owner draws. Flag Joshua Clemons $8K for 1099.

Priority 6: Build Auto Shop Pipeline New

JRD Auto has 88K+ repair orders in Mitchell1 with no QBO sync. Build automated pipeline like IN N OUT.

Julie Performance Assessment Issues Found
AreaExpectedActualSeverity
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 MEDIUM