· 9 min read · AIStatements editorial
QuickBooks Profit and Loss by Class: How to Run It and Fix It
Free demo pack used
Your one free pack is built. Starter keeps going: every close, every statement, the AI analysis on each pack, PDF and XLSX exports, for $39 a month billed yearly.
Generate statements from your own books · sample CSV
Software, not advice · Files parse in your browser, nothing is uploaded
Try it on a sample company, or upload your own CSV
To run a QuickBooks profit and loss by class, open Reports, choose Profit and Loss by Class, set the date range, and QuickBooks returns one column per class plus a column for transactions with no class assigned. In QuickBooks Online you must first turn class tracking on under Settings, Account and Settings, Advanced, Categories. The report only reflects what was tagged, so any amount sitting in the unclassified column is a coding gap, not a QuickBooks limitation.
Class tracking is how QuickBooks answers the question your P&L alone cannot: which part of the business made the money. Locations, departments, programs, revenue lines, properties, funds. Below is how to set it up so the report is usable, how to fix the unclassified column, the limits worth knowing before you commit, and how to turn the result into a statement pack somebody outside the business can read.
How do I turn on class tracking in QuickBooks Online?
Go to Settings (the gear icon), then Account and Settings, then the Advanced tab, then the Categories section. Switch on Track classes. Two options appear underneath and both matter. "Warn me when a transaction is not assigned a class" should be on, because it is the only thing standing between you and a large unclassified column at the end of the quarter. The second option lets you assign one class per transaction or one class per line item; choose per line item if a single bill ever needs splitting across programs or departments, which for most organizations it does.
Class tracking is available on QuickBooks Online Plus and Advanced. Simple Start and Essentials do not include it, which is the most common reason the menu path above appears to be missing. In QuickBooks Desktop the equivalent lives under Edit, Preferences, Accounting, Company Preferences, with a Use class tracking for transactions checkbox.
Decide what a class represents before you create any, and write the decision down. The frequent mistake is mixing dimensions: a class list containing both "Seattle" and "Consulting" produces a report where no column means anything, because a Seattle consulting job has to pick one. Use classes for one dimension and locations for the other. QuickBooks Online gives you exactly those two, so spend them deliberately. Rental owners are the clearest case of a single, obvious dimension: one class per property, named by street address, which is the setup described in using QuickBooks for rental property.
How do I run the report?
From the left navigation choose Reports, then search for or scroll to Profit and Loss by Class under Business Overview. Set the reporting period, then use Customize to control what you actually get back. The settings worth changing are the accounting method (accrual unless you have a reason for cash), the comparison columns (prior period or prior year, so the report shows movement rather than a snapshot), and the rows and columns section where you can filter to specific classes.
Save the customized version. Click Save customization, name it something like "P&L by Program, monthly", and it appears under Custom reports so nobody rebuilds the settings each month. If a board or a client receives it on a schedule, set the email delivery on the saved report rather than remembering to send it.
Export to Excel or CSV from the export icon in the report header when you need the data elsewhere. The CSV keeps the class columns intact, which matters if the export feeds a statement pack or a functional expense grid downstream.
| Setting | Where | Recommended | Why |
|---|---|---|---|
| Track classes | Advanced, Categories | On | Enables the report at all |
| Warn on unassigned class | Advanced, Categories | On | Prevents the unclassified column growing |
| One class per row | Advanced, Categories | Per line item | Lets one bill split across programs |
| Track locations | Advanced, Categories | On if you need a second dimension | Keeps classes to a single meaning |
| Accounting method | Report Customize | Accrual | Matches how statements are prepared |
Why does my profit and loss by class have an unclassified column?
Because those transactions were posted without a class. It is the single most common complaint about this report and it is always a data problem rather than a reporting one. Click the amount in the unclassified column to drill into the transaction list, then fix each one by adding the class and saving. The report updates immediately.
Certain transaction types are repeat offenders. Journal entries frequently get posted without a class, especially automated ones. Bank feed transactions accepted in bulk carry whatever the rule assigned, and rules created before class tracking was enabled assign nothing. Opening balance equity entries and transfers often have no meaningful class at all. Payroll imported from a third-party service usually needs its own mapping, and this is often the largest unclassified amount in the file.
To stop it recurring, set bank rules to assign a class, turn on the warning setting described above, and check the unclassified column as a standing item in the close. Our QuickBooks month-end close checklist has the wider list of checks worth running before you call a period closed.
What are the limits of class tracking?
The big one: QuickBooks Online does not produce a true balance sheet by class. There is a Balance Sheet by Class report in QuickBooks Desktop, but it is unsupported in Online and even in Desktop it produces unbalanced columns unless every transaction, including transfers and payments, was tagged consistently. If you need separate balance sheets per entity or per fund, you are looking at separate company files or a system built for multi-entity accounting.
The second limit is dimension count. Classes plus locations gives you two. Organizations wanting program, funder and geography at once run out, and the workarounds (sub-classes, naming conventions such as "Program:Grant") get unwieldy fast and break reporting when someone renames one. Nonprofits hit this hardest, since function and donor restriction are both mandatory dimensions in their reporting; our page on nonprofit financial statements covers what the functional presentation actually requires.
The third is that class accuracy depends entirely on entry discipline. Every bill, expense, invoice and journal entry has to be coded by whoever enters it, and the person entering vendor bills at speed is the weakest link. Pulling line-level detail off supplier documents with automated invoice data extraction rather than retyping it keeps the coding consistent, because the split is captured from the document instead of being reconstructed from memory.
What is the difference between classes, locations and projects in QuickBooks?
Classes, locations and projects are three separate tagging systems and they answer three different questions. A class tags a transaction with a segment of the business such as a program, a department or a product line. A location tags it with a place or a division, and it is the second dimension you get so that classes can keep one consistent meaning. A project tags income and expense to a specific job or engagement for a specific customer, and it carries its own profitability report rather than appearing as a column on the P&L by class.
The practical rule is that classes and locations are for recurring segments you will report on every month, and projects are for finite pieces of work that start and end. A design studio might use classes for service lines, locations for its two offices, and projects for individual client engagements. Trying to run client jobs as classes produces a class list that grows without limit and a report with eighty columns nobody reads.
| Dimension | Answers | Report it drives | Best for | Plan |
|---|---|---|---|---|
| Class | Which segment of the business | Profit and Loss by Class | Programs, departments, product lines, funds | Plus and Advanced |
| Location | Which place or division | Profit and Loss by Location | Offices, regions, entities within one file | Plus and Advanced |
| Project | Which job for which customer | Project Profitability | Client engagements, jobs, builds | Plus and Advanced |
| Customer or sub-customer | Which client | Income by Customer Summary | Revenue concentration, receivables | All plans |
One thing to know before you commit: projects in QuickBooks Online are built on sub-customers, so a project inherits its parent customer and cannot be moved to a different one afterwards. Set the customer correctly the first time. Classes, by contrast, can be renamed and merged later, which is the main reason to start with classes when you are unsure which dimension you actually need.
How do I roll up sub-classes and compare classes side by side?
Sub-classes let you nest one level of detail under a parent, so "Grants" can contain "Federal" and "Private" while the report still shows a Grants total. Create them by ticking "Is a sub-class of" when you add the class. On the report, the Rows and Columns section of Customize has a collapse control that switches between showing every sub-class as its own column and rolling them into the parent total. Send the collapsed version to a board and keep the expanded version for the internal review.
Two limits are worth knowing before you design a deep hierarchy. QuickBooks Online supports a limited depth of nesting, so plans that need four or five levels do not survive contact with the software. And a transaction coded to a parent class rather than to one of its sub-classes stays on the parent, which means the sub-class columns will not add up to the parent total. That gap is the class-hierarchy version of the unclassified column, and it is worth checking with the same discipline.
For side-by-side comparison across time rather than across segments, filter the report to a single class and add prior period or prior year columns, then repeat per class, or export the whole grid and pivot it. If the comparison you actually want is one segment against the consolidated business, the cleanest presentation is a two-column export rather than the full grid, since a fifteen-column report makes the comparison harder to see, not easier. The same reasoning applies to running a comparative balance sheet, where the point is the movement rather than the level.
How do I turn a P&L by class into a statement pack?
The class report is a management view, not a financial statement. Nobody outside the business reads a fifteen-column grid, and it does not include a balance sheet or a cash flow statement, so it cannot stand on its own for a lender, a board or a grantmaker. What those readers want is a conventional three-statement pack, with the class detail supporting it rather than replacing it.
Export the data and let the assembly happen automatically. AIStatements takes a QuickBooks export or trial balance and produces the income statement, balance sheet and cash flow statement together, tied to each other, with a plain-English summary of what moved and why. The class dimension carries through as segment detail where the export includes it, so the pack shows both the consolidated picture and the breakdown behind it. For the wider QuickBooks reporting workflow, see QuickBooks financial statements and running a QuickBooks profit and loss by month, and for turning any of these variants into a presented statement rather than a report printout, the QuickBooks profit and loss statement page covers the conversion. Where the classes are properties, the pack wanted is a per-property rental property income statement with net operating income on its own line, which is a subtotal QuickBooks does not produce.
The practical rhythm most teams settle into: run the P&L by class during the month to steer, run the statement pack at close to report. One is a steering wheel and one is a document, and confusing them is why board meetings end up debating a spreadsheet instead of the business. Upload a QuickBooks export above to see the pack your own data produces.