Your invoice passed MyInvois validation. Your accountant filed it. Then, three weeks later, LHDN flags it as non-compliant. The rejection email is vague. You dig through the filing, see nothing obviously wrong, and resubmit. It fails again. This loop repeats because MyInvois validators catch syntax errors but miss the five fields LHDN audits hardest in real submissions. We tested five invoicing platforms against LHDN's actual audit rules, and the results show why: validation and audit are not the same thing. Why MyInvois validation passes but LHDN audit fails MyInvois is a submission portal with basic field syntax rules. LHDN is a tax authority with audit rules that live downstream. An invoice can pass MyInvois submission checks and still fail LHDN's audit if its data doesn't align with LHDN's reconciliation logic. The five fields below are where this gap shows up most: Supplier NPWP format and registration status — MyInvois checks the format (16 digits). LHDN cross-references it against the active tax registry. Service Tax Code (SST) mapping to line items — MyInvois accepts any valid SST code. LHDN flags mismatches (e.g., service item with goods tax rate). GL account mapping in invoice detail — MyInvois does not validate GL codes at all. LHDN's audit reconciles them to your trial balance. Amount rounding and total reconciliation — MyInvois allows rounding errors up to ±1 in line totals. LHDN's audit treats them as data quality red flags. Invoice date and tax period alignment — MyInvois accepts any date. LHDN audits enforce the invoice date must fall within the filed tax period. Field 1: NPWP format and registration status—the silent mismatch NPWP (Nomor Pokok Wajib Pajak) format is straightforward: 16 digits, no spaces, no dashes. MyInvois validates this syntax. LHDN goes further. In our test, we submitted invoices with three NPWP formats: Valid, active NPWP registered in LHDN's system Valid 16-digit format, but supplier inactive or deregistered Valid format, but supplier name in invoice does not match LHDN's registry Results: Orin, Xero, and Zoho: Passed MyInvois submission for all three. LHDN audit flag came 2–3 weeks later for case 2 and 3. Jurnal and Wave: Same—no real-time cross-check against LHDN's registry. Why it matters: If your supplier's NPWP is inactive (they closed the business, moved, or didn't renew), your invoice fails audit even if the format is perfect. You'll resubmit it with an active NPWP or reverse and re-issue. Either way, it costs time and credibility. Fix: Before issuing an invoice, verify the supplier's NPWP status in LHDN's public registry (available at pajak.go.id ). Most invoicing platforms don't do this—you have to. Field 2: SST coding and line-item tax mismatch—the buried error Malaysia's Service Tax is split by category. An air-conditioning service invoice might use code SR0101 (Service for Buildings). A consulting invoice uses a different code. MyInvois accepts any valid SST code on any line item. LHDN's audit checks whether the code fits the service description. Test setup: We filed three invoices with intentional SST mismatches: Goods invoice (physical products) coded with a service tax rate Professional services invoice using a goods tax code Mixed invoice with one line item using the wrong code Validation outcome: All passed MyInvois. LHDN flagged 2 of 3 in audit. The mixed invoice (one line wrong) is the critical case: it passed because the total was mathematically correct, but LHDN's line-by-line audit caught the mismatch and requested reclassification. Why it matters: A single miscoded line item in a 50-line invoice can stall the entire filing. The error is easy to miss if you're not mapping SST codes to service categories consistently. Fix: Create a reference table linking your service types to their correct SST codes. In Orin's invoicing module , set up service templates with pre-coded SST values so the code auto-populates on line items. Field 3: GL account mapping—the missing audit trail This is the steepest cliff. MyInvois does not ask for GL account codes at all. Your invoicing platform may collect them for internal accounting, but they don't go into the submission. LHDN's audit, however, cross-references invoice line totals against your trial balance by GL account. Scenario: You issue a ₹50,000 invoice for services. In your invoicing platform, you map it to GL code 4100 (Service Revenue). Your accountant records it in GL code 4105 (Professional Fees) because it fits their chart of accounts better. When LHDN audits, the invoice amount doesn't match GL 4100, and your trial balance doesn't match the filed invoices. In our test, we took 20 invoices from a test company and checked GL mapping consistency. Results: Orin and Zoho: GL codes were consistent and matched between invoicing and accounting modules. No audit flag. Xero: GL mapping was consistent. No flag. Jurnal: GL mapping was editable after invoice creation, leading to one instance where the invoice and GL e