{"id":21607,"date":"2026-07-22T10:06:54","date_gmt":"2026-07-22T10:06:54","guid":{"rendered":"https:\/\/tenthplanet.in\/idempiere\/?p=21607"},"modified":"2026-08-20T11:46:34","modified_gmt":"2026-08-20T11:46:34","slug":"how-to-configure-revenue-recognition-in-idempiere","status":"publish","type":"post","link":"https:\/\/tenthplanet.in\/idempiere\/how-to-configure-revenue-recognition-in-idempiere\/","title":{"rendered":"How to Configure Revenue Recognition in iDempiere"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Businesses use it for ERP subscriptions, implementation projects, and service contracts, choosing either Service-Based milestones or Time-Based periods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Posting the invoice automatically creates the Revenue Recognition Plan and Runs; the Revenue Recognition Process later generates the GL Journal that recognizes the revenue.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Process Flow<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"408\" src=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-RevenueRecognition-processFlow.png\" alt=\"TenthPlanet-iDempiere-RevenueRecognition-processFlow\" class=\"wp-image-28114\" title=\"\" srcset=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-RevenueRecognition-processFlow.png 1024w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-RevenueRecognition-processFlow-300x120.png 300w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-RevenueRecognition-processFlow-768x306.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Business Rules<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A Revenue Recognition Plan is created only during invoice posting, not on save or complete.<\/li>\n\n\n\n<li>Only one Plan is created per Invoice Line and Accounting Schema.<\/li>\n\n\n\n<li>Plan Total Amount is taken from the posted accounting balance.<\/li>\n\n\n\n<li>Service-Based recognition creates one Run per configured service line.<\/li>\n\n\n\n<li>Service-Based recognized amount equals Plan Total multiplied by the service percentage.<\/li>\n\n\n\n<li>Time-Based recognition creates one Run per configured period.<\/li>\n\n\n\n<li>Time-Based recognized amount equals Plan Total divided by the configured periods.<\/li>\n\n\n\n<li>The last Run absorbs any rounding difference in both recognition methods.<\/li>\n\n\n\n<li>The Revenue Recognition Process only recognizes Runs not yet linked to a GL Journal.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Prerequisites<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Revenue Recognition definition created as Service-Based or Time-Based.<\/li>\n\n\n\n<li>Revenue Recognition assigned on the Product\u2019s Accounting tab.<\/li>\n\n\n\n<li>Accounting Schema, Unearned Revenue, and Product Revenue accounts configured.<\/li>\n\n\n\n<li>Sales Order and AR Invoice process configured for the product.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configuration Steps<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Create a Revenue Recognition Definition<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This defines the header record and selects the recognition method, Service-Based or Time-Based.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to Partner Relations \u2192 Revenue Recognition, click New, enter a Name and Description, and check Time based only if using time-based recognition.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Field<\/strong><\/td><td><strong>Sample Value<\/strong><\/td><td><strong>Purpose<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Name<\/td><td>ERP Implementation Recognition<\/td><td>Identifies a Service-Based recognition definition<\/td><\/tr><tr><td>Name<\/td><td>ERP Annual Subscription Recognition<\/td><td>Identifies a Time-Based recognition definition<\/td><\/tr><tr><td>Time based<\/td><td>Unchecked \/ Checked<\/td><td>Selects Service-Based (unchecked) or Time-Based (checked) recognition<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Configure Service-Based Recognition<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For Service-Based definitions, the Service tab defines milestones and the percentage of revenue recognized at each stage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open the Service tab, add a line for each milestone with Line No, Percent, and Description; the percentages across all lines should total 100%.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Line No<\/strong><\/td><td><strong>Percent<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><\/thead><tbody><tr><td>10<\/td><td>20.00<\/td><td>ERP Requirement Analysis<\/td><\/tr><tr><td>20<\/td><td>40.00<\/td><td>ERP Implementation &amp; Customization<\/td><\/tr><tr><td>30<\/td><td>20.00<\/td><td>User Training<\/td><\/tr><tr><td>40<\/td><td>20.00<\/td><td>Go-Live Support<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"496\" src=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition.png\" alt=\"TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition\" class=\"wp-image-21610\" title=\"\" srcset=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition.png 910w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition-300x164.png 300w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition-768x419.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: Configure Time-Based Recognition<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For Time-Based definitions, frequency and period fields determine how many equal Runs are generated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check Time based, select the Recognition frequency, enter Number of Months, and set Fixed recognition day to 0 for equal monthly distribution.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Field<\/strong><\/td><td><strong>Sample Value<\/strong><\/td><td><strong>Purpose<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Recognition frequency<\/td><td>Month<\/td><td>Interval between each Revenue Recognition Run<\/td><\/tr><tr><td>Number of Months<\/td><td>12<\/td><td>Total number of Runs to generate<\/td><\/tr><tr><td>Fixed recognition day<\/td><td>0<\/td><td>Distributes the amount equally with no proration<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"514\" src=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition1.png\" alt=\"TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition-1\" class=\"wp-image-21612\" title=\"\" srcset=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition1.png 910w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition1-300x169.png 300w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition1-768x434.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 4: Assign Revenue Recognition to the Product<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Only products with an assigned Revenue Recognition definition trigger plan creation during invoice posting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open the Product window \u2192 Accounting tab, select the Revenue Recognition definition, and save.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Field<\/strong><\/td><td><strong>Sample Value<\/strong><\/td><td><strong>Purpose<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Revenue Recognition<\/td><td>ERP Annual Subscription Recognition<\/td><td>Links the Product to the recognition schedule<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 5: Create and Post the Invoice to Generate the Plan<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Posting is the trigger point; completing the invoice alone does not create a Revenue Recognition Plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Field<\/strong><\/td><td><strong>Sample Value<\/strong><\/td><td><strong>Purpose<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Invoice Line<\/td><td>100029_07\/22\/2026_141600.00_10_120000<\/td><td>Source line the Plan is generated from<\/td><\/tr><tr><td>Total Amount<\/td><td>-120,000.00<\/td><td>Posted accounting balance carried into the Plan<\/td><\/tr><tr><td>Unearned Revenue<\/td><td>CDC-UNEARNEDREVENUE-1000004-1000048-_-_<\/td><td>Account holding revenue until it is recognized<\/td><\/tr><tr><td>Product Revenue<\/td><td>CDC-P_REVENUE-1000004-1000048-_-_<\/td><td>Account credited when revenue is recognized<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"418\" src=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition3-1.png\" alt=\"TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition-3\" class=\"wp-image-28116\" title=\"\" srcset=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition3-1.png 910w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition3-1-300x138.png 300w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition3-1-768x353.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 6: Verify the Runs and Execute the Revenue Recognition Process<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This confirms the generated Runs match the configured method, then recognizes revenue by creating the GL Journal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Recognition Date<\/strong><\/td><td><strong>Recognized Amount<\/strong><\/td><td><strong>Method<\/strong><\/td><\/tr><\/thead><tbody><tr><td>07\/22\/2026<\/td><td>-10,000.00<\/td><td>Time-Based, equal monthly amount (12 Runs of \u20b9120,000 total)<\/td><\/tr><tr><td>Service milestone runs<\/td><td>-82,000.00 \/ -164,000.00 \/ -82,000.00 \/ -82,000.00<\/td><td>Service-Based, percentage of \u20b9410,000 total per milestone<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"709\" src=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition4-1.png\" alt=\"TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition-4\" class=\"wp-image-28117\" title=\"\" srcset=\"https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition4-1.png 910w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition4-1-300x234.png 300w, https:\/\/tenthplanet.in\/idempiere\/wp-content\/uploads\/sites\/13\/2026\/07\/TenthPlanet-iDempiere-PartnerRelations-RevenueRecognition4-1-768x598.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common Issues and Resolutions<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>Issue<\/strong><\/td><td><strong>Cause<\/strong><\/td><td><strong>Resolution<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Plan not created<\/td><td>Product has no Revenue Recognition assigned<\/td><td>Assign a Revenue Recognition definition to the Product\u2019s Accounting tab<\/td><\/tr><tr><td>Plan not created<\/td><td>Invoice was completed but not posted<\/td><td>Post the invoice; posting alone triggers plan creation<\/td><\/tr><tr><td>Plan not created<\/td><td>Invoice Line has no Revenue Recognition<\/td><td>Confirm the invoice line\u2019s product carries the Revenue Recognition assignment<\/td><\/tr><tr><td>No GL Journal generated<\/td><td>Revenue Recognition Process not executed<\/td><td>Run the Revenue Recognition Process for eligible Runs<\/td><\/tr><tr><td>Revenue already recognized<\/td><td>Run already linked to a GL Journal<\/td><td>Use a new Accounting Date or verify the Run\u2019s Journal reference<\/td><\/tr><tr><td>Service percentages don\u2019t total 100%<\/td><td>Service lines misconfigured<\/td><td>Review the Service tab and adjust percentages to total 100%<\/td><\/tr><tr><td>Uneven period amounts<\/td><td>Rounding difference not aligned to the last Run<\/td><td>Expected behavior; the last Run absorbs rounding differences<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Next Steps<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Execute the Revenue Recognition Process periodically as Runs become eligible.<\/li>\n\n\n\n<li>Review generated GL Journals for Unearned Revenue and Product Revenue postings.<\/li>\n\n\n\n<li>Monitor the Revenue Recognition Run tab for upcoming recognition dates.<\/li>\n\n\n\n<li>Reuse the Revenue Recognition definition for similar retail service or subscription products.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Revenue Recognition is the iDempiere feature that defers revenue from an invoice into Unearned Revenue and releases it to Product [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,87],"tags":[],"class_list":["post-21607","post","type-post","status-publish","format-standard","hentry","category-idempiere-product","category-idempiere-partner-relations"],"_links":{"self":[{"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/posts\/21607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/comments?post=21607"}],"version-history":[{"count":3,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/posts\/21607\/revisions"}],"predecessor-version":[{"id":28118,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/posts\/21607\/revisions\/28118"}],"wp:attachment":[{"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/media?parent=21607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/categories?post=21607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tenthplanet.in\/idempiere\/wp-json\/wp\/v2\/tags?post=21607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}