Invoice Is Not Revenue: Understanding PSAK 115 (IFRS 15) and What It Means for Your ERP Setup

When revenue can be recognized under PSAK 115, and what it means for your ERP setup.
September 24, 2026 by
Invoice Is Not Revenue: Understanding PSAK 115 (IFRS 15) and What It Means for Your ERP Setup
Panca Putra Pakpahan

As year-end closing approaches, the finance team feels confident. Every sales invoice has been posted in the ERP, and the income statement has been generated automatically. Then the auditors arrive and propose revenue adjustments: some sales should not have been recognized yet, and others should have been recorded at a different amount.

This happens more often than you might think, and the cause is rarely a data-entry mistake. The root of the problem lies in how the system is configured. An ERP records revenue when an invoice is posted, while the accounting standard, PSAK 115, recognizes revenue when the obligation to the customer has actually been fulfilled. This article explains the difference and what needs to be in place for your ERP to produce the right numbers from the start.

What is PSAK 115?

PSAK 115 Revenue from Contracts with Customers is the Indonesian accounting standard that governs when, and how much, revenue is recognized. It was previously numbered PSAK 72, took effect on 1 January 2020, and was renumbered PSAK 115 in 2024. Its content adopts IFRS 15, so companies familiar with IFRS will find the same principles.

PSAK 115 replaced several older standards at once, including PSAK 23 (Revenue), PSAK 34 (Construction Contracts) and PSAK 44 (Accounting for Real Estate Development Activities). Its core principle is simple: revenue is recognized when control of goods or services transfers to the customer, at the amount of consideration the company expects to receive.

To get there, PSAK 115 uses five steps:

  1. Identify the contract with the customer.
  2. ddddd
  3. Determine the transaction price, taking into account rebates, discounts and returns.
  4. Allocate the transaction price to each performance obligation.
  5. Recognize revenue when, or as, each performance obligation is satisfied.

Why ERP systems often fall out of step with PSAK 115

With standard settings, most ERP systems generate a revenue journal entry automatically when an invoice is validated. For simple sales, such as goods delivered and invoiced on the same day, this works fine. Problems arise when invoicing and delivery happen at different times, or when a single invoice covers several promises to the customer.

Consider a company that sells a machine for IDR 120 million, including scheduled maintenance for two years. Sold separately, the machine is priced at IDR 110 million and the maintenance at IDR 22 million, a total of IDR 132 million. In other words, the customer receives a bundle discount of IDR 12 million.

PSAK 115 requires the IDR 120 million to be allocated in proportion to each component's standalone selling price. The machine is allocated IDR 100 million and the maintenance IDR 20 million, so the discount is spread across both. The IDR 100 million is recognized as revenue when the machine is delivered. The IDR 20 million is first recorded as a contract liability, then recognized monthly over 24 months.

If the ERP records the full IDR 120 million as revenue when the invoice is posted, revenue for the current period is overstated, and the correction only surfaces during the audit.

Examples across industries

The impact of PSAK 115 varies with the business model. Here are situations we often encounter in the field.

Wholesale distribution

Volume rebates to distributors should be estimated when the sale occurs and recorded as a reduction of revenue, not as an expense when the rebate is paid. Rights of return also need to be estimated. Goods held on consignment are not revenue until they are sold to the end customer. Payments to customers, such as listing fees paid to modern retailers, generally reduce revenue as well.

Manufacturing

In a bill-and-hold arrangement, the invoice has been issued but the goods remain in the seller's warehouse at the customer's request. Revenue can only be recognized if strict conditions are met, including that the goods have been identified separately as belonging to the customer and are ready for delivery. Warranties that go beyond standard assurance, such as paid extended warranties, are treated as separate performance obligations. For custom-made products that cannot be sold to anyone else, where the company has a right to payment for work performed, revenue may even be recognized throughout production.

Construction

Construction projects generally recognize revenue over time, based on progress toward completion. The challenge lies in the gap between physical progress and billing milestones. Work completed but not yet billable is recorded as a contract asset. Billings that run ahead of progress are recorded as a contract liability.

Retail

