# Malaysian e-invoice validator (MyInvois)

Source: https://xmlvalid.com/e-invoicing/malaysia

> Check an e-invoice before your system submits it to LHDN's MyInvois System: the UBL 2.1 schema, then 75 checks written from the MyInvois SDK, from the core fields and code tables to the general TINs and, in a signed document, the digest and the signature, with every finding on its line and LHDN's error code. Nothing is uploaded.

## E-invoicing in Malaysia in short

Malaysia brings in e-invoicing in phases by annual turnover or revenue, as it stood in 2022: above RM100 million from 1 August 2024, above RM25 million from 1 January 2025, above RM5 million from 1 July 2025 and up to RM5 million from 1 January 2026. Taxpayers with less than RM3,000,000 are exempt, unless they belong to a group above it; a new business that reaches RM3,000,000 starts on 1 January of the second year after. Every e-invoice goes to the MyInvois System of the Inland Revenue Board (LHDN, or HASiL), which validates it in near real time and gives it a unique identifier; only then is it shared with the buyer, with a QR code that links to it. The buyer can reject it, and the supplier cancel it, within 72 hours.

There are eight document types, all a UBL 2.1 Invoice in XML or JSON: an invoice (type 01), a credit note (02), a debit note (03) and a refund note (04), and the same four self-billed by the buyer (11 to 14), for instance when buying from a foreign supplier. Sales to consumers who don't ask for an e-invoice go into a consolidated e-invoice to the general public, submitted within seven days after the month ends. Version 1.1 of each type is signed with a certificate from a certification authority LHDN recognises; 1.0 is not signed. A document reaches MyInvois through the portal, by API from the taxpayer's own system, or over the Peppol network as a PINT MY invoice.

## How to check a MyInvois e-invoice

