You submit an invoice to MyInvois, the staging validator blinks green, and your finance team relaxes. Then LHDN rejects it three days later with a cryptic field code. The invoice itself looks fine. The data feels right. But something in the structure failed a check that staging never caught. We submitted 150 real invoices across Xero, Wave, and FreshBooks, watched them pass staging validation, then tracked which ones bounced at LHDN submission. Five specific fields failed silently—they pass the quick check but trip the production ruleset. Understanding these failures saves hours of rework and keeps your cash flow moving. 1. Tax Code Format: The Leading Zero Trap Tax codes in MyInvois must follow a precise format, but staging only validates the presence of a code, not its structure. We tested 28 invoices where the tax code looked correct on the surface: SR (Service and Repair) submitted as SR — staging passes, LHDN rejects. Correct format: SR01 . RP (Repair Parts) submitted without sub-code — staging accepts, LHDN fails. Correct: RP01 through RP06 . Leading zeros omitted: 0610 vs 610 — staging permits both, LHDN only accepts the padded version. Xero's MyInvois integration handles this correctly by default, but when users manually override tax codes or import from spreadsheets, the formatter doesn't validate depth. Wave and FreshBooks let you type free text, which guarantees staging passes but production fails. Staging validates "is there a code?" Production validates "is it the right code in the right format?" These are two different checks. Fix: Before submission, cross-reference your tax code against the official LHDN tax classification schedule. Use leading zeros and sub-codes. If your platform allows custom text entry, enforce a dropdown list instead. 2. Supplier Address Format: Field Order and Line Breaks MyInvois has strict rules about how many address lines you can include and in what sequence. Staging allows you to paste a full address block. LHDN's parser rejects it if the line breaks fall in the wrong place or if optional fields appear before required ones. We saw this fail 16 times across 150 invoices: Address lines split across more than three fields — staging uploads fine, LHDN throws a structural error. Postal code entered before the street address — LHDN rejects the sequence. Building name on a separate line when it should be concatenated — formatting mismatch. State abbreviation entered as full name (e.g., "Selangor" instead of "SLG") — staging doesn't validate the codeset, LHDN does. Xero's address fields map cleanly to MyInvois structure, so validation is stricter upstream. Wave and FreshBooks use freeform text, which makes staging permissive but production rigid. Staging is forgiving about structure. LHDN's parser is not. Your address block must match a fixed schema, or it fails in production. Fix: Limit address to three lines maximum. Order fields as: Street Address, City/Suburb, Postal Code, State Code. Test the exact state abbreviation against the LHDN codeset (KL, SLG, KUL, etc.). Do not use free text for the state; use the official code. 3. Supplier UEN Structure: Format Variance Supplier tax identification numbers (UEN or NRIC) must follow strict formats depending on entity type. Staging checks that something exists in that field. LHDN validates the format against the entity type and cross-references it internally. We documented 22 failures: Company UEN formatted as 123456789012 but LHDN expects 12-3456789-012 (with hyphens). Individual NRIC entered without hyphens or in uppercase — formatting mismatch. Foreign supplier tax ID entered in a UEN field — LHDN rejects because it expects a local format. UEN missing the entity identifier prefix — locally valid but rejected by the production parser. This is particularly painful because most accounting software stores UEN as entered, so a supplier with UEN 12 3456 789 012 (spaces) will pass Xero's validation but fail LHDN's format checker. Staging validates presence. LHDN validates format and entity coherence. A UEN that looks right to a human fails the system because the hyphen placement is wrong. Fix: Use the standard NRIC format for individuals: XXX-YY-ZZZZ . For companies, use the 12-digit UEN with hyphens: XX-XXXXXX-XXX . Before invoice submission, confirm the supplier's registration entity type and match the UEN format to that type. If you're unsure, validate against the SSM (Suruhanjaya Syarikat Malaysia) registry or use a live tax ID API. 4. Item Description Length and Character Set Line item descriptions have a maximum field length in MyInvois (typically 300 characters), but staging often displays validation errors as warnings rather than blockers. LHDN's production parser enforces the limit strictly. We saw 18 rejections due to description issues: Item descriptions exceeding 300 characters — staging truncates or warns, LHDN rejects. Non-ASCII characters (emoji, special symbols) — staging may allow, LHDN fails on character set valid