Skip to main content
Malaysia MyInvois E-Invoicing for ERPNext — A build-to-order ERPNext app that validates and submits your Sales Invoices to Ma — 1/1Illustrative preview

A build-to-order ERPNext app that validates and submits your Sales Invoices to Malaysia's LHDN MyInvois platform

in real time, generating LHDN-compliant UBL e-invoices with automated status sync, cancellation, and consolidated B2C support.

ECOSIRE builds, installs, and supports it for your instance.

What is Malaysia MyInvois E-Invoicing for ERPNext?

A build-to-order ERPNext app that validates and submits your Sales Invoices to Malaysia's LHDN MyInvois platform in real time, generating LHDN-compliant UBL e-invoices with automated status sync, cancellation, and consolidated B2C support. ECOSIRE builds, installs, and supports it for your instance. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Direct LHDN MyInvois API integration with OAuth2 client-credential token acquisition and automatic refresh against the LHDN identity service
UBL 2.1 e-invoice XML generation mapped from the ERPNext Sales Invoice, Sales Invoice Item and Customer DocTypes per the LHDN schema
`hooks.py` `doc_events` handler on Sales Invoice `on_submit` that builds, submits and links the e-invoice within the document lifecycle
Dedicated `MyInvois Settings` single DocType for environment (preprod/production) endpoints, client credentials, TIN and default classification codes
`MyInvois Document` and `MyInvois Log` DocTypes tracking submission UUID, long ID, validation status, error payloads and the returned QR/validation link
Whitelisted server-side methods for submit, cancel, and status-check callable from the form and the Frappe REST API
Scheduler event that polls submitted documents and syncs `Valid`/`Invalid`/`Cancelled` status without manual checking
Cancellation flow that respects the LHDN 72-hour cancellation window and writes an auditable reason back to the document
Consolidated B2C e-invoice generation that batches non-e-invoiced receipts into the monthly LHDN consolidation submission
SST tax mapping layer translating your ERPNext tax accounts to LHDN tax type and classification (MSIC/e-invoice type) codes
Client scripts adding Submit / Check Status / Cancel actions and a live status indicator to the Sales Invoice form
Validation QR code and LHDN validation-link stored on the invoice and available for the print format
Dedicated role profile and permission rules so only authorized finance users can transmit or cancel e-invoices
Structured error surfacing and retry for rejected submissions, with the LHDN error codes logged against the source invoice

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your ERPNext.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

ERPNext Compatibility
—
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
MariaDB 10.6+

About this Product

Malaysia's phased MyInvois mandate under LHDN means every qualifying Sales Invoice now has to be transmitted to a government platform, validated against a strict UBL 2.1 schema, and stamped with a validation link and QR code before it is legally issued. Stock ERPNext v15/v16 produces a perfectly good Sales Invoice DocType and PDF, but it has no concept of MyInvois — no LHDN API client, no UBL mapping for TIN, SST classification codes, MSIC codes or e-invoice type codes, and no way to poll for validation status or handle a rejection. Finance teams end up re-keying every invoice into the MyInvois portal or a spreadsheet, which does not scale past a handful of documents a day and breaks the moment the consolidated B2C deadline arrives.

ECOSIRE builds a dedicated Frappe app that lives inside your ERPNext instance and closes that gap end to end. The app ships a MyInvois Settings single DocType (environment toggle for the LHDN preprod vs production endpoints, client ID/secret, TIN, default classification codes) plus MyInvois Document and MyInvois Log DocTypes that track every submission's UUID, long ID, validation status, and the returned QR/validation-link. A hooks.py doc_events handler on Sales Invoice on_submit builds the UBL 2.1 XML from your invoice, its items, taxes and customer, signs and submits it through the MyInvois API, and stores the response against the invoice — all inside the same transaction boundary so a submission failure surfaces on the document rather than silently.

Technically, the integration is built as a proper Frappe module: whitelisted server-side methods (frappe.whitelist()) handle OAuth2 token acquisition and refresh against the LHDN identity service, UBL generation, submit, cancel and status calls; a scheduler event (scheduler_events in hooks.py) polls MyInvois for documents that are still Submitted and updates them to Valid/Invalid without a human watching. Client scripts add status indicators and a "Submit to MyInvois", "Check Status" and "Cancel e-Invoice" action to the Sales Invoice form. SST tax accounts are mapped to LHDN tax type codes, and a consolidation routine batches non-e-invoice B2C receipts into the monthly consolidated e-invoice that the mandate requires. Everything is permission-gated through a dedicated role profile so only authorized finance users can transmit or cancel.

Because MyInvois behaviour, your chart of accounts, SST setup and item classification are specific to your business, this is a build-to-order engagement, not a marketplace download. After a short scoping call we confirm exact requirements — your entity's TIN/MSIC, tax-code mapping, B2B vs B2C mix, and target LHDN wave — then build against your ERPNext v15 or v16, run UAT on a staging copy connected to the LHDN preprod sandbox, and only cut over to production once your team has validated real documents. Typical delivery is one working week from confirmed scope. You receive the full source code and git repository so you are never locked in.

What you get

  • Installable source code for your build, targeting Frappe/ERPNext v15 or v16
  • Installation and configuration on your instance (LHDN credentials, TIN, SST and classification-code mapping)
  • Technical documentation covering DocTypes, hooks, whitelisted methods and scheduler jobs
  • User guide plus a live training session for your finance team
  • UAT on a staging copy against the LHDN preprod sandbox, with a documented rollback plan
  • Post go-live support window for fixes and questions during initial production use
  • Git repository handover with full commit history so you retain and can extend the code
  • Print format update embedding the MyInvois validation link and QR code on the invoice

