Skip to main content

Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ

Not live yet

GoRoute's MyInvois integration is built and tested against LHDN's published SDK samples, but not live: no document has yet been submitted to MyInvois, in pre-production or production. Submission is on hold until LHDN confirms one step of its signature procedure that its published sample does not let us reproduce; GoRoute does not guess it. Until then a Malaysian organisation's invoices are sent the way they are today.

E-invoicing in Malaysia runs through MyInvois, the clearance system of the Inland Revenue Board of Malaysia (LHDN, also HASiL). An e-invoice is LHDN's own UBL 2.1 document (not Peppol PINT MY): it is signed with an organisation certificate issued by a Malaysian certification authority licensed by MCMC, submitted to MyInvois, and valid once MyInvois has validated it. A valid document has a public validation link, {MyInvois portal}/{UUID}/share/{long ID}, printed on the invoice as a QR code.

Who must issue e-invoices: by annual turnover, in phases since 1 August 2024, and taxpayers below RM 3 million are exempt since 1 September 2026 (LHDN e-Invoice Guideline v4.8, 30 Aug 2026). Taxpayers up to RM 5 million are in a penalty-free relaxation period until 31 December 2027 (LHDN e-Invoice Specific Guideline v4.9, 7 Sep 2026, Table 16.1).

What the integration doesโ€‹

For an organisation in Malaysia that switches MyInvois on, every invoice issued through the API, the portal, the CSV import, drafts, batches and connectors is:

  1. Built as a MyInvois document, version 1.1 (signed), for the e-invoice types 01 invoice, 02 credit note, 03 debit note, 04 refund note and their self-billed versions 11-14, and checked against MyInvois' field rules as they apply in production from 24 October 2026. An invoice that breaks a rule is refused with every problem listed (C5_MY_DOCUMENT_INVALID, issues[]).
  2. Signed and submitted to MyInvois, several documents per submission (at most 100 documents, 5 MB, 300 KB each), within MyInvois' 72 hours of the issue time.
  3. Followed until MyInvois validates it (Valid, with its UUID, long ID and validation link) or finds it Invalid (with LHDN's errors).
  4. Cancelled on request within 72 hours of validation; a document you received can be rejected in the same window.

Connecting: two waysโ€‹

Your own MyInvois connection (taxpayer system)GoRoute as your intermediary
In MyInvoisregister GoRoute's connector as an ERP system; enter its client ID and secret in GoRouteappoint GoRoute's Malaysian intermediary and grant it permissions
Signing certificateyour organisation certificate (TIN and BRN in it), uploaded to GoRoute, held encryptedthe intermediary's
Received documentslisted in GoRoutenot visible to an intermediary (LHDN)
Availablewhen the integration goes livewhen GoRoute's Malaysian intermediary identity exists (not yet)

Invoice fieldsโ€‹

On the canonical invoice (POST /api/v1/invoices). A GoRoute service that has these fields checks their values; one that does not have them drops them without an error. To see which kind of service you are using, send a dry run, POST /api/v1/invoices/validate, with "my_tax_type": "99" on a line. A service that has the fields refuses it with 422, and the error names my_tax_type ("Input should be '01', '02', '03', '04', '05', '06' or 'E'"). A service that does not have them answers as if the field were absent. Nothing is sent by a dry run.

FieldMeaning
buyer.my_tin, buyer.my_id_type, buyer.my_id_valueThe buyer's TIN and its BRN / NRIC / PASSPORT / ARMY number. EI00000000010 is the General Public.
buyer.my_sstThe buyer's SST registration, or NA
lines[].my_classification_codesLHDN classification codes, e.g. ["022"]; mandatory: from the line, or the default your organisation saved (there is no other default)
lines[].my_tax_type01-06 or E; mandatory: from the line (E for an exempt tax category), or the default your organisation saved (there is no other default)
my_payment_modeLHDN Payment Mode 01-08; cash, cheque and credit transfer map on their own, a card, direct debit or other payment needs it when a bank account is given
lines[].my_tariff_codeProduct tariff (HS) code for goods
my_invoice_type_code, my_self_billedThe e-invoice type; derived from document_type when absent
preceding_invoice.uuidA note's original e-invoice MyInvois UUID
my_exchange_rateThe rate to MYR for a document not in MYR

The seller's TIN, BRN, MSIC code, business activity and telephone come from the organisation's Malaysia settings (PUT /api/v1/jurisdictions/{code}/settings, with MY as the code). CSV columns: buyer_my_tin, buyer_my_id_type, buyer_my_id_value, buyer_my_sst, my_invoice_type_code, my_self_billed, my_exchange_rate, my_original_uuid, my_original_number, line_my_classification, line_my_tax_type, line_my_tariff_code.

Consolidated e-invoicesโ€‹

Sales to buyers who did not ask for an e-invoice can be consolidated monthly into an e-invoice to the General Public, issued within seven days after the month end. Once the integration is live, a preview shows the month's consolidated documents (one line per receipt, per continuous receipt range, or per branch) and the sales that must be issued individually (a single transaction above RM 10,000, and the activities LHDN excludes).

Status of a documentโ€‹

Once the integration is live, each invoice issued through MyInvois shows its MyInvois state: the status, the UUID, the long ID, the validation link, the end of the 72-hour window, LHDN's validation errors, and whether it can be cancelled or rejected now. The endpoints are published in the API reference when the integration goes live.