What is checked
- Header: document version (1.0, 1.1; 1.2 / 1.3 for SVDP), e-invoice type (01–04, 11–14), number, issue date and UTC time, currency and exchange rate, digital signature for 1.1, reference to the original e-invoice on credit, debit and refund notes.
- Supplier and buyer: name, TIN format, BRN / NRIC / passport / army number, SST and tourism tax numbers (or NA), MSIC code and activity description, E.164 phone number, e-mail, address with LHDN state code and ISO country code.
- Lines: classification code (CLASS), description, unit price, subtotal, total excluding tax, unit of measure, tax type with TaxScheme OTH, exemption reason.
- Calculations: the SDK mathematical mappings from line subtotal to total payable amount, tax per tax type, discounts, charges, prepayment and rounding, and the 26-digit amount limit enforced from 23 October 2026.
Both syntaxes accepted by MyInvois, UBL 2.1 XML and UBL JSON, get identical checks. Every rule is explained on the MyInvois error codes page.
What the validator cannot check
Whether a TIN exists and matches the BRN or NRIC (use the MyInvois Validate Taxpayer's TIN API, mandatory since 1 August 2026), whether the signature certificate is valid, duplicate submissions and the 72-hour submission window. These need access to LHDN systems and are checked by MyInvois on submission.
For developers and ERP vendors
The same engine is available as a REST API (POST /v1/validate accepts XML and JSON) and as an MCP server for AI agents. Run it before signing and submitting through the MyInvois API: the report gives the rule code, message and path of each problem.
Frequently asked questions
Does this tool submit the e-invoice to LHDN?
No. It only validates and displays the document. Submission goes through the MyInvois Portal, the MyInvois API or your e-invoicing software.
Why do the SDK sample files show errors?
The official samples use placeholders such as "Supplier's TIN" and repeat one amount in every total. They show the structure, not a valid invoice, so the TIN and calculation rules report them.
Can I open a MyInvois JSON file here?
Yes. Drop the .json file; it is converted to the same invoice model as the XML and shown as a readable invoice.
Developers: same engine as an API
curl -F file=@invoice.pdf https://einvoicechecker.com/v1/validatecurl -F file=@invoice.xml https://einvoicechecker.com/v1/parsecurl -F file=@invoice.xml "https://einvoicechecker.com/v1/render?lang=en" -o invoice.html