In 2024, Indonesia's Direktorat Jenderal Pajak (DJP) tightened e-Faktur rules: every business invoice must match the seller's NPWP (tax ID), validate the buyer's NPWP in real time against the tax authority database, and submit to LHDN within 30 days of issue. By mid-2025, non-compliance audits will cost you 2% of revenue plus interest on unpaid tax, and repeated failures trigger business registration suspension. Most invoicing software—FreshBooks, Xero, Wave, even Zoho—treat e-Faktur as a secondary feature, not a core system requirement. They'll generate a PDF marked "e-Faktur" and call it done. But the DJP doesn't care about PDFs. It wants real-time API handshakes, NPWP validation before you hit send, and proof of submission. If your software skips those steps, you're one audit away from penalties that dwarf your license fees. This guide maps the actual technical requirements, tests three major platforms against them, and shows you what non-compliance really costs. What e-Faktur Actually Requires e-Faktur is not a file format. It's a compliance protocol with three non-negotiable steps: Seller NPWP validation: The invoice must contain your 15-digit NPWP, matched against DJP records before submission. If your NPWP is inactive, dormant, or flagged for non-payment, the DJP rejects the entire invoice batch. Buyer NPWP validation: Before you send an invoice, your software must query the DJP's real-time NPWP database to confirm the buyer exists and is active. If the buyer's NPWP is fake, inactive, or doesn't match their legal entity name, submission fails. You cannot override this. (A common workaround: mark the buyer as "consumer," which skips NPWP validation but triggers audit flags if the invoice is above 5 million rupiah.) Real-time submission and receipt: Within 30 days of issue, your software must push the invoice to LHDN's e-Faktur server via API. The DJP returns a unique serial number (NSE). You must keep that receipt. If you can't produce it during audit, the invoice doesn't exist in the DJP's eyes, even if you have a PDF. This is where most software fails. They'll let you enter an NPWP and generate a file. But they won't validate it in real time, and they won't automate the submission to LHDN. Testing FreshBooks, Xero, and Orin Against Real Requirements FreshBooks FreshBooks has no native Indonesian tax module. It allows you to set a custom tax rate and add NPWP fields to your customer record, but there is no real-time NPWP validation against the DJP database and no automatic e-Faktur submission. To comply, you'd need to: Generate an invoice in FreshBooks with NPWP manually entered (unvalidated). Export it as PDF or CSV. Open the official DJP e-Faktur application (a separate desktop tool) and re-enter the invoice data by hand. Run the DJP's validation tool, which checks NPWP against the live database. Submit to LHDN and save the NSE receipt in a spreadsheet. This is not a workflow. It's a liability. You're storing two invoice records (one in FreshBooks, one in the DJP system), creating reconciliation risk, and manually validating compliance. A 10-invoice month is tedious. A 200-invoice month is a breakdown waiting to happen. Cost of workaround: 3–4 hours per week of manual NPWP validation and DJP record-keeping. Audit risk: high (two separate invoice records, no proof of real-time validation). Xero Xero has a regional module for Indonesia that includes NPWP fields and e-Faktur formatting. It does not, however, include real-time NPWP validation or automatic LHDN submission. Here's the gap: Xero lets you store the buyer's NPWP in their contact record. When you create an invoice, Xero pulls the NPWP and includes it on the PDF. Xero does not query the DJP database to verify that NPWP is real or active. Xero does not submit to LHDN. You must use the official DJP e-Faktur tool, export from Xero, and re-enter or upload the data into the DJP system. Xero is closer than FreshBooks—at least the NPWP field is persistent across invoices—but it still leaves the compliance handoff to you. Cost of workaround: 2–3 hours per week of DJP submission and NSE tracking. Audit risk: medium (centralized record in Xero, but no proof of real-time DJP validation or automated submission). Orin Orin's invoicing module includes real-time NPWP validation against the DJP API and can be configured to auto-submit to LHDN (via integration with the DJP e-Faktur service or a certified tax service provider). Here's the flow: You enter the buyer's NPWP when creating the invoice. Orin queries the DJP database in real time. If the NPWP is invalid or inactive, the system flags it before you send. Once you confirm, Orin's invoicing submits to LHDN automatically and logs the NSE receipt in the invoice record. You have a single, auditable invoice record with proof of DJP submission built in. This is native compliance, not a workaround. Cost of workaround: 0 hours per week on DJP compliance. Audit risk: low (single invoice record, real-time validat