ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

Malaysia — LHDN MyInvois: threshold-based e-invoicing mandate (2024-2026)

Malaysia is rolling out its MyInvois e-invoicing system run by the Lembaga Hasil Dalam Negeri (LHDN — Inland Revenue Board) since 1 August 2024, with a descending turnover threshold approach. The format is UBL 2.1 augmented with LHDN extensions, submitted in real-time clearance through a REST API that returns a Unique Identifier Number (UIN) and a mandatory QR Code for the visual representation.

Regulatory timeline

  • Budget 2023 (October 2022). The Finance Minister Tengku Datuk Seri Zafrul Aziz announces a phased national e-invoicing roll-out starting 2024.
  • May 2023 — LHDN Concept Paper. First public version of the MyInvois model — real-time clearance, UBL 2.1, QR Code.
  • 21 February 2024 — e-Invoice Guidelines v3.0. Final scoping of perimeter, mandatory fields and threshold-based timetable.
  • 1 April 2024 — e-Invoice Guidelines v4.0. Refinements on self-billed invoices, consolidated B2C transactions and sectoral exemptions (banking, insurance).
  • 1 August 2024 — Phase 1 mandatory. ~5,000 taxpayers with turnover > RM 100 million on MyInvois. Six-month penalty grace period (until 31 January 2025).
  • 1 January 2025 — Phase 2. ~10,000 taxpayers with turnover RM 25 to 100 million.
  • 11 June 2025 — LHDN circular deferring Phase 3. The tranche RM 500,000 to 25 million is pushed to 1 July 2025 with adjusted sub-thresholds.
  • 1 January 2026 — Phase 4 generalisation. All Sales and Service Tax (SST) registered businesses integrated with MyInvois.

Technical schema

The reference format is UBL 2.1 with extension namespace cbc:CustomizationID = urn:cen.eu:en16931:2017#compliant#urn:my.lhdn:einvoice:2024:1 documented in e-Invoice Guidelines v4.0. An alternative JSON format is accepted for vendors that prefer not to generate XML directly.

MyInvois-specific fields:

  • InvoiceTypeCode: 01 (Invoice), 02 (Credit Note), 03 (Debit Note), 04 (Refund Note), 11 to 14 (Self-billed variants).
  • Buyer TIN mandatory in B2B; in B2C, a generic TIN EI00000000010 is used with monthly consolidation.
  • OriginalEInvoiceReferenceNumber: for credit/debit notes, must point to the source invoice UIN.
  • TaxScheme: SST (Sales and Service Tax) — no VAT in Malaysia since 2018 (Goods and Services Tax abolished).
xmlmyinvois-ubl-snippet.xml
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:my.lhdn:einvoice:2024:1</cbc:CustomizationID>
  <cbc:ID>INV-2026-0142</cbc:ID>
  <cbc:IssueDate>2026-05-19</cbc:IssueDate>
  <cbc:InvoiceTypeCode>01</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>MYR</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeID="TIN">C12345678901</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Ediverse Demo Malaysia Sdn Bhd</cbc:RegistrationName>
        <cbc:CompanyID>202401012345</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingSupplierParty>
</Invoice>

Submission flow

Real-time clearance model: the seller submits to MyInvois via REST API; the platform validates schema, signatures, code lists, and returns a Unique Identifier Number (UIN) in under 3 seconds (target SLA). The UIN must appear on the visual representation, encapsulated in a QR Code.

textmyinvois-flow.txt
┌──────────────┐    ┌────────────────────┐    ┌──────────────┐
│ Seller MY    │───>│ MyInvois (LHDN)    │───>│ Buyer MY     │
│ (ERP, UBL)   │    │ myinvois.hasil...  │    │ (PDF + QR)   │
└──────────────┘    └─────────┬──────────┘    └──────────────┘


                  ┌──────────────────────┐
                  │ UBL validation +     │  ← UIN + QR
                  │ assigns UIN (UUID)   │     in ≤ 3s
                  └──────────────────────┘

The buyer has 72 hours to reject an invoice (with mandatory reason), after which the invoice is permanently recorded. The seller can cancel in the same 72-hour window if an error was made.

Validation

  • MyInvois portal: myinvois.hasil.gov.my — production with MyDigital ID or LHDN login.
  • Sandbox: preprod.myinvois.hasil.gov.my — free test environment for vendors.
  • Official SDK: Postman collection, OpenAPI spec and .NET/Java/Python libraries published by LHDN. Online JSON Schema validator accessible to accredited developers.
  • LHDN code lists: MyInvois classification (4 to 5 digits), tax types, payment modes — distributed as CSV via the developer portal, to be cross-checked with MSIC (Malaysia Standard Industrial Classification) codes.

Common pitfalls

  1. Buyer TIN mandatory in B2B. A missing buyer TIN rejects the invoice. In B2C, use the generic TIN EI00000000010 and perform monthly consolidation: do not invent a fake TIN that passes validation but triggers a random buyer-side impersonation notification.
  2. Self-billed invoice. Several cases require the buyer to issue the e-invoice on behalf of the seller: commission agent payments, purchase from a non-resident, cross-border royalty payments. Codes 11 to 14 are distinct from 01 and must be selected correctly.
  3. 6-month grace period misread. The grace period does not waive the e-invoice obligation; it only suspends penalties. Many businesses wrongly assumed they could keep issuing PDFs until end of January 2025, leading to massive backfill in February 2025.
  4. Consolidated B2C invoice. For B2C flows, a monthly consolidated invoice can be issued. It must follow a specific format (1 line per day of the period) and be submitted by the 7th of the following month. Beyond deadline = not fiscally recognised.
  5. 72h cancellation. Beyond 72 hours after MyInvois validation, the only correction is a Credit Note with OriginalEInvoiceReferenceNumber pointing to the original UIN. Integrations that try to re-emit an identical invoice expecting to overwrite produce tax duplicates.