← All articles

Blog

How to Issue e-Faktur-Ready Invoices from Odoo in Indonesia

A practical guide to making Odoo invoices e-Faktur ready — NPWP setup, tax configuration, the data e-Faktur needs, and how the export-to-Coretax bridge works.

3 min read
  • mid
  • odoo

Odoo does not generate e-Faktur. This surprises businesses every time, and it is the detail that most often turns a smooth invoicing setup into a compliance headache. The good news: with the right configuration, Odoo can hold every piece of data e-Faktur needs and hand it over cleanly. Here is how to get there.

Understand the boundary first

Coretax (the system that replaced e-Faktur’s older desktop app) is where your faktur pajak is officially created and reported. Odoo’s job is to be the clean source of truth that feeds it. So the goal is not “make Odoo do e-Faktur” — it is “make Odoo carry complete, correct data so the bridge to Coretax is painless.” Get that framing right and the setup makes sense.

Capture NPWP on every relevant customer

A faktur pajak needs the buyer’s NPWP and identity details. In Odoo, that means your customer records must carry NPWP, the registered legal name, and address — not just a trading name and a phone number. Make these fields mandatory for PKP customers during onboarding. The most common cause of a rejected or delayed faktur is a customer record missing its NPWP.

Configure PPN correctly

Set up PPN (11%, plus 12% where it applies) as a proper output tax on your products, so every invoice line carries the right tax automatically. The tax amount, the DPP (tax base), and the rate all need to be unambiguous on the invoice. If your team is manually adding tax lines, fix that — the tax should come from product and customer configuration, not human memory.

Get product and unit data clean

e-Faktur expects consistent product naming and units. Sloppy, inconsistent product data in Odoo becomes sloppy faktur data downstream. Standardize product names and units of measure before you start issuing volume, not after.

Choose your bridge to Coretax

This is the piece that needs a decision. Common approaches:

  • Export and import. Odoo produces a structured export (commonly a CSV or the format your tooling expects) that is loaded into Coretax or an intermediary. Simple, reliable, and fine for moderate volume.
  • Localization module. An Indonesian Odoo localization module that formats tax data for the e-Faktur workflow, reducing manual steps.
  • Direct integration. For high volume, a custom integration that pushes invoice data toward Coretax via available APIs or an authorized intermediary.

Which one fits depends on your invoice volume and how much manual handling you can tolerate. A business issuing thousands of faktur a month justifies an integration; one issuing dozens does not.

Reconcile the numbers monthly

Whatever bridge you use, reconcile what Odoo recorded against what was reported in Coretax each month. The two should match to the rupiah. Catching a discrepancy in the same month is a minor fix; catching it during an audit is not.

A realistic setup order

Configure PPN and fiscal positions, enforce NPWP capture on customers, clean product and unit data, then choose and test your Coretax bridge against a sample month before going live. That test run is where you discover whether your data is actually complete.

Indonesian tax localization is the part of an Odoo invoicing rollout where local experience genuinely matters — the difference between a clean export and a frustrated finance team is mostly configuration. If you would like us to look at your tax setup and recommend the right Coretax bridge for your volume, we are happy to do that in an hour at no cost.