Malaysia einvoice JSON Check — check your malaysia e-invoice data

Lints MyInvois (LHDN/IRBM) e-Invoice JSON against the UBL 2.1 field rules: TIN, MSIC, classification code, tax type code, invoice type code. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmDocker Hub
ext install ReadyStack.myinvois-field-check
npx @readystack/myinvois-field-check <file>
docker run --rm -v "$PWD:/w" getreadystack/myinvois-field-check /w

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 15 rules MyInvois Field Check — Malaysia e-Invoice (UBL 2.1) checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Export a dated workspace audit file for your tax agent and gate CI on every commit.

One payment, one licence key for this tool. The key is shown right after payment.

Section 120(1)(d), Income Tax Act 1967: a fine of RM200 to RM20,000 per non-compliant e-Invoice, or imprisonment up to six months, or both. The relaxation after the 1 July 2026 phase ends 31 December 2026.

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

MyInvois Field Check — Malaysia e-Invoice (UBL 2.1)

Six IRBM rejects sat in a Petaling Jaya ERP integrator's MyInvois e-Invoice payload, and every one of them had already passed the JSON schema check in the build pipeline.

That is the ordinary shape of a MyInvois failure. The document is well formed. The braces close, the arrays nest the way UBL 2.1 in its JSON form wants them to nest, and the submission API still hands the whole thing back. MyInvois validates values, and the values are code lists that nobody memorises.

Here is what the six were, taken line by line from the fixture that ships with the extension.

Line 11 carried "InvoiceTypeCode": "INV". IRBM accepts eight codes there and none of them are words: 01 Invoice, 02 Credit Note, 03 Debit Note, 04 Refund Note, and 11 through 14 for the self-billed versions of the same four.

Line 12 declared "DocumentCurrencyCode": "USD" with no exchange rate anywhere in the document. A non-MYR e-Invoice has to carry a TaxExchangeRate with the rate used to reach ringgit, because the tax authority settles in ringgit.

Line 17 had "IndustryClassificationCode": "0111". MSIC 2008 codes are five digits, not four, and the one that belongs there is the one on your own LHDN profile.

Line 19 put EI00000000010 in the supplier slot. That is the general public TIN. It exists so that you can issue to a buyer who has no Malaysian TIN, and it is a buyer-side value only. A supplier submits under its own.

Line 68 had "ItemClassificationCode": "0022". Classification codes are three padded digits in the 001 to 045 range, so 022 is right and 0022 is a rejection.

Line 78 had "TaxCategory": "SST". This is the one that catches everybody, including every language model asked to draft a payload, because SST is what the tax is called in every conversation in Malaysia. In the field it is 02 for Service Tax, from a list that runs 01 through 06 plus E for an exemption.

Notice what those six have in common. Not one of them is a syntax error. A JSON validator, a TypeScript type, a UBL schema check — all of them pass this document, because the shape is correct and only the contents are wrong. It is also the class of mistake a generative model makes: it writes a document that looks like every MyInvois example it has read, with the tax named the way humans name it.

MyInvois Field Check runs fifteen of these value rules over the open file: supplier TIN presence and shape, the general public TIN in the wrong slot, MSIC code and its description, supplier telephone, buyer registration identifier, e-Invoice type code, listVersionID and the 1.1 signature block, currency code, exchange rate, line classification code, line tax type code, and the original-document reference that credit, debit and refund notes must carry. Each finding names the rule, the value it found, the value IRBM expects, and the line. Files without an Invoice root are skipped.

The clock matters as much as the codes. IRBM's six-month relaxation period that follows the 1 July 2026 phase runs to 31 December 2026, and Section 120(1)(d) of the Income Tax Act 1967 prices a non-compliant e-Invoice at a fine of RM200 to RM20,000, or imprisonment up to six months, or both, per document. Confirm your own phase against the current LHDN e-Invoice Guideline; this is a field checker, not tax advice.

Checking a file in the editor is free and finishes the job: all fifteen rules, every finding, every line. The licence key buys a different job — a dated audit file covering the whole workspace, the kind you hand to a tax agent, and the same check running in CI so a payload that IRBM would reject never leaves the build.

15 seconds — what it actually does

Questions people ask

What does MyInvois Field Check actually do?

It parses a MyInvois e-Invoice JSON payload in the UBL 2.1 array-of-one shape and applies 15 IRBM field rules to it, reporting each failure with a rule name and a line number. It checks values, not shape: supplier TIN, MSIC code, e-Invoice type code, classification code, tax type code, currency and exchange rate, buyer identifier and signature version.

Who is this built for?

Malaysian ERP integrators and accounting-software developers who assemble MyInvois payloads in code, and SME finance leads who hand-edit a JSON file before uploading it. If your annual turnover sits above RM500,000 you are inside the phased LHDN mandate. IRBM's relaxation after the 1 July 2026 phase ends 31 December 2026, and every document is then validated field by field.

Why is a free JSON validator not enough?

A JSON schema check answers whether the document is well formed. IRBM rejects on values. SST is the name of the tax everywhere except in TaxCategory, where the field wants 02. Classification codes are three padded digits in the 001 to 045 range, and MSIC is a five-digit code from your own LHDN profile. No generic validator carries those lists.

What is free and what needs a licence key?

Free and complete: lint any MyInvois JSON in the editor, see all 15 rules run, get every finding named on its line, and fix it. The licence key adds a different job — exporting a dated audit file covering the whole workspace for your tax agent, and running the same check in CI so a bad payload cannot reach the submission API.

What does the alternative cost?

Section 120(1)(d) of the Income Tax Act 1967 sets a fine of RM200 to RM20,000 for each non-compliant e-Invoice, or imprisonment up to six months, or both. A rejected document also has to be rebuilt and resubmitted by hand. The licence is $29 once,.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. MyInvois Field Check — Malaysia e-Invoice (UBL 2.1) checks the file you open against 15 rules from a rule set dated 2026-09-21, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →