More formats
Account
English

MyInvois validation errors: meaning and fix

The LHDN MyInvois field, code-list and calculation rules checked by the validator, with the fix for each.

Codes reported by the MyInvois validator on einvoicechecker.com. The rules follow the LHDN MyInvois SDK (sdk.myinvois.hasil.gov.my): Invoice v1.0/v1.1 field specification, code tables and mathematical mappings. The "How to fix" column is our explanation.

Validate a MyInvois document →

Document header

CodeWhat it meansHow to fix
MYI-PARSEThe XML or JSON cannot be parsed.Re-export the document; for JSON check that it is the UBL JSON syntax with "_D", "_A", "_B" and an "Invoice" array.
MYI-H00The root element is not Invoice.All MyInvois document types (invoice, credit, debit, refund note and self-billed variants) use the UBL Invoice root; the type is set by InvoiceTypeCode.
MYI-H01e-Invoice version is not 1.0, 1.1, 1.2 or 1.3.Set cbc:InvoiceTypeCode/@listVersionID to "1.1" (signed) or "1.0"; 1.2 (unsigned) and 1.3 (signed) only for SVDP disclosures.
MYI-H02e-Invoice type code is not in the LHDN list.Use 01 invoice, 02 credit note, 03 debit note, 04 refund note, 11–14 for the self-billed versions.
MYI-H03e-Invoice code/number missing or longer than 50 characters.Put your internal invoice number in cbc:ID.
MYI-H04e-Invoice date missing or not YYYY-MM-DD.cbc:IssueDate in xsd:date format. MyInvois rejects documents whose issue date/time is more than 72 hours before submission.
MYI-H05e-Invoice time missing or not in UTC.cbc:IssueTime as HH:MM:SSZ in UTC, e.g. 03:15:00Z for 11:15 Malaysian time.
MYI-H06Currency code missing or not ISO 4217.cbc:DocumentCurrencyCode, e.g. MYR, USD, SGD.
MYI-H07Foreign currency without exchange rate.Add cac:TaxExchangeRate with SourceCurrencyCode = document currency, TargetCurrencyCode MYR and CalculationRate.
MYI-H08Version 1.1 or 1.3 without digital signature.Sign the document (XAdES enveloped signature in UBLExtensions plus cac:Signature) with your digital certificate, or submit as 1.0 where still accepted.
MYI-H09Signature present, not verified here (notice).MyInvois verifies the certificate and digest on submission; this tool only checks presence.
MYI-H10Credit, debit or refund note without reference to the original e-invoice.Add cac:BillingReference/cac:InvoiceDocumentReference with cbc:ID (and cbc:UUID from MyInvois); "NA" if the original was not issued through MyInvois.
MYI-H12SVDP document version 1.2 / 1.3 (notice).These versions exist only for the Special Voluntary Disclosure Programme and are accepted until 31 December 2027; use 1.0 / 1.1 for normal invoices.
MYI-H11Payment mode not in the LHDN list.Use 01 cash, 02 cheque, 03 bank transfer, 04 credit card, 05 debit card, 06 e-wallet, 07 digital bank, 08 others.

Supplier and buyer

CodeWhat it meansHow to fix
MYI-P01Supplier or buyer party missing.AccountingSupplierParty and AccountingCustomerParty are both mandatory.
MYI-P02Name missing.cac:PartyLegalEntity/cbc:RegistrationName, max 300 characters.
MYI-P03TIN missing.cac:PartyIdentification/cbc:ID with schemeID="TIN". For consolidated B2C use the general TIN EI00000000010, for foreign buyers EI00000000020.
MYI-P04TIN does not have the LHDN format.Letters + digits, no spaces or dashes, max 14 characters (e.g. C25845632020 for companies, IG… for individuals). Check it with the MyInvois TIN validation API.
MYI-P05Registration / identification number missing.One PartyIdentification with schemeID BRN (business), NRIC (MyKad, MyPR, MyKAS), PASSPORT or ARMY.
MYI-P06Identification number too long.NRIC, PASSPORT and ARMY max 12 characters, BRN max 20. The 12-character passport limit is enforced by MyInvois from 23 October 2026.
MYI-P07NRIC not 12 digits (notice).Write the MyKad number without dashes, e.g. 880101145678.
MYI-P08SST registration number missing.schemeID="SST"; "NA" if the party is not SST-registered.
MYI-P09SST number format invalid.At most two numbers separated by ";", only "-" as special character, max 35 characters.
MYI-P10Supplier tourism tax number missing.schemeID="TTX"; "NA" if not registered for tourism tax.
MYI-P11Supplier MSIC code missing.cbc:IndustryClassificationCode with the 5-digit MSIC 2008 code of the activity.
MYI-P12MSIC code not in the LHDN list.Pick the code from the LHDN MSIC sub-category list; 00000 means not applicable.
MYI-P13Business activity description missing.Put the activity text in the name attribute of IndustryClassificationCode.
MYI-P14Contact number missing.cac:Contact/cbc:Telephone. The buyer may use "NA" only on consolidated invoices.
MYI-P15Contact number not E.164.International format with country code and no spaces, e.g. +60123456789.
MYI-P16E-mail address invalid.Use a single valid address (RFC 5322) or leave the element out.

Addresses

