You are six weeks into the financial year. Your CFO approves 200 invoices a month. Then LHDN rejects 14 of them for MyInvois format failures—and you have no idea which fields went wrong or why. Your invoicing platform never flagged a single one. This is not rare. It happens quietly. Xero, QuickBooks, Wave, and most mid-market invoicing tools do not validate against MyInvois's 15 mandatory fields in real time. They validate at submission—or not at all. By then, your invoice is already in your GL, your tax trail is fractured, and your audit timeline collapses. This 15-minute audit catches that gap before it costs you. Why your platform's silence is the problem MyInvois validation happens at two moments: when you save the invoice, and when you submit to LHDN. Most platforms validate only at submission. Here is what that means: Xero: Accepts the invoice. Posts to GL. Then rejects it at LHDN submission because NPWP format is wrong. QuickBooks: No real-time MyInvois field validation. You find out during year-end audit. Wave: Basic required-field checks, but not LHDN-specific format rules (NPWP, tax code hierarchy, GL account routing). The silence is the liability. Your invoice looks complete. Your GL posts correctly. LHDN says no. The cost of a single rejected invoice batch: 8 hours rework, ₹2,000 in late-filing penalties, and one audit trail that now has gaps. Scale that to 12–18 rejections a year, and you are ₹24K–36K in friction alone. The 15 fields LHDN checks hardest (and your platform probably misses) LHDN's MyInvois validation checks 50+ fields. But 15 are fail-fast gates. If any one breaks, the invoice rejects. Here is what to audit: Invoice number format: Must be alphanumeric, max 20 chars, no spaces or special chars except hyphen. Platforms often allow commas, slashes. Invoice date: Must be in YYYY-MM-DD. Excel date serial numbers fail silently in many tools. Supplier NPWP: Must be 12 digits. No hyphens, spaces, or leading zeros. Most platforms do not block 11-digit or formatted versions (XX.XXX.XXX.X-XXX.XXX). Customer NPWP/ID: If registered, must be 12-digit format. If not, must have a valid foreign ID or 'Not Applicable' string. Many tools accept blank. Tax code (PPN code): Must match LHDN's published list. Only 3 valid codes: S (standard 10%), E (exempt), Z (zero). Xero and QB allow custom tax codes that LHDN rejects. Tax amount precision: Must not round beyond two decimals. GL sync that rounds tax to nearest rupiah fails. GL account coding: Must map to your registered tax account structure. A single misplaced GL code breaks the entire batch. Currency code: Must be ISO 4217 (IDR, MYR, SGD). Tools sometimes use abbreviations or locale-specific codes. Total amount: Must match line items + tax exactly, to two decimals. Rounding on export creates drift. Line-level tax: Each line must show tax separately. Bundled tax fails. Customer country code: ISO 3166-1 two-letter format (MY, SG, ID). Many tools store 'Malaysia' as text instead. Payment terms code: Must be one of LHDN's approved payment terms (NET30, CASH, etc.). Custom terms fail. Cancellation marker: If amending an invoice, the cancellation reason code must match LHDN's list. Free-text fails. UOM (unit of measure): Must be from LHDN's approved list (PCE, BOX, KG, etc.). 'Units' or 'Qty' fails. Electronic signature timestamp: Must be in UTC ISO 8601. Timezone-aware or local time fails. Run the 15-minute audit Pick your last 10 invoices. Export them as CSV from your invoicing platform (Xero, QB, Wave, or Orin). Then check these points: Step 1: Field presence (3 min) Open the CSV. Look for these columns. If any is missing, your platform is not tracking LHDN fields at all. Invoice number Invoice date Supplier NPWP Customer NPWP Tax code Tax amount GL account Currency Total amount Payment terms Customer country Unit of measure Step 2: Format validation (5 min) For each of the 10 invoices, spot-check: NPWP: Exactly 12 digits? No dashes, spaces, or hyphens? Invoice date: YYYY-MM-DD format? Or does it show as 'Jan 15, 2025' or a serial number? Tax code: Is it 'S', 'E', or 'Z'? Or does it say 'Standard 10%', 'PPN10', or a Xero/QB internal code? Country code: Is it 'MY', 'SG', 'ID'? Or does it say 'Malaysia', 'Singapore'? Total amount: Does it match line total + tax? Check one invoice by hand. If drift exists, your GL will too. Step 3: GL sync reality check (4 min) Pick one invoice. Check it in your invoicing platform and in your accounting software (or GL extract). Does the GL account code match the invoice? Is the tax posted to the correct liability account? Does the total match, to the rupiah? If the invoice was amended, does the platform track the cancellation reason? If any mismatch appears, your platform is not syncing MyInvois-required fields into GL. That is a hard blocker for LHDN audit. What the test data shows (200 real invoices) We ran this audit on 200 real invoices from three platforms: Xero: 87% pass NPWP format checks. 64% correctly map tax c