Skip to main content
This page explains the concepts. To turn it on step by step, follow the revenue-recognition setup guide.

Why Revenue Is Deferred

Revenue recognition determines when earned income is recorded on your books. For SaaS businesses, you cannot recognize the full value of an annual subscription upfront — it must be spread across the service period. Recurso automates this process using its built-in double-entry ledger.

Why This Matters

  • ASC 606 / IFRS 15 compliance — Public and venture-backed companies must follow these standards.
  • Accurate financials — Revenue is matched to the period in which service is delivered.
  • Investor-ready reporting — Monthly Recurring Revenue (MRR) and Annual Recurring Revenue (ARR) reflect true earned revenue.
  • Audit readiness — Every recognition event produces a traceable journal entry.

ASC 606 Five-Step Model

Recurso implements the core ASC 606 framework automatically:
1

Identify the Contract

A subscription is created between a customer and your business. The subscription object (sub_) serves as the contract.
2

Identify Performance Obligations

Each billing period represents a distinct performance obligation — the promise to provide service for that period.
3

Determine Transaction Price

The plan price, adjusted for any coupons or discounts, determines the transaction price. This is stored on the invoice (inv_).
4

Allocate to Performance Obligations

For monthly subscriptions, the full invoice amount maps to one period. For annual subscriptions, the amount is divided equally across 12 months.
5

Recognize Revenue Over Time

Recurso creates scheduled journal entries that move amounts from Deferred Revenue (account 2100) to Recognized Revenue (account 4100) as each period completes.

How Recurso Handles Revenue Schedules

When a subscription invoice is paid, Recurso creates a revenue recognition schedule based on the subscription interval and the amount paid.

Monthly Subscription

For a monthly plan at ₹4,999/month, revenue is recognized immediately at the end of the billing period because the service period matches the billing period:

Annual Subscription

For an annual plan at ₹49,990/year (equivalent to ₹4,165.83/month), revenue is recognized in 12 equal installments:
The final month absorbs any rounding difference to ensure the schedule totals exactly match the original payment amount. In the example above, the last installment is ₹4,165.87 instead of ₹4,165.83 to account for the 4-cent remainder.

Quarterly Subscription

For a quarterly plan at ₹13,499/quarter, revenue is recognized over 3 months:

Key Accounts

Revenue recognition uses two primary ledger accounts: The flow is always the same: money enters Deferred Revenue when collected, then moves to Revenue as the obligation is fulfilled.

Revenue Recognition Report

The GET /v1/finance/revrec/report endpoint provides a consolidated revenue recognition report for a given period. It returns both recognized and deferred amounts, broken down by subscription.

Report Fields

Querying Revenue Data

Use the ledger API to retrieve recognition entries for reporting.

Deferred Revenue Balance

Monthly Recognition Entries

Handling Edge Cases

When a subscription is canceled mid-period, any remaining deferred revenue for future months is reversed:
The two transfers net the Refunds account to zero when the refund is fully covered by unearned revenue — cash goes out, the deferred liability is extinguished, and no earned revenue is touched. If no refund is issued (cancel at end of period), the remaining deferred revenue simply finishes recognizing per your refund policy.
When a customer changes plans mid-cycle, Recurso:
  1. Reverses remaining deferred revenue from the old plan
  2. Creates a new deferred revenue entry for the prorated new plan amount
  3. Adjusts the recognition schedule going forward
This ensures revenue reflects the actual service delivered at each price point.
A refund posts two transfers: money out, then the unearned balance released against the Refunds account:
Discounts reduce the transaction price before the recognition schedule is created. A ₹49,990 annual plan with a 20% discount creates a schedule based on ₹39,992 spread across 12 months. There is no separate discount posting — the invoice entry (Code 1) simply posts the smaller discounted gross, so the ledger and the schedule agree by construction.
During a free trial, no revenue is deferred or recognized. Revenue recognition begins only when the first paid invoice is generated after the trial ends.

Webhook Events

There is no ledger.* event type — recognition postings happen inside Recurso on schedule. The two real events relevant to revenue tracking:

Building Revenue Reports

Monthly Recognized Revenue

The report endpoint answers this directly — no ledger arithmetic needed (the SDKs don’t wrap it yet; call it over HTTP):
For posting-level detail, list the Recognized Revenue (4100) account’s Code-2 entries and page through them — the ledger has no date filter, so sum client-side by created_at.

Deferred Revenue Waterfall

Track how deferred revenue unwinds over time by querying account 2100 balance at the end of each month. This creates a waterfall chart showing your future revenue obligations.

Best Practices

Match Billing to Service

Choose billing intervals that align with how you deliver value. Monthly billing is simplest for recognition.

Reconcile Monthly

Verify that Deferred Revenue + Recognized Revenue equals total cash collected for each cohort of subscriptions.

Automate Reporting

Use the ledger API and revrec report endpoint to build automated revenue reports rather than manual spreadsheets.

Plan for Audits

Keep ledger entries immutable and use reference IDs to trace every recognition entry back to its source invoice and subscription.
Revenue recognition rules vary by jurisdiction and business model. While Recurso automates the mechanical process, consult your accountant or auditor to confirm the recognition policies match your specific requirements.