The P&L tells you what the business says it earned. The general ledger tells you how it got there. In a quality of earnings review, most of the adjustments that move EBITDA are found in the GL, not on the face of the financial statements.
This post covers what to look for, a workflow that works in plain Excel, and the mechanical problem that trips up most GL requests: files that are too big to export in one piece.
What the GL shows that the P&L doesn't
A P&L line called "Repairs and Maintenance: $184,312" tells you nothing. The general ledger for that account lists every transaction behind the number: date, type, number, name, memo, split account and amount. That's where the work happens.
Owner and related-party expenses
Small businesses run personal spending through the company. You'll find it in the GL by vendor name and memo: a car dealership in the auto expense account, a country club in meals, a landscaping company that services the owner's house, family members in payroll. Each one is a candidate add-back, and each needs support. The GL gives you the transaction list to ask about.
One-time and non-recurring items
Legal fees from a single lawsuit. A one-off consulting project. A large equipment repair. Moving costs. These sit inside normal accounts and get averaged into the run rate unless someone pulls them out. Sort each expense account by amount and read the top twenty lines. The one-time items tend to be obvious once you see them listed.
Reclasses and journal entries
Filter the Transaction Type column for Journal Entry. Manual journal entries are where judgment lives: accruals, reclasses between COGS and operating expenses, year-end adjustments from the outside accountant. Look for:
- Round numbers. A journal entry for exactly $25,000 to "Consulting Income" deserves a question.
- Entries posted near period end. Revenue recognized on December 31 and reversed on January 3 is a cutoff problem.
- Reclasses that change gross margin. Moving freight or labor between COGS and operating expenses can swing gross margin by points without changing net income.
Entries posted after the books were closed
If the seller sent you a P&L in March and the numbers changed by the time you pulled the GL in May, something was posted to a closed period. Compare the totals. If they moved, ask what changed and why. QuickBooks Online shows a closing date setting, but it can be overridden with a password, so don't assume a closed period stayed closed.
Customer and vendor concentration
Pivot the income accounts by Name and you have revenue by customer. Do the same on COGS and major expense accounts for vendors. A business where one customer is 40% of revenue is a different deal from one where the largest is 6%. Sales by Customer Summary gives you the revenue side directly. The GL lets you check it and see the timing.
Cutoff
Look at the last two weeks of each fiscal year and the first two weeks of the next. Invoices dated December 30 for work done in January. Bills for December services dated January 5. On an accrual file, these shift income between years. On a cash-basis file, they're expected, which is why basis matters.
A practical workflow
You don't need special software. You need the GL as a flat table.
- Get the right period. Ask for at least the same span as the P&L you're analyzing. For a QoE with three years of history, that's 36 months, ideally aligned to the trailing twelve months you're underwriting.
- Flatten it. A QuickBooks GL export is grouped by account with section headers and totals. Fill the account name down into a new column on every transaction row, then delete the header, total and beginning-balance rows. Now every row is one transaction with its account.
- Add a month column.
=EOMONTH(A2,0)on the date gives you a month-end key for pivots. - Pivot by account and month. Rows are accounts, columns are months, values are the sum of amount. This is your monthly P&L rebuilt from transactions.
- Tie it. Each account's monthly total in your pivot should match the P&L by month, and each account's ending balance should match the trial balance. If they don't, you're missing transactions. Find out why before you analyze anything.
- Filter and read. Now filter by Name, Memo and Transaction Type. Sort by amount. This is where add-backs, one-time items and odd journal entries surface.
- Log what you ask. Every question to the seller should reference a date, amount and account. "What's the $14,250 to Harbor Marine on June 12 in Office Supplies?" gets a real answer. "Tell us about office supplies" doesn't.
Why big general ledgers come back incomplete
Ask a seller for three years of GL and you'll often get one of two things: a file that stops partway through, or three separate files that don't quite line up.
The first problem comes from QuickBooks Online's limits. Its Reports API returns at most 400,000 cells in a single response. A general ledger has one row per transaction and several columns per row, so a business with a few thousand transactions a month can hit that limit on a single year. When it does, QuickBooks doesn't always return an error. It can return a partial report with the message "Unable to display more data. Please reduce the date range." Intuit's own guidance is to break the request into shorter date ranges.
Large exports from the QuickBooks screen can be slow or unwieldy too, so sellers often split them by year or quarter. That creates the second problem.
Stitching pieces back together
Joining GL pieces is where transactions get lost or doubled. The common mistakes:
| Mistake | Effect |
|---|---|
| Ranges overlap by a day ("Jan 1 – Jun 30" and "Jun 30 – Dec 31") | Every transaction on June 30 counted twice |
| Ranges leave a gap | Transactions on the missing days are gone |
| Each piece's "Beginning Balance" row kept | Opening balances counted once per piece |
| One piece on cash basis, another accrual | Totals that can't be reconciled |
If you stitch pieces yourself, check two things. First, the count: the number of transaction rows in the combined file should equal the sum of the rows in each piece. Second, the totals: each account's total activity in the combined file should equal the sum of that account's activity across the pieces. Keep only the first piece's beginning balance row for each account and drop the rest.
Then tie the result to the trial balance for the full period. If it ties, you have the whole ledger.
Where FinShare fits
FinShare pulls the general ledger directly from the business's QuickBooks Online after the owner approves, so you don't depend on the seller exporting and splitting it. It handles the size problem the way Intuit recommends.
- The GL is requested one calendar month at a time.
- If any month comes back truncated, that month is split in half and each half is requested again, down to a single day if needed.
- The pieces are stitched into one report. Before delivery, FinShare checks that every transaction from the pieces appears exactly once, that the combined totals equal the sum of the pieces' totals, and that each account's transactions still sum to its total.
- The file you download is read back and compared with QuickBooks' raw response, row by row and amount by amount. If any check fails, the report isn't delivered.
The built-in Quality of earnings package asks for 36 months of general ledger alongside 36 months of monthly P&L and balance sheets, the trial balance for the last three fiscal years, cash flow, aging detail and sales by customer. You still do the analysis. You just start it with a ledger you know is complete.