PSAK 118 is often summarized as “a change in the income statement format.” In reality, the change goes deeper: how income and expenses are classified, which subtotals must be presented, and how management-defined performance measures are disclosed. For Odoo users, this is not a matter of adding one line to a report — it is a matter of mapping accounts, transactions, and report definitions.
1. What Changes Under PSAK 118?
PSAK 118 adopts IFRS 18, Presentation and Disclosure in Financial Statements, effective 1 January 2027. Crucially, PSAK 118 does not change how financial performance is measured — it changes how it is presented and disclosed.
Five changes matter most:
- Five standard categories in profit or loss — Operating, Investing, Financing, Income Taxes, and Discontinued Operations.
- Mandatory subtotals — especially Operating Profit and Profit before Financing and Income Taxes.
- Operating expense analysis must appear in profit or loss — by nature, function, or a mix; no longer only in the notes.
- Management-defined Performance Measures (MPMs, or UKTM — Ukuran Kinerja Tetapan Manajemen) — non-GAAP metrics used in public communication must be disclosed and reconciled.
- Impact on other standards — PSAK 207 (cash flows) and PSAK 208 (basis of preparation) also change.
Classification is performed at the reporting entity level. As a result, separate and consolidated financial statements may classify items differently — and that is acceptable as long as it is disclosed.
2. Five Categories, One Logic
| Category | Core content | Examples |
|---|---|---|
| Operating | The main business activity, plus anything not classified elsewhere | Revenue, cost of sales, operating expenses, depreciation of operating assets, receivable impairment, operating FX differences |
| Investing | Investments managed largely independently of the main business | Share of profit of associates, finance income from investments, investment gains/losses |
| Financing | Funding obtained to finance the main business and/or investing activities | Interest on borrowings, interest on trade payables, lease liabilities, interest rate effects |
| Income Taxes | Tax expense/income and related FX differences | Income tax expense |
| Discontinued Operations | Per PSAK 105 | Profit/loss from discontinued operations |
The key is the main business activity: whether the entity has a specified main activity (e.g., a bank, a financing company, an investment property company) or not. For most manufacturers and distributors, the main activity is not specified — so interest income and interest expense fall into investing and financing, not operating.
Operating Profit comprises all income and expenses classified in the operating category. Profit before Financing and Income Taxes is Operating Profit plus all income and expenses in the investing category.
3. Before and After: An Example
The following illustration uses sample figures (in thousands of Rupiah) to show how classification shifts. Total net profit does not change; how it is read does.
PSAK 201 — before
| Line item | Rp |
|---|---|
| Revenue | 1,987,959 |
| Cost of revenue | (1,638,797) |
| Gross profit | 349,162 |
| Other income | 13,896 |
| General and administrative expenses | (83,941) |
| Other expenses | (19,299) |
| Operating profit | 259,818 |
| Share of profit of joint ventures | 38,201 |
| Finance income | 31,940 |
| Impairment of production machinery | (49,766) |
| Finance costs | (32,476) |
| Net foreign exchange gain/(loss) | (3,613) |
| Profit before tax | 244,104 |
| Income tax expense | (70,803) |
| Profit for the year | 173,301 |
PSAK 118 — after
| Line item | Rp |
|---|---|
| Operating category | |
| Revenue | 1,987,959 |
| Cost of revenue | (1,638,797) |
| Gross profit | 349,162 |
| Other operating income | 13,896 |
| General and administrative expenses | (83,941) |
| Impairment of production machinery | (49,766) |
| FX gain on operating activities, net | 5,249 |
| Reversal/(impairment) of receivables | (4,273) |
| Other operating expenses | (15,026) |
| Operating profit | 215,301 |
| Investing category | |
| Share of profit of joint ventures | 38,201 |
| Finance income | 31,940 |
| FX loss on investing activities, net | (7,274) |
| Profit before financing and income taxes | 278,168 |
| Financing category | |
| Interest on borrowings | (19,973) |
| Interest other than borrowings | (12,503) |
| FX loss on financing activities, net | (1,588) |
| Income tax category | |
| Profit before tax | 244,104 |
| Income tax expense | (70,803) |
| Profit for the year | 173,301 |
Note: net profit stays at 173,301, but operating profit changes from 259,818 to 215,301. The cause is not weaker performance, but the impairment of production machinery now sitting in the operating category, plus the split of FX differences across three activities. This is what often surprises management: numbers change because of classification, not because of profit.
4. Impact on the Chart of Accounts and Bookkeeping
The most common question: must the chart of accounts be rebuilt? The answer: not necessarily. What is required is the ability to map each account to the right category. COA changes are only needed when a single account pools transactions that must be separated.
Accounts that usually need splitting
- Interest — finance income from investments (investing) vs interest from customer receivables where that is the main activity; interest on borrowings vs interest on trade payables/lease liabilities (both financing, but must be detailed in the notes).
- Foreign exchange differences — PSAK 118 requires FX to follow the category of the underlying item: operating, investing, or financing. If Odoo has a single FX account, sub-accounts or additional mapping are needed.
- Impairment — trade receivable impairment is operating; impairment of investment assets follows their category.
- Other income/expenses — an oversized “other” label is exactly what PSAK 118 targets. Split by nature.
- Discontinued operations — needs an account/segment marker so it can be presented separately.
What does not need to change
As long as existing accounts are granular enough, the change can happen at the report layer — without rebuilding the entire COA. Rebuilding the COA risks disrupting history, reconciliation, and integrations. The principle: change the COA only when the information is genuinely not captured.
Classification is an accounting decision, not an IT decision. The system provides data; accountants determine the category.
5. Preparing PSAK 118 Reports in Odoo
Odoo Accounting has a strong financial reporting engine, but it is not automatically PSAK 118 compliant. Odoo 20’s default Profit and Loss is built from account types and report line definitions, with a simple structure: Revenue → Costs of Revenue → Gross Profit → Operating Expenses → Operating Income → Other Income → Other Expenses → Net Profit. That structure does not separate investing, financing, and tax categories the way PSAK 118 requires.
Realistic technical steps
- Map account types to the five categories. Odoo offers types such as
income,income_other,expense,expense_other,expense_direct_cost, andexpense_depreciation. There is no dedicated “investing” or “financing” type, so separation happens through sub-accounts and report line definitions. - Adjust the report definition. In Odoo Enterprise, reports are built from
account.reportandaccount.report.linewith expressions based on account domains, account codes, or aggregations. Add lines and subtotals: Operating Profit, Profit before Financing and Income Taxes, Profit before Tax. - Build the expense analysis. PSAK 118 requires operating expense analysis in profit or loss. If you choose the function approach, the notes (CALK — Catatan atas Laporan Keuangan) must still disclose total depreciation, amortization, employee benefits, asset impairment, and inventory write-downs. Use account types, tags, or analytic distribution to pull these figures.
- Prepare MPMs separately. Reconciliation of MPMs (e.g., Adjusted EBITDA) to the nearest PSAK subtotal usually cannot be produced automatically by standard reports; prepare it in a spreadsheet or custom report, and keep the figures consistent.
- Review the cash flow statement. The PSAK 207 amendment makes operating profit the starting point of the indirect method and changes the classification of interest and dividends. Odoo’s cash flow report must be tested, not assumed compliant.
- Test with 2026 data. Run a dry run: compare total net profit before and after — it must match — then inspect each new subtotal. Prepare restated comparatives.
Example report line logic
Technically, Odoo line definitions can be simplified as follows:
- Revenue — domain
account_id.account_type = 'income' - Cost of revenue —
expense_direct_cost - Gross profit — aggregation Revenue − Cost of Revenue
- Operating expenses —
expense,expense_other, andexpense_depreciationthat belong to operations - Operating profit — aggregation of all operating category lines
- Investing — sub-accounts for finance income, share of profit of associates, investing FX
- Financing — sub-accounts for interest on borrowings, interest on trade payables, financing FX
- Tax — income tax expense accounts
For deeper needs (for example, automatic FX split by category or multi-entity consolidated reporting), a custom module or dedicated report may be more appropriate than stretching standard configuration.
6. Checklist Towards 1 January 2027
A commonly used implementation sequence:
- Gap analysis — profit or loss reclassification, MPM identification, aggregation/disaggregation review, and COA readiness.
- Roadmap — timeline, milestones, and report format changes.
- Upskilling — brief accounting, finance, IT, management, and the board.
- Implementation & dry run — 2026 report simulation, restated comparatives, evaluation of results.
- Go-live — official PSAK 118 reports starting with 2027 interim reporting.
A practical checklist you can use immediately:
- Map every account to one of the five categories.
- Identify the MPMs already used in press releases, investor presentations, or management commentary.
- Split still-ambiguous accounts: interest, FX differences, impairment, and “other expenses.”
- Prepare the notes (CALK): expense analysis by nature and MPM (UKTM) reconciliations.
- Test the report in Odoo with 2026 data and compare total net profit.
- Document the classification policy and the rationale for changes.
- Review with accountants/auditors before the effective date.
Closing
PSAK 118 is not merely a report-format project. It requires companies to re-explain what operating profit means, what belongs to investing and financing, and how management performance measures are calculated. Odoo can be a strong foundation — its reports are configurable — but compliance must be tested, not assumed.
The most valuable part is the preparation: mapping accounts, tidying classification, and training the team before 2027. Companies that start early will move through the comparative period far more calmly.
Want to assess your Odoo readiness for PSAK 118? Talk to the Sinergi Data Totalindo (SDT) Team.
Note: this article refers to the official PSAK 118 (Presentation and Disclosure in Financial Statements) issued by IAI/DSAK IAI and its implementation illustrations. Figures in the examples are illustrative, not actual entity data. ERP systems support implementation, but classification decisions still require accounting judgment and review by practitioners/auditors. Written by Sinergi Data Totalindo, PT.