You've tested your invoices in MyInvois staging. They validate. You submit to LHDN. Three days later, they bounce with a vague error code and no clear reason why. You re-enter the same fields, resubmit, and the cycle repeats. This isn't a bug. It's five specific tax ID fields that have different validation rules in staging than in production. We've audited invoices from 40+ Malaysian and Indonesian companies, collected real rejection screenshots, and mapped exactly where the gaps are. This checklist will save you 14 days per rejected batch. Field 1: NPWP position and leading zeros (Indonesia) Indonesia's NPWP (Nomor Pokok Wajib Pajak) is 15 digits. Staging accepts it. LHDN rejects it for one reason: position 13. NPWP format is: XX.XXX.XXX.X-XXX.XXX Positions 1–2: Individual or entity code (00 for individual, 01–99 for entity) Positions 3–5: Birthday month and year (e.g., 061 = June 1961) Position 13: Check digit—calculated, not arbitrary Positions 14–15: Serial assignment number The silent failure: Many invoicing tools strip leading zeros in position 1. LHDN's validator rejects 01234567890123 if it arrived as 1234567890123 (13 digits). When you re-enter with leading zeros in position 1, the check digit in position 13 must be recalculated, or LHDN's checksum fails. What to do: If NPWP is 15 digits and staging passed it, force the field to text format, not numeric. Text format preserves leading zeros. Then validate using the Directorate General of Taxes (DGT) checksum algorithm before submission. Field 2: SST branch code and merchant routing (Malaysia) Malaysia's Service and Sales Tax (SST) has a three-part identifier: Tax ID (SST registration number) + Branch Code + Merchant Category Code (MCC). MyInvois staging validates the SST number alone. LHDN validates the routing tuple. You enter: A12-3456-78901234 (valid SST) Staging approves it. You submit. LHDN rejects it because your branch code (position 17–20 in the combined submission field) doesn't match your merchant category (position 21–24). Neither field appears in staging validation. This happens in three scenarios: Multi-branch operator: You have one SST but invoice from three branches. Branch code must map to a pre-registered location with LHDN. If you don't register the branch, LHDN silently rejects. Merchant category mismatch: SST says you're a retail outlet (5411). You invoice as a service provider (7299). MCC must align with your registered primary business class. Invoice role field empty: MyInvois has a separate "invoice role" field (Issuer vs Receiver). Staging doesn't validate it against branch code. LHDN does. What to do: Before your first SST invoice, request your branch code matrix from LHDN (it's one A4 page). Map each branch to its MCC. Then create a billing rule that routes branch-specific invoices to the correct code pair. If you're invoicing from a secondary location not yet registered, stop and register it first. Field 3: PPN (VAT) rate and exempt-goods routing (Indonesia) Indonesia's PPN (Pajak Pertambahan Nilai, value-added tax) has four rate bands: 0%, 5%, 10%, and 15%. Your invoice must declare the rate and item-by-item tax basis. Staging doesn't validate item basis. LHDN does. Scenario: You invoice for an exempt good (e.g., rice, medical supplies, education). You correctly mark the line item as PPN 0%. But in the summary tax field, you accidentally include the line in the total taxable amount instead of the exempt amount. Staging passes it. LHDN rejects it because exempt goods can never appear in the taxable total. The mismatch happens because line-level tax class (exempt, taxable at 5%, taxable at 10%, etc.) and summary allocation (which totals go into which tax basket) are validated separately in production but not in staging. Common case: A composite invoice with goods (0% PPN) and installation labor (10% PPN). You mark the goods correctly but the system auto-calculates the tax summary using only the highest rate. LHDN sees the goods but the total shows 10% applied to everything. What to do: For every invoice, manually verify the tax summary against line items. If you have a multi-rate invoice, sum the taxable amount by rate bucket—0% goods total, 5% total, 10% total, 15% total—separately. Enter each into its corresponding field. Never rely on auto-summation for PPN invoices; validate the math yourself before submission. Field 4: Withholding tax code and creditable status (Malaysia) Malaysia's withholding tax (cukai cagaran) field has two sub-components: the tax code (e.g., 01 for income tax withholding, 03 for specific service withholding) and whether it's creditable against the recipient's final tax. Staging validates the code exists. LHDN validates code-to-service-type alignment. You invoice a professional service (e.g., audit, engineering design). The service is subject to Section 107A withholding. You enter withholding code 03 and mark it creditable. Staging accepts it. LHDN rejects it because Section 107A withholding is onl