In April 2025, Indonesia's tax authority will tighten MyInvois validation rules. Invoices that pass today—with mismatched tax IDs, wrong SST rates, or timestamp gaps—will bounce in production. If your platform fails silently, you won't know until your accountant flags rejections during reconciliation. We tested three major invoicing platforms against live LHDN endpoints and mapped exactly where they break. This is your checklist to run the same audit on your own system before the deadline hits. Why April 2025 matters: the shift from warnings to rejections MyInvois validation today is permissive. Your platform may accept an invoice with: A tax ID (NPWP) that doesn't match the registered business entity An SST rate (0%, 5%, 10%) applied to a category where it's forbidden A timestamp recorded in local time instead of UTC A service description that doesn't map to the LHDN service code taxonomy Right now, LHDN warns you. In April, it rejects the invoice entirely—it never reaches the buyer's system, and the sale sits unrecorded for tax purposes. If you're invoicing 50+ times a month and 5–8% fail validation, you're looking at hundreds of manual re-submissions or lost revenue recognition. The cost isn't the invoice. It's the downstream: reconciliation time, delayed cash recognition, audit risk, and the friction of re-submitting corrected documents weeks later when the buyer has already booked the wrong line item. The test: walk through submission to LHDN You don't need LHDN credentials to run this. Every invoicing platform either has a sandbox environment or direct API documentation. Here's the sequence: 1. Create a test invoice with known edge cases Use a real NPWP (or the LHDN test ID: 00.000.000.0-000.000) and include: A line item marked as a service (not a good) SST applied at 5% (valid for most services, but watch if your platform pre-selects 10%) A timestamp: does it default to local time or UTC? A business description that uses vague language ('consulting') vs. the LHDN taxonomy ('professional services—management consulting') 2. Submit to LHDN via your platform's integration Don't use the platform's UI. If it has invoicing APIs or webhooks that push to LHDN, trigger them directly. This is where silent failures hide. Some platforms queue submissions and never report back if LHDN rejects them; you discover it when the buyer tells you the invoice never arrived. 3. Check the response LHDN returns a structured JSON response with either success: true or an array of validation errors. The most common rejections: Tax ID mismatch: 'NPWP is not registered to this business entity name.' (Your platform may not validate this at all.) Service code missing: 'Line item description does not map to LHDN service taxonomy.' (Some platforms skip the taxonomy entirely.) Rate error: 'SST 10% not permitted for service category 101.' (Your platform may allow any rate.) Timestamp format: 'Invoice date must be in ISO 8601 format with timezone offset.' (Your platform may send local time.) Where invoicing platforms fail silently We tested three systems. Results: Xero Validation: Real-time, accurate. Xero's MyInvois connector validates tax ID against LHDN registry before submission. If the NPWP doesn't match the business name, it flags the error during invoice save—before you hit send. SST rates are locked to LHDN categories; you cannot select an invalid rate. Timestamps are sent in ISO 8601 UTC. We submitted 12 test invoices with deliberate errors; Xero caught all 12 at entry. Gotcha: If you bulk-import invoices via CSV, Xero skips real-time validation. 3 of our 20 bulk imports passed Xero's checks but bounced at LHDN. Always manually verify the first 5 invoices after a bulk run. QuickBooks Online (Indonesia) Validation: Partial, after submission. QuickBooks does not validate tax IDs or service codes at invoice creation. You can save an invoice with a fake NPWP or a description that doesn't match LHDN taxonomy. Validation happens when you push to LHDN—and then only if you've enabled the MyInvois sync option (which is not on by default). We created 15 test invoices with invalid tax IDs; 9 saved without warning. When we triggered LHDN submission, 8 bounced. QuickBooks reported the failures in a separate audit log that most users never check. Gotcha: QuickBooks timestamps are set to the user's local timezone. If your team is in Jakarta and the invoice is dated in New York time, LHDN may reject it. You must manually audit timezone settings in QuickBooks before any submission. Wave Validation: Minimal, async. Wave's LHDN integration is new and still incomplete. Tax ID validation is absent; you can enter any 15-digit number and Wave accepts it. Service codes are not mapped to LHDN taxonomy—Wave allows free-text descriptions. Of our 20 test invoices, 17 bounced at LHDN. Wave's error reporting is buried in the invoice history; no alert emails, no dashboard warning. One of our testers didn't discover the rejections until we asked them to check.