Loyalty points and vouchers granted at purchase give customers a right to future goods. Part of the sale must be allocated to those points and deferred until they are redeemed or expire.

Education

Tuition or semester fees paid in advance are not revenue when received. They are recorded as a contract liability and recognized gradually over the teaching period.

Hospitality

Deposits for room or event bookings are recorded as a contract liability and only become revenue when the service is provided.

What to prepare in your ERP

Compliance with PSAK 115 cannot be solved with year-end adjusting entries alone. The most reliable approach is to design the system so that transactions are recorded correctly from the moment they occur. These are the areas we review in every implementation:

  1. Chart of accounts. Set up accounts for contract assets, contract liabilities, refund liabilities and, where relevant, capitalized contract costs such as sales commissions.
  2. Product and bundle master data. Store the standalone selling price of every product and service, along with bundle structures, so that price allocation is calculated consistently.
  3. Invoicing policy and cut-off. For goods, invoicing based on delivered quantities helps align invoices with actual delivery. In Odoo, this is controlled through the invoicing policy on each product. Delivery terms (Incoterms) and a report of goods delivered but not yet invoiced should also be available for period-end checks.
  4. Rebate and discount programs. Estimated rebates are accrued when the sale occurs, then adjusted once the actual outcome is known.
  5. Revenue deferral schedules. For services, maintenance contracts and subscriptions, set up a mechanism that recognizes revenue automatically each period rather than all at once when billed.
  6. Tax reconciliation. The point at which VAT (PPN) becomes payable follows tax regulations and may differ from when revenue is recognized. Prepare a reconciliation between output VAT and revenue so that any differences can be explained.

In Odoo, most of these requirements can be met through proper configuration. Others require additional modules or customization, depending on the complexity of your contracts.

What about companies that are not publicly listed?

PSAK 115 is mandatory for entities that report under the full Indonesian Financial Accounting Standards (SAK), such as listed companies and other entities with public accountability. Entities without public accountability may instead apply SAK Entitas Privat (SAK EP), effective 1 January 2025. SAK EP adopts the 2015 edition of the IFRS for SMEs Accounting Standard, so its revenue section does not yet use the five-step model.

The direction of travel, however, is clear. The third edition of the IFRS for SMEs Accounting Standard, published in 2025, introduces a simplified version of the five-step model and applies internationally from 2027. Many private companies also report under full SAK because they belong to a listed group, or because lenders and investors require it. Designing an ERP that is ready for PSAK 115 from the outset therefore makes sense for private companies too, not least because management reports become more accurate as well.

Closing thoughts

An ERP that runs smoothly does not necessarily produce financial statements that are right from an accounting standpoint. The gap often hides in settings that look trivial: when invoices are created, how bundles are structured, and which account rebates are posted to.

At Solusi Aglis Indonesia, we see ERP implementation as a business transformation project, not merely an IT project. Our team combines business process understanding, accounting expertise and Odoo technology, so that compliance with standards such as PSAK 115 is built in at the system design stage rather than fixed after the auditors arrive.

Want to know whether your ERP settings are aligned with PSAK 115? Contact us for a consultation or an Odoo demo.

Frequently asked questions

Is PSAK 115 the same as IFRS 15?

Yes. PSAK 115 adopts IFRS 15, so the principles and the five steps are the same.

What is the difference between PSAK 115 and PSAK 72?

There is no difference in content. PSAK 115 is the new number for PSAK 72, in use since 2024.

Can advance payments from customers be recognized as revenue immediately?

No. Advance payments are recorded as a contract liability and become revenue only when the goods or services are delivered.

Can Odoo support PSAK 115?

Yes, with the right configuration of the chart of accounts, invoicing policy and revenue deferral mechanisms. Complex contracts may require additional modules or customization.

This article is for general information only and is not a substitute for accounting or tax advice tailored to your company's circumstances.



Join the discussion on  LinkedIn

Invoice Is Not Revenue: Understanding PSAK 115 (IFRS 15) and What It Means for Your ERP Setup
Panca Putra Pakpahan September 24, 2026
Share this post
Our blogs

Read Next
Sunk Cost