How to Configure Revenue Recognition in iDempiere

Revenue Recognition is the iDempiere feature that defers revenue from an invoice into Unearned Revenue and releases it to Product Revenue on a defined schedule.

Businesses use it for ERP subscriptions, implementation projects, and service contracts, choosing either Service-Based milestones or Time-Based periods.

Posting the invoice automatically creates the Revenue Recognition Plan and Runs; the Revenue Recognition Process later generates the GL Journal that recognizes the revenue.

Process Flow

RevenueRecognition

Business Rules

  • A Revenue Recognition Plan is created only during invoice posting, not on save or complete.
  • Only one Plan is created per Invoice Line and Accounting Schema.
  • Plan Total Amount is taken from the posted accounting balance.
  • Service-Based recognition creates one Run per configured service line.
  • Service-Based recognized amount equals Plan Total multiplied by the service percentage.
  • Time-Based recognition creates one Run per configured period.
  • Time-Based recognized amount equals Plan Total divided by the configured periods.
  • The last Run absorbs any rounding difference in both recognition methods.
  • The Revenue Recognition Process only recognizes Runs not yet linked to a GL Journal.

Prerequisites

  • Revenue Recognition definition created as Service-Based or Time-Based.
  • Revenue Recognition assigned on the Product’s Accounting tab.
  • Accounting Schema, Unearned Revenue, and Product Revenue accounts configured.
  • Sales Order and AR Invoice process configured for the product.

Configuration Steps

Step 1: Create a Revenue Recognition Definition

This defines the header record and selects the recognition method, Service-Based or Time-Based.

Navigate to Partner Relations → Revenue Recognition, click New, enter a Name and Description, and check Time based only if using time-based recognition.

FieldSample ValuePurpose
NameERP Implementation RecognitionIdentifies a Service-Based recognition definition
NameERP Annual Subscription RecognitionIdentifies a Time-Based recognition definition
Time basedUnchecked / CheckedSelects Service-Based (unchecked) or Time-Based (checked) recognition

Step 2: Configure Service-Based Recognition

For Service-Based definitions, the Service tab defines milestones and the percentage of revenue recognized at each stage.

Open the Service tab, add a line for each milestone with Line No, Percent, and Description; the percentages across all lines should total 100%.

Line NoPercentDescription
1020.00ERP Requirement Analysis
2040.00ERP Implementation & Customization
3020.00User Training
4020.00Go-Live Support
TenthPlanet iDempiere PartnerRelations RevenueRecognition

Step 3: Configure Time-Based Recognition

For Time-Based definitions, frequency and period fields determine how many equal Runs are generated.

Check Time based, select the Recognition frequency, enter Number of Months, and set Fixed recognition day to 0 for equal monthly distribution.

FieldSample ValuePurpose
Recognition frequencyMonthInterval between each Revenue Recognition Run
Number of Months12Total number of Runs to generate
Fixed recognition day0Distributes the amount equally with no proration
TenthPlanet iDempiere PartnerRelations RevenueRecognition1

Step 4: Assign Revenue Recognition to the Product

Only products with an assigned Revenue Recognition definition trigger plan creation during invoice posting.

Open the Product window → Accounting tab, select the Revenue Recognition definition, and save.

FieldSample ValuePurpose
Revenue RecognitionERP Annual Subscription RecognitionLinks the Product to the recognition schedule

Step 5: Create and Post the Invoice to Generate the Plan

Posting is the trigger point; completing the invoice alone does not create a Revenue Recognition Plan.

Create the Sales Order, generate the AR Invoice, Complete it, then Post it. The Revenue Recognition Plan and its Runs are created automatically during posting.

FieldSample ValuePurpose
Invoice Line100029_07/22/2026_141600.00_10_120000Source line the Plan is generated from
Total Amount-120,000.00Posted accounting balance carried into the Plan
Unearned RevenueCDC-UNEARNEDREVENUE-1000004-1000048-_-_Account holding revenue until it is recognized
Product RevenueCDC-P_REVENUE-1000004-1000048-_-_Account credited when revenue is recognized
TenthPlanet iDempiere PartnerRelations RevenueRecognition4

Step 6: Verify the Runs and Execute the Revenue Recognition Process

This confirms the generated Runs match the configured method, then recognizes revenue by creating the GL Journal.

Review the Revenue Recognition Run tab for the expected schedule, then run the Revenue Recognition Process with an Accounting Date to generate the GL Journal for eligible Runs.

Recognition DateRecognized AmountMethod
07/22/2026-10,000.00Time-Based, equal monthly amount (12 Runs of ₹120,000 total)
Service milestone runs-82,000.00 / -164,000.00 / -82,000.00 / -82,000.00Service-Based, percentage of ₹410,000 total per milestone
TenthPlanet iDempiere PartnerRelations RevenueRecognition3

Common Issues and Resolutions

IssueCauseResolution
Plan not createdProduct has no Revenue Recognition assignedAssign a Revenue Recognition definition to the Product’s Accounting tab
Plan not createdInvoice was completed but not postedPost the invoice; posting alone triggers plan creation
Plan not createdInvoice Line has no Revenue RecognitionConfirm the invoice line’s product carries the Revenue Recognition assignment
No GL Journal generatedRevenue Recognition Process not executedRun the Revenue Recognition Process for eligible Runs
Revenue already recognizedRun already linked to a GL JournalUse a new Accounting Date or verify the Run’s Journal reference
Service percentages don’t total 100%Service lines misconfiguredReview the Service tab and adjust percentages to total 100%
Uneven period amountsRounding difference not aligned to the last RunExpected behavior; the last Run absorbs rounding differences

Next Steps

  • Execute the Revenue Recognition Process periodically as Runs become eligible.
  • Review generated GL Journals for Unearned Revenue and Product Revenue postings.
  • Monitor the Revenue Recognition Run tab for upcoming recognition dates.
  • Reuse the Revenue Recognition definition for similar retail service or subscription products.