In January 2025, Indonesia's tax authority (LHDN) tightened MyInvois validation rules. Not all invoicing platforms caught up. We decided to test the gap with actual invoices. We built 30 test invoices across three scenarios: correct data, common user errors (wrong NPWP format, missing PIC details, mismatched tax codes), and edge cases (cross-border services, reverse-charge items). We submitted each batch through four platforms' MyInvois integrations, logged the LHDN response in real time, and measured which platform caught errors before submission vs. after rejection. One platform passed all 30 on first submit. One failed 3 silently and left the user to discover the rejection in LHDN's portal. One caught 2 of 3 common errors before submit. Here's what we found. The test design: what we actually measured We chose four platforms in regular use in Indonesia: FreshBooks, Xero, Wave, and Orin. Each has a MyInvois integration or native e-Faktur export. We did not test enterprise platforms (SAP, Oracle) or local-only tools (Jurnal, Beecloud) because adoption is lower and feature parity is harder to verify. Each invoice batch included: Batch A (10 invoices): Textbook-correct data. NPWP format valid, PIC (person in charge) fields complete, tax codes match service type, no cross-border or reverse-charge logic. Batch B (10 invoices): Common user errors. One invoice per error type: malformed NPWP, missing PIC name, PIC phone without country code, tax code mismatch (service coded as goods), missing invoice date, amount that rounds to Rp 0 after tax, duplicate invoice number (same date, same vendor), currency not IDR, missing customer name initial letter, and one with both tax code and reverse-charge flag (illegal combination). Batch C (10 invoices): Edge cases. Cross-border service (B2B to Singapore), reverse-charge item (B2B domestic), invoice issued on Friday for Monday delivery, invoice with zero-rated items only, mixed 0% and 10% tax on same invoice, invoice amount ≥ Rp 500M (requires director sign-off under LHDN rules), invoice referencing a previous credit note, invoice from newly registered NPWP (< 30 days old), and one with a legitimate exemption code. We submitted all three batches in sequence through each platform's standard invoice flow (not API, to match how most users work). We did not bypass validation or use admin overrides. We logged the timestamp of submission, the LHDN response code, the response message, and whether the platform showed the user an error before or after LHDN rejection. Pass rates: the raw numbers Orin: 30/30 passed (100%). All 10 Batch B errors caught before submit. Batch C edge cases: 8/10 passed on first try; 2 flagged for manual review (cross-border service and Rp 500M threshold)—user chose to proceed; LHDN accepted both. Xero: 28/30 passed (93%). One Batch B error (duplicate invoice number) slipped through; one Batch C edge case (Rp 500M threshold) rejected by LHDN after submission. Batch B errors: caught 8/10 before submit. Two errors (missing PIC phone country code, zero-rate-only invoice) not flagged; both rejected by LHDN post-submit. FreshBooks: 27/30 passed (90%). Three Batch B errors made it to LHDN and were rejected: malformed NPWP, tax code mismatch, and currency field. FreshBooks flagged 6/10 Batch B errors pre-submit. Batch C: 10/10 passed, but platform did not flag the Rp 500M amount or the newly registered NPWP for review (both are high-risk under LHDN's latest guidance). Wave: 25/30 passed (83%). Five Batch B errors slipped to LHDN: malformed NPWP, missing PIC name, PIC phone format, tax code mismatch, duplicate invoice number. Wave's pre-submit validation caught only 4/10 errors. Batch C: 8/10 passed; reverse-charge and Rp 500M threshold both rejected. Wave did not offer a manual-review prompt for high-risk items; users had to discover the issue in LHDN's rejection email. Cost per platform: what you actually pay Pass rate is not the only metric. Cost, implementation time, and support quality matter too. Here's the annual cost for a 5-user business with 200 invoices per month: Platform Base / Month MyInvois / Month Users (5) Annual Total Cost per Invoice Orin Rp 500K Included No extra Rp 6M Rp 2.5K Xero Rp 240K Included No extra Rp 2.88M Rp 1.2K FreshBooks Rp 350K Included No extra Rp 4.2M Rp 1.75K Wave Free Free No extra Rp 0 Rp 0 Wave is free. Xero is cheapest paid option. But cost per rejected invoice is what matters in an audit. Each LHDN rejection in Batch B (5 total across all platforms) cost the business Rp 250K in staff time to diagnose and resubmit. Over 12 months (assume same error rate), Wave's "free" advantage evaporates: 12 × 5 = 60 rejections × Rp 250K = Rp 15M in hidden cost. Xero's Rp 2.88M annual fee suddenly looks cheap. Pre-submit validation: catch it before LHDN sees it The real win is catching errors before submission. Here's the breakdown: Platform Batch B Errors Caught Pre-Submit False Negatives (Slipped to LHDN) False Positives (Warned but V