Compliance

LHDN MyInvois Integration

How the IntBooks MyInvois integration works: intermediary submission, pre-submission checks, polling, cancellation, rejection and consolidated e-invoices.

By IntBooks Editorial Team · Last updated: 29 September 2026

This page explains how the IntBooks MyInvois integration works and what you need to set up. IntBooks is in closed beta, so some of this may change before launch.

Do you need it? E-invoicing is mandatory for businesses with annual turnover of RM3 million or more. Below that you’re exempt from 1 September 2026, but you can opt in (LHDN statement, 30 Aug 2026). Scope depends on turnover, not SST registration.

Architecture overview

IntBooks submits to LHDN’s MyInvois API directly, as an intermediary acting on your behalf. No Peppol provider sits in between. When you submit a document:

  1. IntBooks builds a UBL 2.1 document in JSON from the invoice. (MyInvois accepts XML or JSON; IntBooks uses JSON.)
  2. The document is digitally signed.
  3. IntBooks logs in to MyInvois with the OAuth 2.0 client credentials flow, identifies your TIN as the taxpayer it’s acting for, and submits the document.
  4. LHDN validates it: structure, core fields, signature, taxpayers, referenced documents, codes, duplicates and currency (validation rules).
  5. IntBooks polls for the result. A valid document gets LHDN’s UIN and a validation link, which you can view and download as a QR code.

If LHDN marks the document invalid, IntBooks stores the error details with the submission so you can fix the problem and submit again.

Granting intermediary permissions

An intermediary can only do what the taxpayer has allowed it to do in MyInvois (Login as Intermediary System). Before your first submission, you grant IntBooks permission for your TIN in MyInvois. During the beta, we’ll walk you through this when we enable your organisation.

Sandbox vs production

LHDN runs two environments (MyInvois SDK FAQ):

EnvironmentPortalAPI
Sandboxpreprod.myinvois.hasil.gov.mypreprod-api.myinvois.hasil.gov.my
Productionmyinvois.hasil.gov.myapi.myinvois.hasil.gov.my

Sandbox documents aren’t valid e-invoices. In IntBooks, the environment is set for the whole platform, not per organisation, so you can’t switch it from your own settings. Ask us if you need to test against the sandbox.

Where to find it in the app

  • Invoices → E-Invoice: the e-invoice dashboard. It shows submission statistics, a list you can filter, a go-live readiness panel, and the Submit E-Invoice action.
  • Received E-Invoices: e-invoices your suppliers issued to you, with a Reject action.

How do I submit a document?

  1. Open Invoices → E-Invoice and choose Submit E-Invoice.
  2. Pick the invoice, credit note or debit note to submit.
  3. Review the pre-submission validation. It checks the document before anything reaches LHDN, including the customer’s TIN and ID number.
  4. Choose Validate & Submit.

Each document goes to LHDN as its own submission. LHDN’s limits are 300 KB per document, 5 MB and 100 documents per submission, and a recommended 100 requests per minute per client ID (Submit Documents). If LHDN asks IntBooks to slow down, it waits and retries.

Issue date rule: MyInvois rejects a document whose issue date and time is more than 72 hours before submission (MyInvois SDK FAQ). Submit soon after you invoice.

What does a successful submission look like?

Open the submission from the list to see:

  • Status: Validated
  • UIN: LHDN’s unique identifier for the document
  • Submitted and validated timestamps
  • QR code: the document’s MyInvois validation link, which you can view or download

Your customer can scan the QR code to check the document on MyInvois.

What does a failed submission look like?

The submission shows as Rejected or Failed, with LHDN’s error code and message. Examples from the SDK:

  • ERR406, “Buyer TIN is invalid”: check the customer’s TIN and ID number, correct the customer record, and submit again (taxpayer validator).
  • ERR246, “TIN and identity type combination is invalid”: the TIN and the BRN or NRIC don’t belong together.
  • CV302: a code, such as a classification or unit code, isn’t in LHDN’s code table (code validator).
  • DR304: a credit or debit note references a document LHDN can’t find, or one that isn’t valid (referenced documents validator).
  • DV302: a duplicate of a recently submitted document (duplicate validator).
  • “Issuance date time value of the document is too old”: the issue date is more than 72 hours before submission. Reissue with a current date.

Status updates

IntBooks checks pending submissions with LHDN in the background. The e-invoice dashboard refreshes while submissions are in flight. The statuses you’ll see include Submitted, Processing, Validated, Rejected, Cancelled and Failed.

Cancelling and rejections

  • Cancel: you can cancel a validated e-invoice from its submission detail, within 72 hours of validation. After that, issue a credit or debit note instead (Cancel Document; LHDN General FAQs, Q33–37).
  • Rejecting a supplier’s e-invoice: on Received E-Invoices, you can reject a document within 72 hours of its validation (Reject Document). The document stays valid until the supplier cancels it.

Credit notes and debit notes

Credit and debit notes are submitted the same way. When the original invoice has an LHDN UIN, IntBooks includes it as the original e-invoice reference. LHDN checks that the referenced document exists and is valid.

Consolidated e-invoices (B2C)

For consumer sales where the buyer didn’t ask for an e-invoice, IntBooks can build a monthly consolidated e-invoice using LHDN’s general public TIN. It submits the previous month’s consolidation automatically, aiming for LHDN’s deadline of 7 calendar days after month-end (LHDN General FAQs, Q24). Consolidation is switched on per organisation, and some activities in LHDN’s Specific Guideline can’t be consolidated. Check with us before you turn it on.

Self-billed e-invoices

Where you, as the buyer, must issue a self-billed e-invoice (for example, for some supplier payments or imports), IntBooks can submit a supplier bill as a self-billed e-invoice. The self-billed document types are 11 to 14. Check LHDN’s Specific Guideline to confirm self-billing applies to your transaction.

Webhooks

Outbound webhooks for e-invoice status changes aren’t available yet. The integrations settings page lists them as coming soon.

See also