Blog
How to Set Up Odoo Accounting for PSAK-Compliant Books in Indonesia
A practical setup guide for Odoo Accounting in Indonesia — chart of accounts, PPN, fiscal positions, and the localization steps that keep your books PSAK-compliant.
- mid
- odoo
Odoo installs with a generic chart of accounts that fits no Indonesian business particularly well. The gap between that default and a clean, PSAK-aligned setup is where most rushed implementations go wrong. Get the foundation right and the rest of Odoo behaves; get it wrong and every report downstream quietly lies to you.
Here is the order of operations that works.
Start with the chart of accounts
Do not accept the demo accounts. Load a chart of accounts structured the way your accountant already thinks — typically a numbered hierarchy following PSAK groupings: assets (1xxxx), liabilities (2xxxx), equity (3xxxx), revenue (4xxxx), and expenses (5xxxx and up). If you have an external accountant or KAP, get their account list first and build to it. Migrating the chart later, after transactions exist, is painful.
Configure taxes properly
PPN is the one everyone gets wrong. Set up your output tax (PPN Keluaran) at 11%, plus the 12% rate if it applies to your goods, and your input tax (PPN Masukan) as a separate recoverable tax. Then create the PPh withholding categories you actually use — PPh 23, PPh 4(2), and so on — as taxes that post to the right liability accounts. The goal is that every invoice and bill records the correct tax automatically, so your monthly tax report is a byproduct of normal work rather than a separate reconstruction.
Use fiscal positions for different customer types
Indonesian businesses sell to a mix of PKP and non-PKP customers, and sometimes to tax-exempt entities. Fiscal positions let Odoo swap the correct tax automatically based on who the customer is. Set these up once and your team stops guessing which tax to apply.
Set the fiscal year and lock dates
Define your fiscal year and, just as importantly, set lock dates once a period is closed. This stops anyone from posting into a month you have already reported — a common source of “the numbers changed since last week” panic.
Plan the e-Faktur bridge
Odoo will not generate e-Faktur or sync with Coretax on its own. Decide early how that bridge works: an Indonesian localization module, an export-import routine, or a small custom integration. Whatever you choose, configure your customer tax IDs (NPWP) and product data so the export carries everything e-Faktur needs. Treating this as an afterthought is the single most common reason an Indonesian Odoo finance rollout stalls.
Reconcile from day one
Connect or import your bank feed and reconcile from the first week, not the first quarter. Odoo learns your recurring matches, and a habit of weekly reconciliation keeps month-end from becoming a multi-day event.
A realistic sequence
For most SMEs the sensible path is: chart of accounts, then taxes and fiscal positions, then opening balances migrated as of a clean cutover date, then bank setup, then a parallel run for one month against your old system. That parallel month is not optional — it is how you catch configuration mistakes while they are still cheap to fix.
None of this is exotic, but the sequencing and the Indonesian-specific pieces are where experience pays off. If you would like a second pair of eyes on your chart of accounts or your e-Faktur approach before you commit, we are glad to walk through it with you in an hour, no charge.