CodeWhat it meansHow to fix
MYI-A01Address missing.cac:PostalAddress is mandatory for supplier and buyer.
MYI-A02Address line 0 missing.At least one cac:AddressLine/cbc:Line; "NA" allowed (then only the state stays mandatory).
MYI-A03Country missing or not ISO 3166-1 alpha-3.cac:Country/cbc:IdentificationCode with listID="ISO3166-1" listAgencyID="6", e.g. MYS, SGP.
MYI-A04City name missing.cbc:CityName, max 50 characters.
MYI-A05State missing.cbc:CountrySubentityCode: 01–16 for Malaysian states and federal territories, 17 for addresses outside Malaysia and consolidated invoices.
MYI-A06Malaysian state code not in the list.01 Johor, 02 Kedah, 03 Kelantan, 04 Melaka, 05 Negeri Sembilan, 06 Pahang, 07 Pulau Pinang, 08 Perak, 09 Perlis, 10 Selangor, 11 Terengganu, 12 Sabah, 13 Sarawak, 14 WP Kuala Lumpur, 15 WP Labuan, 16 WP Putrajaya.

Invoice lines

CodeWhat it meansHow to fix
MYI-L00No invoice line.At least one cac:InvoiceLine.
MYI-L01Classification code missing.cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode listID="CLASS", e.g. 022 Others, 004 Consolidated e-Invoice.
MYI-L02Classification code not in the list.Use one of the LHDN classification codes 001–045.
MYI-L03Product tariff code invalid.listID="PTC", digits and "." only, max 12 (e.g. 9800.00.0010).
MYI-L04Description missing.cac:Item/cbc:Description (not only cbc:Name), max 300 characters.
MYI-L05Unit price missing.cac:Price/cbc:PriceAmount.
MYI-L06Subtotal missing.cac:ItemPriceExtension/cbc:Amount = unit price × quantity, before discounts, charges and tax.
MYI-L07Line total excluding tax missing.cbc:LineExtensionAmount.
MYI-L08Unit of measure not in UN/ECE Rec. 20.e.g. C62 (one), HUR (hour), KGM (kilogram), XUN (unit).
MYI-L09Country of origin not ISO alpha-3.cac:Item/cac:OriginCountry/cbc:IdentificationCode, e.g. MYS.
MYI-L10Line tax missing.Every line needs cac:TaxTotal with a TaxSubtotal, also for tax type 06 (not applicable) with amount 0.
MYI-L11Tax type not in the list.01 sales tax, 02 service tax, 03 tourism tax, 04 high-value goods tax, 05 sales tax on low-value goods, 06 not applicable, E exempt.
MYI-L12TaxScheme not OTH.cac:TaxScheme/cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6" with value OTH.
MYI-L13Exemption without reason.For tax category E add TaxExemptionReason (max 300; allowed specials . - , ( )).

Totals and calculations

CodeWhat it meansHow to fix
MYI-T00Mandatory total missing.TaxExclusiveAmount, TaxInclusiveAmount, PayableAmount and cac:TaxTotal with TaxAmount and at least one TaxSubtotal.
MYI-T01Invoice-level tax type not in the list.Same codes as on the lines.
MYI-T02Invoice-level exemption without reason.Add TaxExemptionReason for category E.
MYI-M01Subtotal ≠ unit price × quantity.Recalculate ItemPriceExtension/Amount.
MYI-M02Line total ≠ subtotal − discounts + charges.LineExtensionAmount = ItemPriceExtension − line AllowanceCharge(false) + line AllowanceCharge(true).
MYI-M03Line tax amount ≠ sum of its subtotals.Line TaxTotal/TaxAmount must equal its TaxSubtotal amounts.
MYI-M04Total net amount ≠ sum of line totals.LegalMonetaryTotal/LineExtensionAmount = Σ line LineExtensionAmount.
MYI-M05Total discount ≠ invoice-level discounts.AllowanceTotalAmount = Σ document AllowanceCharge with ChargeIndicator false.
MYI-M06Total charges ≠ invoice-level charges.ChargeTotalAmount = Σ document AllowanceCharge with ChargeIndicator true.
MYI-M07Total excluding tax ≠ net − discounts + charges.TaxExclusiveAmount = LineExtensionAmount − AllowanceTotalAmount + ChargeTotalAmount.
MYI-M08Tax per type ≠ sum of line taxes of that type.Each document TaxSubtotal/TaxAmount = Σ line tax amounts with the same tax type.
MYI-M09Total tax ≠ sum of tax per type.TaxTotal/TaxAmount = Σ TaxSubtotal/TaxAmount.
MYI-M10Total including tax ≠ excluding tax + tax.TaxInclusiveAmount = TaxExclusiveAmount + TaxTotal/TaxAmount.
MYI-M12Amount with more than 26 digits.From 23 October 2026 MyInvois rejects monetary amounts longer than 26 digits; round to 2 decimals.
MYI-M11Payable amount ≠ including tax − prepayment + rounding.PayableAmount = TaxInclusiveAmount − PrepaidPayment/PaidAmount + PayableRoundingAmount.

Frequently asked questions

Is this the same validation as MyInvois?

It implements the field specification, code lists and mathematical mappings published in the LHDN MyInvois SDK. MyInvois additionally checks the digital signature, that the TINs exist, duplicates and the 72-hour submission window, which need access to LHDN systems.

Why do the official SDK sample files fail?

The SDK samples contain placeholders such as "Supplier's TIN" and repeat the same amount in every total field. They show the structure, not a valid document, so the format and calculation rules report them.

Does it support the JSON format?

Yes. Both UBL 2.1 XML and the UBL JSON syntax accepted by MyInvois are parsed into the same model and get exactly the same checks.

Source: LHDN MyInvois SDK, documents and code tables, retrieved 16 October 2026.