Español

Accruals, Revenue Recognition, and Reserves the Auditors Won't Fight

It's 11:07pm on a Tuesday in late February. The audit senior pings you on Slack: "Hey, when you have a sec, we'd like to walk through your rev rec memo for the Acme deal — specifically the implementation fee allocation and the variable consideration on the usage tier."

You haven't looked at that memo since November. The deal closed in Q3. You wrote three paragraphs, attached the contract, and moved on to close the books. Now you have to remember why you allocated $42K of the $50K implementation fee to the subscription PO instead of treating it as a separate performance obligation. You probably had a reason. You just didn't write it down.

This is the entire game with technical accounting. Restatements don't usually come from arithmetic errors. They come from judgments that were never documented at the time and can't be reconstructed later. SEC enforcement actions consistently flag revenue recognition as the single largest cause of public-company restatements, and the AAERs read the same way every time: the registrant did not maintain sufficient contemporaneous documentation supporting the application of ASC 606 to its customer arrangements.

Translation: you can have the right number and still lose, because you can't prove it was the right number.

This playbook walks through the three areas that cause the most audit fights for a B2B SaaS controller (revenue recognition under ASC 606, period-end accruals, and reserves) and shows you the methodology, the math, and the memo skeletons that hold up under scrutiny.

The 5-Step ASC 606 Framework, Applied to a Real SaaS Contract

ASC 606 is five steps. The framework is straightforward. The judgment within each step is where the work actually lives.

Let's run a real contract through it. Acme Corp signs a 12-month subscription on July 1. Stated terms:

  • $120,000 annual subscription fee, billed upfront
  • $50,000 one-time implementation fee
  • 3 months free at the start ("ramp period")
  • Usage overage at $0.10 per API call above 1M/month
  • 25% multi-year discount applied to year 1 if they prepay year 2 (they did)

Step 1: Identify the contract. Signed MSA + signed Order Form. Both parties have approved, payment terms are stated, commercial substance exists, collection is probable (Acme is investment-grade). Done. Document the four contract criteria in the memo, attach both signed documents.

Step 2: Identify the performance obligations. This is where most controllers get sloppy. The question isn't "what did we sell." It's "what distinct goods or services did we promise that the customer can benefit from on its own or together with other readily available resources."

For Acme:

  • Subscription access (distinct, capable of providing benefit)
  • Implementation services (this is the judgment call: is implementation distinct from subscription?)

For implementation to be a separate PO, the customer has to be able to benefit from it without the subscription, OR be able to use it with another readily available service. For most B2B SaaS, implementation is so tightly integrated with the platform that it fails the distinct test. We treated it as combined with the subscription. That decision needs a paragraph in the memo explaining why, pointing to specific contract language, the integration of services, and the customer's inability to use the implementation work without our platform.

Usage overage is a separate consideration we'll handle in Step 3, not a separate PO.

Step 3: Determine the transaction price. This is where variable consideration enters.

  • Fixed consideration: $120,000 subscription + $50,000 implementation = $170,000
  • Variable consideration: usage overage. Estimate using the expected value method, based on Acme's stated usage projections in the sales process and our experience with similar customers. We estimated 200K overage calls/month average across the year = $20,000 expected overage.
  • Constraint on variable consideration: ASC 606 requires you to constrain variable consideration to the amount you're "highly probable" won't reverse. Apply a 30% haircut: $14,000 included in transaction price.
  • Multi-year discount allocation: the 25% discount is a material right (effectively a discount on year 2 the customer earned by prepaying). Allocate proportionally.

Total transaction price for year 1: $184,000 ($170K fixed + $14K constrained variable).

Step 4: Allocate the transaction price. Since we combined implementation with subscription, there's one PO. Allocate the $184,000 to it. If we'd treated implementation as separate, we'd need standalone selling prices (SSP), and you'd better have a documented SSP methodology (typically a residual approach or observable price from standalone implementation engagements).

Step 5: Recognize revenue as the PO is satisfied. Subscription access is over time, ratably. The free ramp affects timing: total transaction price of $184,000 is recognized ratably over the service period, which most companies interpret as the full 12 months including the 3 free months (because the customer has access throughout). That's $15,333/month.

The journal entries for July (the first month, which is a free ramp month):

Dr. Deferred Revenue              $15,333
    Cr. Subscription Revenue          $15,333

(Recognize ratable portion of bundled subscription + implementation,
 net of constrained variable consideration)

For the cash side at contract inception:

Dr. Cash                         $170,000
    Cr. Deferred Revenue              $170,000

Dr. Contract Asset                $14,000   (estimated overage to be billed)
    Cr. Deferred Revenue              $14,000

