Skip to content

Read the error and tell whose it is

Lesson 2 of 7 in Read a rejection and fix it · about 10 minutes · for the whole-system operator — you run the books.

Play this lesson as slides — one slide per step, with the same narration. The full text of every step is on this page.

This lesson is for you if you run the books at GadgetSphere and you are looking at a failure message you do not recognise. Error text in e-invoicing comes from four different places, and each place tells you something different about what went wrong and who can fix it. In about ten minutes you will learn to tell them apart at a glance, and you will meet the handful of LHDN codes that, on the one customer we have measured, accounted for almost every rejection.

Step 1 — Recognise BigLedger’s own refusal

After this step you can read a held document’s message correctly. Open any row in a pool and you will find a Validation Error panel. What it contains is a list of fields: the supplier’s tax number is missing, the buyer’s address is missing, the contact number is missing. There is no code, and there is no message from LHDN, because LHDN was never asked. That is the signature of BigLedger’s own completeness check, and the panel is unusually kind — it names every field it wants rather than stopping at the first one. Work down the list, fill in all of them, and the document has a chance of going out. Fill in half and the same panel comes back shorter.

Screen: a pool row opened with its Validation Error panel listing each missing counterparty field

Reference: E-Invoice Validation Rules & Troubleshooting — The two kinds of failure

Step 2 — Recognise LHDN’s rejection

After this step you can read a rejection properly, including the part that is hidden. An Invalid e-invoice carries a Validation Error table, and each line of it has three parts: a code, the property the code is complaining about, and a message. The property is the half people ignore, and it is often the fastest route to the answer — a currency complaint pointed at the target currency property tells you where to look before you have decoded anything. Messages are frequently too long for the column and are cut off, so hover one to read it in full rather than guessing from the first few words. The code is the thing to write down; the next lesson sorts the codes into families.

Screen: the Validation Error table on a rejected e-invoice, showing a code, the property it names and a truncated message being hovered

Reference: E-Invoice Validation Rules & Troubleshooting — 1. Wrong currency setup on foreign-currency invoices

Step 3 — Recognise a failure to send

After this step you will stop hunting for a code that does not exist. When the send itself fails, the text lives on the submission queue row, in a field called the request error, and it is not an LHDN validation message at all. It reads like plumbing, because it is plumbing: a connection problem, a rejected call, or the message that the access token is not available. That last one means the authorisation you granted BigLedger on the MyInvois portal has lapsed or the process that refreshes it has stopped, and no amount of editing a customer will help. Remember too that this text is the only record of the attempt, because a failed submission writes nothing to Submission History.

Reference: My E-Invoice Admin Applet — Troubleshooting

Step 4 — Recognise a button turning you down

After this step you can tell a refusal from a rejection, which are easy to confuse because both appear as red text after you press something. BigLedger itself refuses certain actions and says so in plain sentences. Save and Resubmit is refused on an e-invoice that LHDN has already validated, telling you to cancel it first, and refused on a submitted one, telling you to wait for the validation response. Moving a large sale into the Batch Pool is refused because a transaction of ten thousand ringgit or more cannot be consolidated. A cancellation request is refused once seventy-two hours have passed since validation. None of these is a data error. Each is a rule, and the fix is to choose a different route.

Reference: My E-Invoice Admin Applet — 5. Fixing an Invalid e-invoice from To IRB E-Invoice

Step 5 — Read a code as a family, not as a number

After this step you will stop trying to memorise a code list and start sorting codes into families, which is what actually saves you time. Take one to see the shape. A rejection saying the identification number is not a valid national identity number is not really about the number: it is usually a foreign customer keyed as Malaysian, and it is fixed on the customer record rather than on the e-invoice in front of you. Every code works that way. It names a symptom and points at a record. There are five families of code, and one more family that produces no code of its own, your own company record. The next lesson walks all six, and the page below lists the codes so you do not have to hold them.

Reference: E-Invoice Validation Rules & Troubleshooting — Get the buyer’s identity right — this is where most rejections come from

Step 6 — Remember what no error will ever tell you

After this step you know the limit of every message in this lesson. LHDN checks structure, identities and codes. It does not check your accounting. An e-invoice can pass every rule, come back Valid, carry a proper identifier and a QR code, and still be addressed to the wrong customer, priced wrong, or a duplicate of one you already sent. No validation error will ever be raised for any of that, because nothing is looking for it. That is why the month-end reconciliation exists alongside the Invalid list, and it is why a clean status column is necessary but not sufficient. Silence from LHDN means the document is well formed, not that it is right.

Reference: Validation and clearance — What it is not

How the steps fit together

    flowchart TD
  s1["Step 1 — Recognise BigLedger's own refusal"]
  s2["Step 2 — Recognise LHDN's rejection"]
  s3["Step 3 — Recognise a failure to send"]
  s4["Step 4 — Recognise a button turning you down"]
  s5["Step 5 — Read a code as a family, not as a number"]
  s6["Step 6 — Remember what no error will ever tell you"]
  s1 --> s2
  s2 --> s3
  s3 --> s4
  s4 --> s5
  s5 --> s6
  

Check yourself

Three to five questions on what you just heard. Every correct answer links to the page that makes it correct, so you can check the source, not just the mark.

1. A document in the Individual Pool shows a panel listing the buyer's address and contact number. What kind of failure is it?


2. An LHDN validation error line is cut off in the column. How do you read the rest?


3. Save and Resubmit comes back saying the e-invoice is already validated. What is this?


4. Which message tells you the problem is authorisation rather than data?


5. An e-invoice comes back Valid. What does that prove?


Answer key
  1. BigLedger's own completeness check — nothing was sent to LHDNE-Invoice Validation Rules & Troubleshooting — The two kinds of failure
  2. Hover the message to see it in fullE-Invoice Validation Rules & Troubleshooting — 1. Wrong currency setup on foreign-currency invoices
  3. A rule BigLedger enforces — a validated e-invoice must be cancelled firstMy E-Invoice Admin Applet — 5. Fixing an Invalid e-invoice from To IRB E-Invoice
  4. Access token not available, on the submission queue row's request errorMy E-Invoice Admin Applet — Troubleshooting
  5. That its structure, identities and codes satisfied LHDN — nothing about your accountingValidation and clearance — What it is not
This is a self-check. Your answers are marked in your browser and stay there — nothing is sent anywhere, nothing is recorded, and the marking is readable in the page source, so it is not a credential. Open the answer key at any time.

Next lesson: The error families and the record behind each · Back to the course

Last updated on