Why Month-End Close Is Always a Fire Drill
Emily Goh ยท 2026-04-07
The same fire drill. Every month.
It's the 27th of the month. Finance team knows what's about to happen.
In three days, the books have to close. Revenue has to reconcile. Every deal in Salesforce that should have been recognized has to match up with entries in NetSuite. Cash app deposits have to match invoices in the accounting system. Customer refunds have to match adjustments in the GL.
Somewhere in that chain, something doesn't match.
Not every month. Every month.
And here's the thing every finance team says: "We close the same gaps every month. It's the same problems, the same reconciliations, the same hours of manual investigation."
That's not a people problem. That's a process problem. And it's completely preventable.
The usual suspects.
Salesforce to GL revenue mismatch.
You closed $542K in deals last month according to Salesforce. But the GL shows $487K in revenue recognized. Where's the $55K difference?
It could be:
- Deals marked as "closed-won" in Salesforce that haven't actually been invoiced yet.
- Deals in Salesforce from last month that didn't get invoiced until this month.
- Revenue recognized in the GL from deals that are still showing as "open" in Salesforce.
- Deals that got closed-lost in Salesforce but the GL still has them from a partial invoice.
- Duplicate deals in Salesforce that only got invoiced once.
So someone spends two hours pulling deal records, matching them against invoices, trying to find the gap. Half the time they find it. Half the time they give up and post an entry to reconcile the difference.
Data mismatch between systems.
Your NetSuite GL says "Customer XYZ paid $100K in March." But Salesforce says the deal close date was February 15. So it should have been recognized in February, not March. But the payment didn't actually come in until March. So which month does the revenue go into?
Now someone's asking: "Should we recognize revenue on the deal close date or the payment date?" And the answer depends on your revenue recognition policy. But your systems don't know your policy. They just know what was entered.
So you have to manually adjust.
Incomplete customer data.
You need to know which deals are from which customer for revenue recognition purposes. But your Salesforce contact record doesn't clearly link to your billing customer in NetSuite. Sometimes the company name is spelled differently. Sometimes there's a holding company. Sometimes you have two Salesforce accounts for the same customer.
So during close, someone's manually checking: "Is this really the same customer?"
Missing information in deal records.
A deal closed in mid-month. But there's no invoice attached to the record. Was it actually invoiced? Or is it waiting on the customer to sign? You don't know. So you manually follow up. "Hey sales, can you confirm this deal on your list actually closed?"
Half the time the salesperson says "Oh yeah, invoice goes out next week." But you've already tried to recognize it.
Bank reconciliation gaps.
You received a payment on March 29. Your cash app says it cleared. But NetSuite says it hit your bank account on April 1. So which month does it belong to?
This matters because month-end close means reconciling everything to the penny. A timing difference of two days creates a balance sheet problem.
Why it's the same problem every month.
Here's what's maddening: these are the same gaps, the same reconciliations, the same problems every single month.
The revenue recognition issue with Salesforce vs. the GL? You had it in March. You'll have it in May. Probably in the exact same buckets.
The customer name mismatch between Salesforce and NetSuite? That's a static problem. It's not changing because your systems still don't talk to each other.
The missing invoice on deal records? Same issue, different month.
But you rebuild the entire reconciliation from scratch every month. Because you don't have a standing process that catches the problems systematically. You just close by brute force.
What's actually happening.
You've built a month-end close process that works. It takes a lot of manual work. It requires someone to stay late. But it works.
The problem is you're treating the symptoms, not the disease.
The disease is data inconsistency between your systems.
You can spend hours reconciling, and you'll close the books. But the gaps will still be there next month. Because the underlying problem -- Salesforce and NetSuite don't agree on when revenue should be recognized -- hasn't been solved.
You've just temporarily papered over it with a journal entry.
What would actually fix it.
You need visibility into where the discrepancies are before you're trying to close.
Not during close. Before close.
A standing process that says: "Here are all the deals in Salesforce. Here are all the invoices in the GL. Here's where they don't match. Here's what needs to be investigated before month-end."
Not someone doing that manually on the 28th. A system doing it continuously.
You'd know:
- Which deals are in Salesforce but not yet invoiced.
- Which invoices are in the GL but don't have a matching deal in Salesforce.
- Where the close dates don't line up with the invoice dates.
- Which customer records don't have a clear link between systems.
- Where the amounts don't match.
And you'd know this on the 5th of the month, not the 28th.
Then you could actually fix the problems. Or at least be prepared for them when you close.
The hidden cost.
Every team I talk to budgets 16-20 hours for month-end close. That's the official estimate. One person for 2-3 days, or two people for a day and a half.
The real time investment is usually 30+ hours by the time you factor in all the interruptions, the investigation, the follow-ups with sales and accounting, the double-checks.
At $75/hour loaded cost, that's $2,250 per month. $27,000 per year. Spent on a process that should take 8 hours if your data was clean.
And that's just the direct cost. It doesn't include the risk. Every month-end close that's rushed is a month-end close where something could slip. A revenue recognition error. A duplicate invoice. A deal that shouldn't have been included.
Most companies don't get caught. But the risk is real.
Start here.
Before next month-end, do an audit.
Pull your last three months of closed-won deals in Salesforce. Pull your last three months of invoices in NetSuite. Actually line them up.
How many deals don't have a matching invoice?
How many invoices don't have a matching deal?
How many customer names are spelled differently between the systems?
That audit is your roadmap for what needs to be fixed before you can actually close cleanly.
You don't need a new system. You don't need to change your revenue recognition policy. You need to know what's actually in the data so you can fix the problems systematically instead of reactively.
Gohvio is free to try -- gohvio.io
Frequently Asked Questions
Why does Salesforce never match the GL at month-end? Because Salesforce tracks when deals are marked "closed-won," but your GL tracks when revenue is actually recognized -- and those are rarely the same moment. Deals get invoiced late, revenue gets deferred, and close dates get backdated. Until your systems share the same definition of "when a deal is real," the gap will always exist.
How much time does month-end close actually take? The budgeted time is usually 16-20 hours. The real time -- including follow-up, investigation, and corrections -- is typically 30+ hours per close. At $75/hour loaded cost, that's $27,000/year spent on a process that should take 8 hours with clean data.
Can I fix this without replacing my systems? Yes. The problem isn't the systems -- it's the data flowing between them. You don't need a new ERP or a new CRM. You need a standing process that checks Salesforce against your GL continuously, flags discrepancies before month-end, and gives your team time to investigate and fix rather than scramble.
Frequently asked questions
Why does month-end close always turn into a fire drill?
Because the data problems you ignored all month show up at once. Missing entries. Numbers that do not reconcile. The close deadline forces everyone to deal with data quality issues that built up for weeks.
How long should month-end close actually take?
For most mid-market companies, a clean close should take 3 to 5 days. If yours takes longer, the extra time is almost always spent reconciling data discrepancies, not doing actual accounting work.
What is the fastest way to speed up month-end close?
Fix your data quality upstream. If the data going into your close is already clean and consistent, the close becomes a calculation, not a detective exercise.