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 $499.00 USD; request a quote for a scoped proposal.

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.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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.
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
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 2-4 weeks from confirmed scope. You receive the full source code and git repository so you are never locked in.
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.
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.
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.
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.
Buy the license on ecosire.com and download the Malaysia MyInvois E-Invoicing for ERPNext app ZIP from your account dashboard.
Extract the ZIP into your bench's apps folder, or run `bench get-app` with the path to the extracted app.
Run `bench --site SITE_NAME install-app APP_NAME` followed by `bench migrate` to install Malaysia MyInvois E-Invoicing for ERPNext and apply its schema.
Open the ECOSIRE License settings on your site and activate your license key. Requires the free ecosire_connect and ecosire_license_client apps.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| MyInvois / LHDN integration | Direct API integration built into ERPNext with UBL generation and status sync | Possible but you design and maintain the whole client from scratch | Varies; often a generic connector not tuned to your SST/MSIC setup | |
| Delivery model | Build-to-order for your instance, 2-4 weeks from confirmed scope | Your own dev timeline, typically longer and self-managed | Instant install but generic; still needs mapping work | |
| Fit to your SST / classification codes | Mapped to your accounts during scoping and UAT | Whatever you build and maintain yourself | Generic defaults you configure and hope match | |
| Consolidated B2C support | Monthly consolidation routine included | Must design and build the batching logic | Sometimes present, often limited | |
| Source code ownership | Full source and git repository handed over | You own it because you wrote it | Usually closed source or subscription-locked | |
| ERPNext v15/v16 fit | Built and tested against your exact version | Depends on your team's Frappe expertise | May lag on newer versions | |
| Support after go-live | Post go-live window plus optional maintenance for LHDN changes | You support it internally | Vendor support tier, variable quality | |
| Ongoing LHDN schema updates | Can be scoped as maintenance to track LHDN waves | Your team tracks and patches each change | Depends on vendor's update cadence |
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 2-4 weeks 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.
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.
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.
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.
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.
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.
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.
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.