How to Do a Month-End GL Review in 30 Minutes
Most Controllers spend 2-5 hours on GL review every month-end close. The time isn't wasted — but most of it is spent on the wrong things. This guide walks through a structured 30-minute process that covers the same ground more efficiently, without missing the issues that matter most.
The key insight: GL review isn't about reading every transaction. It's about knowing which signals to look for, in which order, and stopping when you've checked what matters. Here's the process that works.
Before You Start — What You Need
Pull these three things before your review starts. Having them ready in advance is what makes 30 minutes realistic.
Current month GL detail report — exported from your ERP as Excel. Every transaction, all accounts, full date range for the period you're closing.
Prior month GL detail report — same format, same columns. You'll use this for variance comparison in Step 4.
Your materiality threshold — the dollar amount above which you always investigate. Most SMBs use $2,500 or $5,000. Know your number before you start.
Time to pull these: 5 minutes. Don't start the review without all three — you'll waste time going back for them mid-review.
Scan for Duplicates — 8 Minutes
Minutes 0-8
Duplicates are the highest-severity issue in any GL and the easiest to catch with a structured approach. Do this first — before anything else.
- 1. Go to Reports → Transaction Detail by Account
- 2. Set date range to current month
- 3. Click the Amount column header to sort ascending
- 4. Scan for the same dollar amount appearing more than once from the same vendor within 7 days
- 5. Flag any matches for investigation
- 1. Open your GL export
- 2. Select all data → Insert → PivotTable
- 3. Row: Vendor/Customer · Row: Amount · Values: Count of Amount
- 4. Filter for Count > 1 — these are your duplicate candidates
- 5. Cross-reference dates — same vendor, same amount, within 7 days = investigate
What you're looking for: Same vendor + same amount + dates within 7 days. You don't need exact same day — a vendor who re-submits an invoice on a slightly different date will still match this pattern.
When you find one: Don't delete it yet. Note the row numbers, check against the original invoice or bank statement to confirm which entry is real, then void the duplicate. Voiding preserves the audit trail. Deleting removes it entirely.
Check Vendor Account Consistency — 6 Minutes
Minutes 8-14
Vendor miscoding is harder to catch than duplicates because the transaction amount looks correct — only the account is wrong. The fastest way to spot it is to compare current month vendor postings against where they usually appear.
- 1. In your GL export, filter by your top 20 highest-spend vendors
- 2. For each vendor, look at the Account column
- 3. Does it match where they always post? If yes — move on
- 4. If a vendor appears in an account you don't recognize for them — flag it
- 5. Pay special attention to anything posting to Miscellaneous Expense — this is the most common landing spot for miscoded transactions
Focus on your highest-spend vendors first. A $150 miscoding in a low-spend vendor is noise. A $3,200 AWS charge landing in Miscellaneous instead of Software Expense affects your P&L, budget vs actuals, and any department allocations that touch that account.
If you find one: Reclassify the transaction to the correct account. Then check if the same vendor has been miscoded in prior months — one miscoding is usually a mistake, recurring miscoding is a default account problem that needs fixing at the vendor level.
Flag Prepaid Candidates — 5 Minutes
Minutes 14-19
Annual renewals and multi-month contracts expensed in full are one of the most commonly missed issues during close — and one of the easiest to catch systematically if you know what to look for.
- 1. Filter your GL export for transactions above your prepaid threshold (e.g. $2,500)
- 2. Scan the Description and Vendor columns for these keywords: Annual, Subscription, Renewal, Insurance, License, Maintenance, Retainer, 12-Month, Yearly
- 3. Any transaction above threshold containing these keywords = prepaid candidate
- 4. For each candidate: does the benefit extend beyond this month? If yes — it should be a prepaid
- 5. Reclassify to Prepaid Assets and build or update your prepaid schedule
Time-saving tip: Build a keyword filter in Excel once and reuse it every month. Column I formula: =IF(OR(ISNUMBER(SEARCH("annual",D2)),ISNUMBER(SEARCH("renewal",D2)),ISNUMBER(SEARCH("insurance",D2))),"CHECK","OK") — apply to the Description column. Anything that returns CHECK above your threshold is a prepaid candidate.
Review Material Account Variances — 8 Minutes
Minutes 19-27
This is where most GL reviews either catch the important things or miss them entirely. The goal isn't to explain every account movement — it's to find the accounts that moved significantly and understand why before you sign off.
- 1. Open both your current month and prior month GL exports side by side
- 2. Sum each account for current month and prior month
- 3. Calculate the variance: Current − Prior = Variance $, Variance $ ÷ Prior = Variance %
- 4. Flag any account where: Variance $ > $5,000 OR Variance % > 25%
- 5. For each flagged account: drill into the transactions, identify the top 2-3 drivers
- 6. Ask: is this expected? If yes, note it. If no, investigate further.
Travel expense up $8,000 because the sales team attended a conference last week. You know about it. Note it. Done.
Legal fees up $6,000 and you don't know why. Drill in. Find the transaction. Confirm it belongs there before signing off.
Focus on P&L accounts first. Balance sheet accounts matter — but an unexplained P&L variance affects your income statement, your margin, and what you report to leadership. Get those right first, then check the balance sheet.
Final Checks and Sign-Off — 3 Minutes
Minutes 27-30
The last 3 minutes are for catching anything the structured review might have missed and confirming you're ready to close.
Missing department or class coding — filter for blank Department or Class fields. Any transaction above $500 missing required coding needs to be assigned before close.
Suspense and uncategorized accounts — any balance in Uncategorized Expense or Suspense accounts needs to be cleared. These should always be zero at close.
Prior period items — scan for any transactions dated in a prior period that posted this month. These need to be reviewed and either corrected or documented.
Round number journal entries — manually entered journal entries with round numbers ($5,000, $10,000) deserve a quick look. Round numbers sometimes indicate estimates that should be supported.
The Full 30-Minute Schedule
Why Most GL Reviews Take Longer Than 30 Minutes
The structured approach above works — but it assumes you know what to look for and can execute without false starts. In practice, two things cause GL reviews to run long:
Most Controllers open their GL and start scrolling. Without a defined sequence — duplicates first, then vendors, then prepaids, then variances — review time is unpredictable and things get missed.
Investigating something that turns out to be fine costs 20-30 minutes. Three false starts in a row and you've spent an hour finding nothing. The structured approach above minimizes false starts by focusing on the highest-probability issues first.
Follow the sequence consistently — same order, every month — and 30 minutes becomes reliable rather than aspirational.
The Even Faster Way
This process works — but it still requires knowing what to look for and having the discipline to follow the same steps every month. The manual version takes 30 minutes when you're thorough and 3 hours when you're not.
Cavryon automates Steps 1-4 entirely — scanning your GL export and returning a flagged workbook showing exactly what needs investigation before you start. Instead of 30 minutes of structured manual review, you get a prioritized list in under 2 minutes. You still make the judgment calls. You just don't have to hunt for what to look at.