Who this is for

Malaysian SME finance lead under the MyInvois mandate

Owns compliance for the company's ERPNext instance and needs invoices validated and submitted to LHDN before the entity's assigned mandate wave, without re-keying into the portal.

Group financial controller with multiple ERPNext companies

Manages several Malaysian entities each with their own TIN and SST setup, and needs per-company MyInvois configuration and consistent, auditable submission across all of them.

ERPNext administrator or Frappe partner

Maintains the deployment and wants a clean, source-available Frappe app with proper DocTypes, hooks and permissions that they can read, extend and upgrade across v15/v16 rather than a black box.

E-commerce / retail operator with high B2C volume

Issues large volumes of consumer receipts and relies on the consolidated monthly B2C e-invoice so individual point-of-sale transactions do not each need a full e-invoice.

How Malaysia MyInvois E-Invoicing for ERPNext Compares

CriterionECOSIRECustom BuildCompetitorERPNext Native
MyInvois / LHDN integrationDirect API integration built into ERPNext with UBL generation and status syncPossible but you design and maintain the whole client from scratchVaries; often a generic connector not tuned to your SST/MSIC setupNone — ERPNext core has no MyInvois awareness
Delivery modelBuild-to-order for your instance, one working week from confirmed scopeYour own dev timeline, typically longer and self-managedInstant install but generic; still needs mapping workAlready in the box, but does nothing for MyInvois
Fit to your SST / classification codesMapped to your accounts during scoping and UATWhatever you build and maintain yourselfGeneric defaults you configure and hope matchNot applicable
Consolidated B2C supportMonthly consolidation routine includedMust design and build the batching logicSometimes present, often limitedNot available
Source code ownershipFull source and git repository handed overYou own it because you wrote itUsually closed source or subscription-lockedOpen source ERPNext, but no relevant feature
ERPNext v15/v16 fitBuilt and tested against your exact versionDepends on your team's Frappe expertiseMay lag on newer versionsNative to the version, no e-invoicing
Support after go-livePost go-live window plus optional maintenance for LHDN changesYou support it internallyVendor support tier, variable qualityCommunity support only
Ongoing LHDN schema updatesCan be scoped as maintenance to track LHDN wavesYour team tracks and patches each changeDepends on vendor's update cadenceNot applicable

Frequently Asked Questions about Malaysia MyInvois E-Invoicing

How long does delivery take?

This is a build-to-order engagement. After a short scoping call to confirm your TIN, SST mapping, B2B/B2C mix and target LHDN wave, typical delivery is one working week from confirmed scope. We build against your ERPNext version, run UAT on staging against the LHDN preprod sandbox, and cut to production only after your team validates real documents.

Is this an instant download from a marketplace?

No. It is not an existing Frappe Cloud Marketplace app you can download and self-install. ECOSIRE builds, installs and configures it specifically for your ERPNext instance and your LHDN setup, then supports it. You receive the full source code and git repository at handover.

Which ERPNext versions are supported?

We build for Frappe/ERPNext v15 and v16. During scoping we confirm your exact version and branch so the app's DocTypes, hooks and dependencies match your deployment.

How does it connect to LHDN MyInvois?

The app talks directly to the MyInvois API using OAuth2 client credentials, generates the UBL 2.1 e-invoice from your Sales Invoice, submits it, stores the returned UUID, validation link and QR code, and a scheduler job polls until LHDN returns a Valid or Invalid status. We can point it at the preprod sandbox for UAT and switch to production via the MyInvois Settings DocType.

Does it handle consolidated B2C invoices and cancellations?

Yes. It supports the monthly consolidated B2C e-invoice that batches non-e-invoiced consumer receipts, and it supports cancellation within the LHDN 72-hour window, writing an auditable reason back to the source document.

What about support and updates after go-live?

Every build includes a post go-live support window for fixes and questions during initial production use. Because MyInvois requirements and LHDN schemas evolve in waves, we can additionally scope an ongoing maintenance arrangement to keep the app aligned with LHDN schema and API changes. Since you hold the git repository, your own team can also extend it.

Can it handle multiple companies each with their own TIN?

Yes. Configuration is driven by DocTypes rather than hard-coded values, so per-company TIN, SST accounts and classification codes can be set up. We confirm your exact multi-company structure during scoping and build the mapping accordingly.

Request a quote

Malaysia MyInvois E-Invoicing

A build-to-order ERPNext app that validates and submits your Sales Invoices to Malaysia's LHDN MyInvois platform in real time, generating LHDN-compliant UBL e-invoices with automated status sync, cancellation, and consolidated B2C support. ECOSIRE builds, installs, and supports it for your instance.

  • Direct LHDN MyInvois API integration with OAuth2 client-credential token acquisition and automatic refresh against the LHDN identity service
  • UBL 2.1 e-invoice XML generation mapped from the ERPNext Sales Invoice, Sales Invoice Item and Customer DocTypes per the LHDN schema
  • `hooks.py` `doc_events` handler on Sales Invoice `on_submit` that builds, submits and links the e-invoice within the document lifecycle
  • Dedicated `MyInvois Settings` single DocType for environment (preprod/production) endpoints, client credentials, TIN and default classification codes

Request a Quotation

Tell us about your Malaysia MyInvois E-Invoicing requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.