1. Open the [validator with the MyInvois profile](https://xmlvalid.com/validate?schema=my-myinvois). An e-invoice opened or pasted picks it on its own, by its e-invoice type and version; a Peppol invoice picks PINT MY by its specification identifier.
2. Paste the XML or drop the file, then press **Validate**.
3. Each finding names LHDN's error code where it has one; click it for the rule and what usually causes it.

## What is checked

First the UBL 2.1 schema, then our rules, written from the MyInvois SDK of 25 September 2026 and LHDN's e-Invoice guidelines: the fields the SDK marks mandatory for each type, the formats of the core fields such as the phone number ([CF410](https://xmlvalid.com/rules/CF410)), postcode, e-mail and SST number, the code tables of the SDK ([CV302](https://xmlvalid.com/rules/CV302): classification, MSIC, state, country, currency, tax type, payment mode and unit of measure), state 17 only for a foreign address or the general public ([CV317](https://xmlvalid.com/rules/CV317)), the currencies of the amounts and the exchange rate ([DC502](https://xmlvalid.com/rules/DC502)), and the general TINs LHDN allows for the general public, foreign buyers and suppliers and the government ([ERR236](https://xmlvalid.com/rules/ERR236)). Codes such as these are the ones the MyInvois System answers with.

In a signed version, the document digest recomputed from the document ([DS322](https://xmlvalid.com/rules/DS322)), the RSA signature against the certificate in it, and the certificate digest. The SDK's mathematical mappings (each line's subtotal, the totals with and without tax, the amount payable) are warnings, as LHDN lists no error code for them ([XV-MY-39](https://xmlvalid.com/rules/XV-MY-39)). What needs the MyInvois System is not checked: whether a TIN or registration number is registered, the submitter against the certificate, the referenced documents, duplicates and the time of submission.

For a Peppol invoice, the PINT MY profiles run OpenPeppol's published rules: the PINT Billing rules and the Malaysian ones, for invoices, credit notes and their self-billed forms.

## Profiles to check with

- [MyInvois e-Invoice](https://xmlvalid.com/schemas/my-myinvois): An e-invoice for LHDN's MyInvois System: invoices, credit, debit and refund notes and their self-billed forms, checked against UBL 2.1 and the MyInvois validations. [Validate](https://xmlvalid.com/validate?schema=my-myinvois)
- [PINT MY Invoice](https://xmlvalid.com/schemas/pint-my-invoice): A Peppol PINT MY invoice for Malaysia, checked against the UBL 2.1 schema, the PINT Billing rules and the Malaysian rules OpenPeppol publishes. [Validate](https://xmlvalid.com/validate?schema=pint-my-invoice)
- [PINT MY Credit Note](https://xmlvalid.com/schemas/pint-my-credit-note): A Peppol PINT MY credit note for Malaysia, checked against the UBL 2.1 schema, the PINT Billing rules and the Malaysian rules OpenPeppol publishes. [Validate](https://xmlvalid.com/validate?schema=pint-my-credit-note)
- [PINT MY Self-Billing Invoice](https://xmlvalid.com/schemas/pint-my-sb-invoice): A Peppol PINT MY self-billed invoice for Malaysia, issued by the buyer in the seller's name, checked against the UBL 2.1 schema, the PINT rules and the Malaysian rules OpenPeppol publishes. [Validate](https://xmlvalid.com/validate?schema=pint-my-sb-invoice)
- [PINT MY Self-Billing Credit Note](https://xmlvalid.com/schemas/pint-my-sb-credit-note): A Peppol PINT MY self-billed credit note for Malaysia, checked against the UBL 2.1 schema, the PINT rules and the Malaysian rules OpenPeppol publishes. [Validate](https://xmlvalid.com/validate?schema=pint-my-sb-credit-note)

## Rules invoices break most

Each one has a page with what it checks, its test and, for many, how to fix it.

- [`DS322`](https://xmlvalid.com/rules/DS322): Document digest value doesn't match digest calculated value from existing document content. Document content might have changed: the signature states …, the doc...
- [`CV302`](https://xmlvalid.com/rules/CV302): ItemCode … does not exist in CodeType EInvoiceTypes: the e-invoice type (InvoiceTypeCode) is 01 (invoice), 02 (credit note), 03 (debit note), 04 (refund note),...
- [`CV317`](https://xmlvalid.com/rules/CV317): State Code 17 should be used for Consolidated e-Invoice and non-Malaysian address only - the …'s address is in MYS and the document is not consolidated.
- [`ERR236`](https://xmlvalid.com/rules/ERR236): Where General TIN (010) and ID Type BRN/NRIC = NA, applicable for Classification Code 004 only: the document has no line classified 004 (consolidated e-invoice)...
- [`DC502`](https://xmlvalid.com/rules/DC502): If the document currency is …, all currency codes for amounts should also be …; this document has amounts in ….
- [`CF410`](https://xmlvalid.com/rules/CF410): Enter valid phone number - …: digits with an optional leading plus, no spaces, dashes or brackets.
- [`XV-MY-39`](https://xmlvalid.com/rules/XV-MY-39): The total including tax (TaxInclusiveAmount) is the total excluding tax plus the total tax amount: …, not ….

## Questions

### Is the invoice uploaded?

No. The schema check and the rules both run in your browser. Only the API and URL monitors validate on our servers.

### Does a valid result mean MyInvois will accept the e-invoice?

It means the document passes the schema and the MyInvois validations that need only the file. MyInvois also checks the TINs and registration numbers against LHDN's records, the submitter against the certificate, the documents a note refers to and duplicates, so it can still reject the document for something a file alone doesn't show.

### Which version should I submit, 1.0 or 1.1?

Version 1.1 is signed with your certificate, and its signature is checked here: the digest of the document, the RSA signature and the certificate digest. Version 1.0 is the same document without a signature. Versions 1.2 and 1.3 are their forms for the Voluntary Disclosure programme, until 31 December 2027.

### Can I check a JSON e-invoice?

Not yet: the validator reads the XML form. MyInvois takes both, with the same fields.

### Can I check invoices from code?

Yes: the API and the command-line client with --schema my-myinvois, or --schema auto for a folder of mixed files.

### Official sources

- [LHDN: e-Invoice implementation timeline, updated 30 August 2026](https://www.hasil.gov.my/en/e-invois/pelaksanaan-e-invois-di-malaysia/garis-masa-pelaksanaan-e-invois/)
- [LHDN: e-Invoice Guideline 4.8 and Specific Guideline 4.9](https://www.hasil.gov.my/en/e-invois/rujukan-pelaksanaan-e-invois/garis-panduan/)
- [MyInvois SDK: document types](https://sdk.myinvois.hasil.gov.my/documents/)
- [MyInvois SDK: validation rules and error codes](https://sdk.myinvois.hasil.gov.my/document-validation-rules/)
- [OpenPeppol: PINT MY](https://docs.peppol.eu/poac/my/pint-my/)

### Other countries

- [French e-invoice validator](https://xmlvalid.com/e-invoicing/france)
- [German e-invoice validator: XRechnung and ZUGFeRD](https://xmlvalid.com/e-invoicing/germany)
- [Belgian e-invoice validator: Peppol BIS](https://xmlvalid.com/e-invoicing/belgium)
- [KSeF invoice validator: FA(3)](https://xmlvalid.com/e-invoicing/poland)
- [Croatian eRačun validator](https://xmlvalid.com/e-invoicing/croatia)
- [RO e-Factura validator](https://xmlvalid.com/e-invoicing/romania)
- [FatturaPA validator](https://xmlvalid.com/e-invoicing/italy)
- [UAE e-invoice validator (PINT AE)](https://xmlvalid.com/e-invoicing/uae)
- [InvoiceNow validator (PINT SG)](https://xmlvalid.com/e-invoicing/singapore)
- [JP PINT validator](https://xmlvalid.com/e-invoicing/japan)
- [Australian e-invoice validator (PINT A-NZ)](https://xmlvalid.com/e-invoicing/australia)
- [Spanish e-invoice validator](https://xmlvalid.com/e-invoicing/spain)
- [Dutch e-invoice validator: SI-UBL 2.0 and NLCIUS](https://xmlvalid.com/e-invoicing/netherlands)
- [Danish e-invoice validator: OIOUBL 2.1](https://xmlvalid.com/e-invoicing/denmark)
- [Norwegian e-invoice validator: EHF](https://xmlvalid.com/e-invoicing/norway)
- [Swedish e-invoice validator: Peppol BIS](https://xmlvalid.com/e-invoicing/sweden)
- [Finnish e-invoice validator: Finvoice](https://xmlvalid.com/e-invoicing/finland)
- [Austrian e-invoice validator for e-Rechnung.gv.at](https://xmlvalid.com/e-invoicing/austria)
- [Czech e-invoice validator: ISDOC](https://xmlvalid.com/e-invoicing/czech-republic)
- [Portuguese e-invoice validator: CIUS-PT](https://xmlvalid.com/e-invoicing/portugal)
- [ZATCA e-invoice validator (FATOORA)](https://xmlvalid.com/e-invoicing/saudi-arabia)
- [Brazilian NF-e validator (SEFAZ rules)](https://xmlvalid.com/e-invoicing/brazil)
- [Mexican CFDI 4.0 validator (SAT validations)](https://xmlvalid.com/e-invoicing/mexico)
