Marigold Bakery: Two Reports That Disagree and a Missing Class Column
Marigold Bakery's owner pulls a Profit and Loss by Class for the quarter and finds a $61,000 'Uncategorized' column - roughly a third of revenue. Bank feed rules were built before classes existed, wholesale invoices were keyed as plain service lines with no class, and the two monthly payroll-funding journal entries carry no class at all. Separately, the Sales by Customer Summary shows $214,600 while the P&L shows total income of $229,300, and the owner is convinced one report is broken. The bakery also wants a monthly budget it can compare to actuals by class; the bookkeeper last set reports to Cash basis for a lender and never changed it back.
1. Reconcile the $14,700 gap between Sales by Customer ($214,600) and P&L income ($229,300). List the likely causes and the tie-out procedure.
Read the worked answer
Neither report is broken - they answer different questions. Sales by Customer reports sales to named customers; P&L income reports all income accounts. Common causes of a gap like this:
- Basis mismatch. Reports set to Cash vs Accrual produce different revenue for the same period if invoices and payments fall in different periods. First step: set both reports to the same basis. The cash-basis leftover is the most likely single cause here.
- Sales tax. If any deposit was categorised straight to income, the tax portion is inside income and invisible to Sales by Customer.
- Non-customer income. Interest, shipping recovered, scrap sales, billable expense income, or a bank-feed deposit coded to income with no customer attached - all appear in P&L income, none in Sales by Customer.
- Discounts and credit memos. A contra-income discount account and refunds reduce net income but may present differently in a customer sales report depending on filters.
- Journal entries. Any JE crediting an income account has no customer name.
- Filters. Date range, 'Non-zero' toggle, and whether the report includes all customers or a subset.
Tie-out procedure.
- Set both to the same period and basis.
- Run the P&L, drill into each income account to the transaction list.
- Run Sales by Customer and, for each revenue account, compare totals; identify the accounts that are not customer-driven (interest, billable income) and the JEs posted directly to income.
- Explain every remaining difference to the cent; only then tell the owner which number to quote. The reconciliation, not the report, is the deliverable.
2. Where is the $61,000 of unclassified revenue coming from, and what controls would keep the Uncategorized column from regrowing?
Read the worked answer
Sources, in order of likely size:
- Invoices keyed without a class - QBO applies class at the line level; a service line entered manually carries no class unless selected. Header entry does not backfill later lines.
- Bank feed transactions - deposits matched or categorised from the feed inherit no class unless the rule supplies one.
- Journal entries - payroll funding and any reclass posted by the bookkeeper carry no class. These will always be unclassified unless deliberately assigned; decide and document whether payroll is allocated or left out.
- Items without a default class - an item can carry a default class, which propagates to invoice lines; if it is blank, every line is blank.
- Prior-period transactions reclassified after the class was created.
Controls.
- Set a default class on each product/service item (Design item → Design class). This kills the largest recurring source.
- Update existing bank rules so each rule stamps Class and Location as well as the category; add rules for recurring deposits.
- Make class mandatory in the review checklist before an invoice is sent, and check the P&L by Class mid-month rather than at quarter end.
- Run Transaction List by Class to sweep the Uncategorized bucket, working by account - it is far faster than transaction by transaction.
Legitimate blanks. Transfers, sales tax payments, and balance-sheet-only JEs have no meaningful class. The target is not zero uncategorized; it is 'no uncategorized income or expense lines above a documented threshold,' with the remaining blanks explained.
3. The owner wants a monthly budget compared to actuals by class. What can QuickBooks Online actually do, and what is the workaround?
Read the worked answer
What QBO does. Budgets are built at the account level for a fiscal year, with monthly/quarterly/annual intervals, and compared with actuals via Budget vs Actual and Budget vs Actual by Class style reports. Critically, you cannot key a budget by class or location - the class split on an actuals report comes from the transactions, not from the budget, so a 'Budget by Class' comparison will show the whole budget against one column unless handled carefully.
Practical workaround.
- Build the account-level budget in QBO so the standard Budget vs Actual report works for the lender and the board.
- Export the Budget vs Actual to a spreadsheet and lay the class split over it using each class's historical revenue/expense mix as the allocation basis - with the allocation percentages documented, so the owner knows it is a model, not a source of truth.
- If class-level budgeting becomes a hard requirement, the honest answer is that it belongs in a spreadsheet or a planning tool, with QBO as the actuals source; do not create shadow classes to fake a budget.
Two settings to fix first.
- Return reports to Accrual as the default if the business is managed on accrual; a lender-only cash-basis view should be a saved report, not the global default.
- Confirm the budget's period matches the report period, and note that budget comparisons ignore transactions that have no account mapping (e.g. items not linked to an income account).
- Re-forecast quarterly. A twelve-month budget entered once in January is stale by April and will be ignored - which is worse than having none.