Accounting & Finance Hard technical 1 views 1 min read

What is deferred revenue and why is it a liability?

Peer-reviewed by HireXTech Technical Panel Updated for 2025/2026 hiring Editorial standards
Practise this track
Interviewer Expectations for this Question
01
Core Competency

Assesses fundamental understanding of Accounting & Finance conventions, runtime behavior, and memory/performance considerations.

02
Evaluation Criteria

Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.

Comprehensive Model Answer Verified Solution

Deferred revenue is money a customer has paid before the company has earned it. It sits on the balance sheet as a liability because the company still owes the customer a product or service.

Under accrual accounting and standards such as IFRS 15 and ASC 606, revenue is recognised when the performance obligation is satisfied, not when cash is received. If a customer pays 12,000 for an annual subscription in January, the company records 12,000 of cash and a 12,000 liability. Each month it recognises 1,000 of revenue and reduces the liability by the same amount.

It is a liability because failing to deliver would require a refund or a substitute. Deferred revenue is also a useful signal: growing deferred revenue often indicates a healthy subscription business, which is why analysts watch billings alongside recognised revenue.

Candidate Response Strategy & Interview Tips

  1. Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
  2. Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
  3. Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
  4. Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.
Spotted an error or have an alternative solution?