Skip to content

E-Invoice & PEPPOL Guides

Everything you need to report your sales to LHDN through MyInvois and to deliver documents over the PEPPOL network — from first-time setup, through the monthly cycle you will run for the rest of your working life, to what happens when something goes wrong.


What happens after you press Save

Almost every e-invoicing question turns out to be a question about this picture. Nothing is sent at the moment you finalise a document: it is queued, and background jobs route it, submit it and collect LHDN’s answer. Where a document has stopped tells you what to fix.

What happens after you finalise a documentA finalised sales or self-billed purchase document enters the posting queue. BigLedger then routes it on its submission type, its amount and whether the mandatory fields are complete: incomplete documents are held in the Individual, Single General or Batch pool, complete ones go to the submission queue, and Batch Pool documents are swept into the monthly consolidation by the 7th. The submission queue and the consolidation both call LHDN MyInvois, one document per call, and LHDN returns Valid or Invalid.You finalise a sales documentPosting queueSubmission type · amount · mandatory fieldsPools — nothing moves on its ownSubmission queueMonthly consolidationLHDN MyInvoisInvalidValidor a self-billed purchase documentqueued, not sentone document per LHDN callby the 7th · buyer is General Publicvalidates, then answersfix the record, then Save and ResubmitQR code, printable e-mailed to the buyerIndividual Pool — buyer details missingSingle General Pool — one attempt firstBatch Pool — waiting for consolidationheldcompleteSave and Resubmit

A document is either held — sitting in one of three pools because something is missing — or on its way. Held documents never move on their own.


Get started

New to e-invoicing? Three terms do most of the work across every guide here, and each is explained once on its own short page: consolidated e-invoices · pools and queues · validation and clearance. Two minutes each, and the guides below stop needing to define anything.

Then read these three, in this order.

What setup covers:

  • Authorising BigLedger as your e-invoice intermediary on the MyInvois portal
  • Turning e-invoicing on for each company, before you finalise any documents
  • Your company’s own identity block — tax number, registration number, industry code, address, phone
  • Customer and supplier identity: tax number, identity type and value, and an address flagged for e-invoicing
  • Item classification codes, units of measure and tax types on your items
Do MyInvois first — it is what Malaysian tax compliance requires. PEPPOL is a separate delivery channel to a trading partner, set up alongside it rather than instead of it; come back to PEPPOL Configuration once MyInvois is running, and only if a trading partner has asked you for PEPPOL delivery.

Every day

Once you are set up, e-invoicing sits inside your normal sales and purchasing work:

  1. Create sales invoices and credit notes as usual.
  2. Finalise them. BigLedger does not submit at the moment you press Save — a finalised document is queued, and a background processor sends it. Everything after Save happens in the background, which is why an e-invoice is not at LHDN the second you look for it.
  3. Check the status of yesterday’s documents on Internal Submission → To IRB E-Invoice.
  4. Fix anything marked Invalid and resubmit. That is the whole daily loop, and it is entirely about the documents you issue.

The purchase side is not a daily task, and it is not automatic. Checking that your purchases have a validated supplier e-invoice behind them is a monthly job with a large manual component: BigLedger can pair the supplier documents that reach it over PEPPOL or through the OCR e-mail intake, but a supplier e-invoice filed with LHDN and sent to you as an ordinary PDF never reaches BigLedger at all.

Every week

Two of the three pools never empty themselves, and no pool ages its rows or warns you when one has been sitting too long — so unless you look, nothing tells you they are filling up. (There is one optional e-mail: a scheduled job can send the company a CSV of Individual Pool rows whose last attempt failed. It is switched on per tenant, it does not cover rows that have simply never been completed, and there is no equivalent for the Single General Pool. Ask your BigLedger contact whether you have it; do not plan around it.)

  • Open the Individual Pool and the Single General Pool. Every row is a sale you have not reported. Chase the buyer’s details or move it somewhere it can still be reported.
  • Filter the Batch Pool for rows marked processed / failed. Those are stranded: the monthly consolidation only sweeps unprocessed rows.

Every month

The 1st to the 7th is the busiest week in e-invoicing: last month’s consolidated e-invoices have to reach LHDN by the 7th, and everything that failed has to be found and fixed before then.


When something goes wrong

The issues that come up most often, and what to do about each:

ScenarioWhat is actually happeningHow to handle it
Buyer identity rejectedA foreign customer keyed as Malaysian, a national identity number stored with dashes, or a registration number in the wrong fieldRegistration number for a company, Malaysian or foreign; passport for an individual who is not Malaysian; national identity number as 12 digits with no dashes — fix it on the customer record, not on the e-invoice
Line rejected on its codesNot the tax rate, and not a blank field either — a blank classification, unit or taxable type is filled in for you before anything checks, so none of them can be reported missing. What is rejected is a code that is present and wrong, above all classification 004 on an individual e-invoiceSet a real classification code on the item; never use 004 outside a consolidated e-invoice. The taxable type is not yours to set at submission time — it is derived from the line’s tax amount (how)
Missing mandatory fieldsThe document was never submitted; it is sitting in a poolComplete the buyer’s tax number, identity and address, then Save and Resubmit
A row that has not moved since yesterdayIt is queued, not retrying — nothing picks a stalled row back up on its ownSelect it and press Submit. If the same rows stall again, raise a support request. What each status means, and when to wait
The same sale at LHDN twicePossible, and it does happen — but repeated document numbers are more often a sales invoice and a self-billed purchase invoice sharing a numberFind real duplicates by reconciling, not by reading Submission History. Inside 72 hours you can cancel one; after that it is a credit note
A PEPPOL document is rejected by the recipientThe receiving access point turned down the message — most often the receiver is not registered for that document type, or the purchase-order / sales-order number was not carried onto the invoice as its order referenceConfirm the receiver’s participant ID, make sure the source document carries its PO or SO number, then resend from Internal Submission → Queue
Your buyer says they rejected an e-invoice and nothing changedA rejection raised on the MyInvois portal, rather than through BigLedger’s buyer portal, never reaches BigLedger at allCheck the e-invoice on the portal yourself and act on it here. Ask buyers to use the BigLedger portal, where the request lands in your Rejection Requests list
Deadlines are real. Consolidated e-invoices for a month must be validated by the 7th of the following month, and a validated e-invoice can only be cancelled within 72 hours of validation. Both clocks run whether or not anyone is watching them.

Reporting

Three places tell you where you stand, and they do not say the same thing:

  • Internal Submission → To IRB E-Invoice — one row per e-invoice with the live LHDN status (Valid, Invalid, Submitted, IN_QUEUE). Export this one when you need a work list.
  • Internal Submission → Submission History — an archive of what each submission looked like at the moment it was sent. It is not the current status, so never filter your Invalid list from here.
  • Monthly Report → Discrepancies Report — compares the documents you finalised against the e-invoices on record, per company and period. This is your self-service reconciliation.

Compliance habits worth building:

  • Watch rejection rates daily during your first months.
  • Keep customer and supplier tax numbers and identity types clean — that one field group causes most rejections.
  • Clear the Individual Pool before your consolidation runs, every month.
  • Reconcile before the 7th, not after it.

Related resources