Did this invoice reach LHDN? Trace one document from FINAL to LHDN
Someone has asked you “did that invoice reach LHDN?”. Usually it is a customer who wants the validated e-invoice, sometimes an auditor who wants last month’s submissions in a file. By the end of this page you will have found the document’s e-invoice record and read its status. You will also know which of four answers to give: it is valid and here is the proof, it was rejected and is being fixed, it has not been sent yet, or it is inside a consolidated e-invoice. Allow about five minutes the first time and one minute after that.
Why each record exists, and what it holds, is explained in E-Invoice Submission Mechanics. This page is the job.
Meet GadgetSphere
GadgetSphere Distribution Sdn Bhd (GSD) issued 310 invoices to corporate buyers in March 2026, each
submitted individually. A buyer’s accounts team writes in: they never received the validated
e-invoice for invoice GSD-INV-2603-0187, RM 18,400, dated 12 March. Their auditor will not accept the
invoice without it. That is the document we trace.
Before you start
- Access to the My E-Invoice Admin applet, with Internal Submission → To IRB E-Invoice and Submission History.
- Your own document number, not the e-invoice’s. The e-invoice record has a running number of its own; you search by Doc No, which carries your invoice number.
- Who is asking, and what they need. A customer needs the validated e-invoice or its LHDN reference. An auditor usually needs a month’s list. Ask before you start, because the last step differs.
Step 1: Look at the document first
The document tells you whether an e-invoice record exists at all.
The document’s own applet, e.g. Sales Invoice → the invoice → its To IRB fields.
A walk-in cash bill is usually reported inside a consolidated e-invoice and has no record of its own. If the document is a cash bill and Step 2 finds nothing for it, go to Step 3.
Open GSD-INV-2603-0187. If its To IRB reference is filled in, a record exists: go to Step 2.
If it is blank, BigLedger has built no record and sent nothing, and the invoice is waiting somewhere before LHDN:
- Check the three pools in My E-Invoice Admin. An invoice to a corporate buyer whose TIN was never captured waits in the Individual Pool, and nothing moves it from there but a person.
- If it is in no pool, compare dates: was the company switched to
ENABLEDafter this invoice was finalised? A document finalised while its company was notENABLEDnever entered e-invoicing, and switching the company on later does not pick it up. Switch the company on, then ask BigLedger support to push the document into e-invoicing, giving them the company code and the document numbers.
The mistake to avoid: telling the customer “it is with LHDN” because the invoice is FINAL. FINAL is your side; a blank To IRB reference means LHDN has never seen it.
Step 2: Find the record and read its status
The status says which of the four answers you will give.
My E-Invoice Admin → Internal Submission → To IRB E-Invoice.
Search Doc No GSD-INV-2603-0187 and read the status:
| Status | What it means | What you do |
|---|---|---|
Valid | LHDN accepted it. The validation link and QR code are on the record | Where the buyer block has an e-mail address and the company sends e-mail to buyers, the customer’s copy went out from the printable queue. The Email Dashboard shows whether it went. To send it again, use Resend Email, a tab the record shows once it is Valid |
Invalid | LHDN rejected it, and its reasons are in the record’s validation response | Fix the cause, then Save and Resubmit. That puts the same record back in the queue (Validation rules) |
IN_QUEUE | BigLedger holds the record and LHDN has not seen it | Not an error on its own. Still there the next day: open its row under My E-Invoice Admin → Individual Submission, read Request Error, fix the cause, select the row and press Submit. Nothing retries it for you. If the error is a timeout or a lost connection, look the document up on the MyInvois portal first: the earlier attempt may have reached LHDN, and a second one would send it twice |
Submitted | LHDN has the payload and has not given its verdict yet | Press Refresh on the record if it has read Submitted for days (what each status means) |
Cancelled | A rejection request succeeded: the e-invoice no longer stands at LHDN | Tell the customer, and send the replacement document’s e-invoice once it is valid (Cancel and correct) |
For our invoice the record reads Valid, and the Email Dashboard shows the e-mail was sent on
13 March. Resend it from the record’s Resend Email tab, and put its LHDN reference in your reply as
well, in case the first e-mail was filtered on the buyer’s side.
The mistake to avoid: pressing Save and Resubmit on a Valid record to “send it again”. It is
refused, and it is the wrong tool: resubmitting is for a rejected record, and the e-mail is resent from
the record’s own tab.
Step 3: If it is a cash bill, find the consolidated e-invoice it is inside
A walk-in receipt usually has no e-invoice of its own, and the answer is the consolidated one.
My E-Invoice Admin → Monthly Report → Discrepancies Report → a consolidated line.
A GS cash bill will not have its own record. Its Doc No leads to a match-link row, one per receipt
inside a consolidated e-invoice. That row names the consolidated e-invoice the receipt was reported in.
Open the consolidated line in the Discrepancies Report drill-down to see the receipts inside it.
Whoever works with the API can look the receipt up in the link records directly.
The customer gets the consolidated e-invoice’s LHDN reference, not one of their own. If they need an individual e-invoice now, the route is in The shopper who comes back for their own e-invoice.
Step 4: Read what was sent
The submission history is the proof of what LHDN accepted.
My E-Invoice Admin → Internal Submission → Submission History.
Search the same Doc No. The request body is the exact payload BigLedger sent, and the response is LHDN’s exact answer. This is the row to quote when you open a ticket with LHDN or with BigLedger support.
Only a successful submission writes a history row. If the record still reads IN_QUEUE the next
day and has no history row, it has not been accepted. The reason is on its Individual Submission
row, as Request Error, which is where Step 2 sent you.
Step 5: Hand over the answer, and keep a copy
BigLedger stops at the record. Choosing what to send, and to whom, is your part of the job.
- A customer: send the validated e-invoice (the record’s printable, with its QR code), or its LHDN unique reference number. If it was rejected, say so, and say when the corrected one will go.
- An auditor, for a month: filter To IRB E-Invoice to company
GSDand March, open the Export tab, choose CSV (or PDF for the printables, zipped), and wait for the row to showDONE. Download it from the row. Each export kind runs one job at a time, so a second click while the first builds is refused with a message. The CSV carries the LHDN document identifier and unique reference number. The validation link is not a column: it is on each record. - A wrong invoice LHDN has already validated: cancelling is possible only within 72 hours of the validation time stored on the record. Read that time first; after it, the correction is a credit note (Cancel and correct).
The CSV shows each record as it is now, so a record cancelled later reads Cancelled even if it was
Valid at month-end. If what was true on a given day matters, export on that day and file the copy
with the request.
What success looks like
Take yesterday’s largest individual invoice. In under a minute you open its record from Doc No, the
status reads Valid, the validation link on the record opens LHDN’s page for it, and the latest
Submission History row for it is the submission the record holds. Take one cash bill from last month: you can name the
consolidated e-invoice it is inside and give its LHDN reference.
Common mistakes
| What people do | What actually happens | Do this instead |
|---|---|---|
| Search To IRB E-Invoice by the e-invoice’s running number, expecting the invoice number | They are different numbers, so nothing matches | Search by Doc No |
| Fix the customer’s TIN and wait for the e-invoice to update | Nothing updates: the record is a frozen copy taken when it was built | Save and Resubmit on the pool row or the rejected record |
| Search Submission History for a failed send | Nothing to find: a failed attempt writes no history row | Open its Individual Submission row and read Request Error |
| Search Submission History for a document still in a pool | Nothing to find: the document has not been sent | Search the pools (Step 1) |
| Give an auditor last month’s CSV exported today, as the month-end position | Records cancelled since then read Cancelled | Export on the day that matters, and keep the file |
Related documentation
- E-Invoice Submission Mechanics: what each record is, and why it behaves as it does
- My E-Invoice Admin applet: every screen and button
- Understanding e-invoice statuses: what each status means, and when to wait or act
- The month-end e-invoice cycle: the routine that uses the same exports for a whole month