Every month thereafter, true up the overage estimate as actuals come in, adjust the contract asset, and reassess the constraint. If actuals come in materially different from estimate, you reforecast and recognize a catch-up.

This is the level of detail that belongs in your rev rec memo. Not "we recognized ratably per ASC 606." That sentence won't survive a single auditor question.

Accrual Estimation Discipline: Build, Never Plug

An accrual is an estimate. The auditor doesn't need it to be exact. They need it to be reasonable, supportable, and consistent.

Three rules I run my team on.

Rule 1: The 3-year lookback for recurring accruals. For any accrual that recurs (commissions, bonuses, AWS, professional fees, audit fees), build the estimate from at least three prior periods of actuals. Don't pick a number out of the air. If commissions averaged 12.4% of new ARR over the last 12 quarters with a standard deviation of 1.1 points, your accrual rate is 12.4% with a documented variance band.

Rule 2: The materiality threshold. Most auditors set materiality at roughly 5% of pre-tax income or 0.5-1% of revenue, but get it confirmed in writing during planning. Anything below the trivial threshold (typically 5% of materiality) doesn't need a formal accrual, but it does need a tracking log. Anything between trivial and materiality needs a documented estimate. Anything material needs a build-up, a sensitivity analysis, and a sign-off.

Rule 3: If you can't estimate within 10%, escalate. If your range of reasonable outcomes is wider than ±10% of the central estimate, you have an estimation problem, not a recording problem. Loop in the CFO and the audit partner before close, not after. Examples where this triggers: legal contingencies, unusual severance arrangements, first-time bonus pool calculations under a new comp plan.

The cardinal sin is plugging. If the accrual is "whatever makes income $X," you've crossed from estimation into manipulation. Build it from drivers, document the drivers, and let the number be what it is. Then if the number creates a problem, the conversation is "how do we close that gap operationally," not "how do we adjust the accrual."

