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
TheGET /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
Mid-cycle cancellations
Mid-cycle cancellations
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.
Plan upgrades and downgrades
Plan upgrades and downgrades
When a customer changes plans mid-cycle, Recurso:
- Reverses remaining deferred revenue from the old plan
- Creates a new deferred revenue entry for the prorated new plan amount
- Adjusts the recognition schedule going forward
Refunds
Refunds
A refund posts two transfers: money out, then the unearned balance
released against the Refunds account:
Discounts and coupons
Discounts and coupons
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.
Free trials
Free trials
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 noledger.* 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):created_at.
Deferred Revenue Waterfall
Track how deferred revenue unwinds over time by querying account2100 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.