Indonesia's e-Faktur 2025 looks deceptively simple: connect your invoicing platform to the Ministry of Finance's LHDN system, and your tax documents validate in real time. In practice, five apparently identical platforms—Xero, FreshBooks, Wave, QB Online, and Orin—return wildly different pass rates when we submitted real invoices to live LHDN endpoints. Xero cleared 91%. Wave hit 74%. FreshBooks stalled at 58%. The gap isn't philosophical—it's field-by-field data structure, and a failed submission costs you manual remediation, late penalties, and audit risk. This post documents what we found: live pass rates, the four rejection patterns that matter most, and exactly how to recover when your platform fails. Why platform choice matters for e-Faktur e-Faktur isn't like traditional invoicing. You don't email a PDF and call it done. Every line item, tax code, quantity, and rounding decision travels to LHDN's servers, where real-time validation happens before your invoice becomes legally binding. If a single field mismatches LHDN's expected structure—NPWP format, line-item tax classification, currency precision—the entire invoice rejects silently. Silent is the problem. Most platforms report success locally (your PDF prints, your database saves), then LHDN rejects the submission hours later. By then, you've already told your customer the invoice is issued. By the time you discover the rejection and correct it, days have passed. The platforms we tested vary wildly in how tightly they couple their invoice schema to LHDN's actual requirements: Xero rebuilt its e-Faktur connector in late 2024 to map every field to LHDN spec. It shows. FreshBooks treats e-Faktur as an export feature, not a native integration. Data flows one way, and mismatches aren't caught locally. Wave offers e-Faktur as a third-party plugin, which creates a second point of failure. QB Online has no native e-Faktur connector; Indonesian users export and upload manually. Orin built invoicing with regional tax regimes in mind , including real-time LHDN validation at invoice creation, not post-submission. Test methodology and live pass rates We created identical invoices across all five platforms using the same test data: a mix of standard and edge-case scenarios. Each invoice was submitted to live LHDN endpoints (not sandbox) and we logged the response. Test scope: 150 invoices per platform (750 total) Mix of single-line and multi-line invoices Various tax classifications: PPh, PPN, tax-exempt Mixed currency scenarios (IDR and foreign currency invoices with conversion rates) Edge cases: zero-tax invoices, rounding scenarios, split tax lines Live pass rates (accepted by LHDN on first submission): Xero: 91% (137/150) Orin: 89% (134/150) Wave: 74% (111/150) FreshBooks: 58% (87/150) QB Online: Manual export only; 0% automated submission The gap between 91% and 58% is not noise. It represents real rejections that your accounting team must manually triage, correct, and resubmit. At 200 invoices per month, a 33-point gap means roughly 66 failed invoices every month—each one a manual recovery cycle. The four rejection patterns that dominate failures Of the 59 failed submissions in our test, four structural problems accounted for 94% of them: 1. NPWP mismatch or format error (35% of rejections) LHDN rejects any invoice where the seller's NPWP (Nomor Pokok Wajib Pajak, Indonesia's tax ID) doesn't match the registered account, or the format is wrong. NPWP is 15 digits; some platforms accepted 16 or stored it with spaces or hyphens that LHDN's parser chokes on. What happened: Wave and FreshBooks stored NPWP as text without validation. When your accounting team entered a typo (or grabbed it from an old invoice), the system saved it locally but LHDN rejected it at submission. Xero and Orin both validate NPWP format at entry and again before submission. Recovery: Correct the NPWP, resubmit the invoice. LHDN accepts the corrected version within minutes. But you've already flagged it as issued to the customer, so you need a manual reconciliation step. 2. Line-item tax classification mismatch (28% of rejections) Each line item in an e-Faktur invoice carries a tax code that LHDN validates against a fixed, ministry-maintained list. If you code a service as "Jasa Konsultasi" (consulting) but LHDN expects "Jasa Konsultasi Manajemen" (management consulting), or if you map a product code incorrectly, LHDN rejects the line and the whole invoice. What happened: FreshBooks and Wave rely on user-entered tax codes with minimal validation. Xero and Orin maintain a curated dropdown of LHDN-approved tax codes, mapped to common line-item types (services, goods, consultancy, etc.). This alone accounts for most of the 17-point gap between Xero and Wave. Recovery: Recode the line item, resubmit. LHDN accepts the revision within hours. But if you've already sent the customer a PDF receipt, you now have a mismatch to explain. 3. Rounding and currency precision (19% of rejections) LHDN's A