A clean accrual workpaper has five sections:

  1. Description (what is being accrued and why)
  2. Methodology (how it's calculated, including driver source)
  3. Calculation (the actual math, ideally tied to source data)
  4. Comparison to prior periods (last 6-12 periods, with explanation of variances)
  5. Sign-off (preparer + reviewer with dates)

If your workpaper has those five sections, the auditor's PBC list for that account becomes a 10-minute conversation instead of a two-week back-and-forth.

Reserves That Hold Up

Three reserves matter for B2B SaaS: bad debt, sales returns, and warranty (the last two are rare but show up if you have hardware, professional services with rework provisions, or hosted services with SLA credits).

Bad debt under CECL. ASC 326 (CECL) requires expected loss, not incurred loss. You reserve for what you expect to lose, based on historical loss rates plus forward-looking adjustments, not for what's already gone bad. The standard approach is a vintage analysis or aging-bucket model.

A working bad-debt reserve calculation for a typical B2B SaaS AR aging:

Aging Bucket AR Balance Historical Loss Rate Forward Adjustment Reserve Rate Reserve $
Current (0-30) $2,400,000 0.2% +0.1% (macro) 0.3% $7,200
31-60 days $480,000 1.5% +0.2% 1.7% $8,160
61-90 days $185,000 6.0% +0.5% 6.5% $12,025
91-180 days $92,000 22.0% +2.0% 24.0% $22,080
180+ days $43,000 65.0% +5.0% 70.0% $30,100
Subtotal $3,200,000 $79,565
Customer-specific overrides $145,000
Total reserve $224,565

Customer-specific overrides are where you reserve more aggressively for known-troubled accounts (a customer in restructuring, a customer that missed three consecutive payments, a customer with a publicly disclosed solvency event). The override always ladders on top of the aging-bucket reserve, never replaces it. And the override needs a one-paragraph justification per customer in your workpaper.

Sales returns in pure SaaS are usually immaterial, but if you sell hardware, professional services with rework guarantees, or have a customer-success-driven refund culture, build a returns reserve from a 12-month rolling average of return rates by product line.

Warranty applies if you have any product with a stated warranty period (rare in pure SaaS, common in fintech, hardware-adjacent SaaS, or platforms with uptime SLA credit accruals). Build the reserve from historical warranty cost as a percent of revenue, segmented by product cohort.

Documentation Auditors Actually Accept

The phrase "sufficient appropriate audit evidence" sounds vague. It isn't. It means three things:

  1. The methodology is written down before the period closes (not reverse-engineered after a question).
  2. The math ties to source data with a clear trail.
  3. A reviewer signed off in writing with a date that precedes the close.

For revenue recognition specifically, every material new contract gets a memo. The skeleton:

REVENUE RECOGNITION MEMO — [Customer Name] — [Contract Date]

1. Contract Summary
   - Parties, signature date, term, total contract value
   - Reference to executed MSA and Order Form (attached)

2. Step 1 — Contract Identification
   - The four ASC 606 criteria, addressed individually
   - Conclusion: contract exists

3. Step 2 — Performance Obligations
   - List of all promised goods/services
   - Distinct analysis for each (capable of being distinct + distinct in context)
   - Conclusion: [N] performance obligations

4. Step 3 — Transaction Price
   - Fixed consideration
   - Variable consideration: estimation method (expected value vs most likely)
   - Constraint analysis (what's "highly probable" won't reverse)
   - Significant financing component analysis (if applicable)
   - Non-cash consideration (if applicable)

5. Step 4 — Allocation
   - SSP for each PO (with methodology source)
   - Allocation table
   - Discount allocation (proportional or specific)

6. Step 5 — Recognition Pattern
   - Over-time vs point-in-time analysis (the three over-time criteria)
   - Measure of progress (input or output method, with rationale)
   - Recognition schedule for the contract

7. Conclusions
   - Total contract revenue
   - Period-by-period recognition summary

8. Sign-off
   - Prepared by [name, date]
   - Reviewed by [Controller, date]
   - Approved by [CFO, date for material contracts]

For accruals, the methodology document lives at the chart-of-accounts level (one document per recurring accrual category like commissions, bonuses, AWS, etc.), and the period-specific calculation references back to the methodology. Update the methodology doc once per year as part of annual review; update the period calculation every period.

The judgment log is the highest-leverage document most controllers don't keep. It's a running spreadsheet: date, accounting area, judgment made, alternatives considered, basis for conclusion, person making the judgment. When the audit senior asks why you did X, you don't reconstruct. You point to row 47.

The "We Accrued For That, Right?" Panic

Forty-eight hours before the books close, run this sweep. Every time. No exceptions.

  1. Open POs and uninvoiced receipts. Pull the open PO list from procurement. For each one with goods or services received before period-end but no invoice yet, accrue based on the PO amount.
  2. Recurring vendors with no invoice. AWS, Google Cloud, Snowflake, Datadog, Salesforce, the audit firm, the law firm. If they always bill and you don't have the invoice yet, accrue using the trailing 3-month average (or the contracted amount).
  3. Legal fees. Email the GC or external counsel: "What work did your team perform this period that we haven't been billed for?" Accrue the response.
  4. Severance and one-time comp. For anyone notified of separation before period-end, accrue the full liability if the criteria for a termination benefit accrual are met (communicated, formal plan, unlikely to change).
  5. True-ups on prior-period estimates. Did the bonus pool finalize? Did the commissions reconcile? Did the AWS bill come in higher than accrued? Book the true-up.
  6. Sales tax, VAT, GST. Particularly cross-border. The accrual is straightforward; the omission is not.
  7. Contingent liabilities. Pending litigation, regulatory inquiries, customer disputes. ASC 450 governs: probable + estimable = accrue, reasonably possible = disclose, remote = neither.

Run this checklist as a literal checklist with sign-off. The cost of a forgotten accrual isn't just the audit adjustment. It's the credibility hit with your auditor and the question of "what else did we miss" that rolls into next year's audit risk assessment.

Cadence: Monthly Close, Quarterly Review, Annual Refresh

Different work happens at different frequencies, and conflating them is how teams burn out.

Monthly close (every period): Record the journal entries. Reconcile the accounts. Run the accrual sweep. Update the rev rec schedules. Roll forward the bad-debt reserve. Sign off the workpapers. Done. This is execution, not estimation.

Quarterly review (every quarter): Reassess every estimate. Refresh the 3-year lookback for each recurring accrual. Re-evaluate the bad-debt reserve assumptions (have customer behaviors shifted? has the macro environment changed? are any specific customers newly troubled?). Walk through any new contract types and confirm rev rec treatment is consistent. This is where new judgments get formalized.

Annual refresh: Update the rev rec memo template if standards have evolved. Refresh the SSP methodology with the prior year's data. Rebuild the bad-debt vintage analysis with a fresh 12 months. Refresh the materiality threshold with the auditor. Walk the auditor through any material changes in methodology before fieldwork starts, never during.

The teams that keep this cadence don't have audit fights. They have audit conversations.

The Real Lesson

Auditors don't fight numbers. They fight undocumented judgment.

If you can show, in writing, dated before the period closed, the methodology you used, the alternatives you considered, and the basis for the choice you made — you'll win. Even if the auditor would have made a different call, they're rarely going to overturn a documented, defensible judgment that's been applied consistently.

If you can't show that, no amount of arithmetic precision saves you. The number is right. The conclusion is right. But the file is empty, and "trust me, I had a reason" is not an audit standard.

Document the judgment. Win the audit. Sleep through February.

Learn More