MY E-Invoice Portal Applet
Watch these as presentations — 4 on this page, slides with narration.
Your customers’ window into your e-invoices: a buyer with portal access looks up a receipt and supplies their TIN to get an individual LHDN e-invoice, sees the e-invoices already issued to them, and asks to reject one within the 72-hour window. An e-invoice request is processed the moment it is submitted; a rejection waits for your approval in My E-Invoice Admin.
Overview
The MY E-Invoice Portal Applet is the buyer’s window into the e-invoice pipeline that the My E-Invoice Admin Applet runs. A customer who has been given portal access signs in, picks the customer account they act for, and can do three things: look up a receipt (by invoice number plus date and amount, or by the PIN printed on it) and supply their TIN and details so that an individual e-invoice is issued for it; see the e-invoices already issued to that account; and raise a rejection request against a validated e-invoice while LHDN’s 72-hour cancellation window is still open. An e-invoice request is processed the moment the buyer submits it — by the same processor a storefront request runs, with no approval step — and every request is logged in the admin applet under Internal Submission → Portal Request. A rejection request is different: it waits in the admin applet’s Rejection Requests until the seller approves it. The portal never calls LHDN to submit a document itself; the e-invoice a request builds goes out on the seller’s ordinary submission run.
myEInvoiceForCustomerAndSupplierApplet). It is a separate applet, not this one under an older name. Its menu is the seller’s operator console: Posting Queue, the pools, Internal Submission, External Reception, Reconciliation, Cancellation and Monthly Report, the same groups as My E-Invoice Admin. This Portal has Account, Request E-Invoice and Rejection Requests. Give your buyers this Portal. For the operator’s screens, see My E-Invoice Admin.Where it fits
| Upstream | This applet | Downstream |
|---|---|---|
| Sales invoices and cash bills finalised in Sales Invoice or POS and still waiting in the admin applet’s Batch Pool, dated in the current calendar month | Buyer finds the pool row, completes the buyer identity, and the request is processed at once | E-invoice built and queued → the seller’s submission run → LHDN; the request logged on admin applet → Internal Submission → Portal Request |
| Validated to-IRB headers for the buyer’s entity | Buyer views them and can request a rejection | Admin applet → Cancellation → Rejection Requests → Cancellation Queue → LHDN |
| Customer master (Customer Applet) linked to a login through the entity-subject login link | The Account menu lists the entities the login may act for | — |
Screens and menus
| Menu | Route | What it shows | Actions |
|---|---|---|---|
| Account → Select User | (toggle in the menu) | The customer accounts (entities) linked to the signed-in login; the selected one scopes every other screen (SessionActions.setSelectedSessionEntity) | Switch account |
| Request E-Invoice | internal-submission-to-irb | Listing of the to-IRB headers for the selected account (e-invoice number, e-invoice date, document number, short code, status); the Request E-Invoice button opens the request form | Request E-Invoice; per row: Export (PDF), Request for Rejection, Submit (save details) |
| Rejection Requests | rejection-request | The account’s rejection requests with requestor / processing / approval status | Update; Process Request |
| Settings | settings/… | Field Settings, Default Selection, Customer Invitations, Webhook, Feature Visibility, Permission Set / User / Team / Role | See Configuration |
| Personalization | personalization/… | Personal Default Selection, Sidebar | — |




Configuration
Before you can use it
| Prerequisite | Where | Why |
|---|---|---|
| Customer logins linked to their entity records | Customer / entity master and the tenant’s user administration (entity-subject login link) | The Account menu is built from getEntitySubjectLoginLinkWithEntity; a login with no linked entity sees nothing. |
| Documents finalised and still waiting in the Batch Pool | Sales / POS applet, admin applet → Batch Pool | The search looks only in the Batch Pool, and only at receipts dated from the first of the current month. A receipt the seller has moved to the Individual or Single General pool leaves the Batch Pool and cannot be found here, and one already consolidated or skipped cannot be requested. |
| E-invoice enabled on the seller company and the admin applet pipeline running | Organisation Applet; see the admin applet page | The request builds and queues the e-invoice; the seller’s submission run sends it. |
| Seller staff read the outcome and approve rejection requests | Admin applet → Internal Submission → Portal Request; Cancellation → Rejection Requests | An e-invoice request needs no approval, so nobody is waiting on it — but a FAILED request on Portal Request needs somebody, and a rejection request does nothing until the seller approves it. Nothing in the portal submits to LHDN. |
Applet settings
The applet has its own Field Settings screen whose eight toggles (Unit Discount, SST/VAT/GST, WHT, Blanket Order, Segment, G/L Dimension, Profit Center, Project) are never saved. Default Selection renders branch and location pickers, but its SAVE saves nothing. No applet setting is read anywhere in the portal. Webhook and Feature Visibility are the shared screens.
Document behaviour settings
Not applicable — the portal has no documents of its own. The one behavioural constant is the rejection Processing Logic list offered to the buyer: REGEN_NEW_EINVOICE, VOID_ORIGINAL_DOC, NEW_REVERSAL_DOC. CANCEL_FOR_EDIT_AND_RESUBMIT — the only logic that works for a consolidated e-invoice — is not offered here; it is available in the admin applet.
Feature visibility / permissions
The applet has no client-side permissions and checks none. What a buyer login can read and write is scoped to the customer account it has selected; the seller-side Customer Invitations screen is scoped the same way.
Fields
Request E-Invoice form (Document Details)
The form has two parts. The search part (two tabs, both starting with Invoice No) finds the receipt; once one is found it shows the receipt’s Invoice Number, Transaction Date, Amount and Currency read-only, and the Profile Info part below it opens, already filled from the selected account’s own record — name, ID, Tax ID, SST number, e-mail, phone and the address marked as its e-invoice address. Until every required profile box is filled the form says Update profile to proceed to request E-Invoice. and Submit stays greyed out.
| Field | Meaning | Required | Notes |
|---|---|---|---|
| Invoice No | The receipt’s number | Yes | Matched whole and exactly against every number the receipt carries — its document number and any reference number the till or sales screen wrote — so a partial number finds nothing. If two receipts match, the form takes the first. |
| Amount, Transaction Date | Second and third search keys | Yes on Search By Date Amount | Must equal the receipt’s amount (to the cent) and date. The search also looks only at receipts dated from the first of the current month, so on 1 October a September receipt is no longer found (read in the source, not run: search one of last month’s receipts once to confirm). A buyer holding last month’s receipt has to ask you; your staff handle it in the admin applet before the month’s consolidation takes it. |
| Pin | PIN printed on the receipt | — | The PIN is not sent. Search on either tab sends the invoice number, amount and date only, so the Search By Pin tab cannot find a receipt by its PIN (read in the source, not run: try one receipt on each tab). Tell buyers to use Search By Date Amount. |
| Name, ID Type, ID No, Tax ID, SST Reg No, Email, Contact No | Buyer identity to put on the e-invoice | All except SST Reg No | Verify TIN checks the Tax ID + ID pair with LHDN; Submit does not wait for it, so press it before Submit and read the hint under Tax ID. |
| Address Line 1–5, Country, State, City, Postcode | Buyer address | Line 1, Country, State, City, Postcode | State is picked from the chosen country’s list. Submit replaces the account’s whole address book with this one address — any other billing, shipping or main address saved on that customer is gone afterwards (read in the source, not run: on a test customer with a shipping address, submit once and look at the customer record). Whoever maintains customer records re-enters a lost delivery address from the last sales document that used it. |
Rejection Request
| Field | Meaning | Required | Notes |
|---|---|---|---|
| Reason | Why the buyer rejects the e-invoice | Yes | Sent to LHDN as the cancellation reason. |
| Remained Hours For Cancellation | 72 minus the hours since the e-invoice was validated | Read-only | Computed in the browser. |
| Processing Logic | What the seller should do after the cancel | Yes for processing | When the window has closed the list is reduced to NEW_REVERSAL_DOC only. |
| System Processing Status, Approval Status | IN-PROGRESS / COMPLETED; APPROVED / REJECTED / ON-HOLD | — | Normally set by the seller in the admin applet. |
Lifecycle and effects
- Search. The portal looks for the receipt only among the seller’s documents still waiting in the Batch Pool and dated this month — not in the other pools and not among e-invoices already submitted. It shows the receipt’s invoice number, date, amount and currency; the reason a receipt is still waiting is not shown to the buyer.
- Submit. The buyer’s identity and address are saved onto the customer’s own record — the
address replacing every address saved there — and the request is then processed at once — the same queue processor a storefront request
runs, with no approval step. It is refused if a request was already made for it or if it is
already inside a submitted e-invoice. For a receipt in the Batch Pool, the document’s submission
type becomes Individual and an individual e-invoice is built with the new buyer details and
queued;
SUCCESSmeans built and queued, not that LHDN has it. Every request, success or failure, is logged on the admin applet’s Internal Submission → Portal Request. If the build fails, the sale is stranded: the Batch Pool row is leftPROCESSED / FAILEDwith the document already Individual, so the monthly consolidation passes it by and it is in neither the consolidated nor an individual e-invoice until the seller acts on the row (admin applet §3). A receipt in the Single General or Individual Pool is never found by the portal’s search, so it never reaches this step. Websites can offer the same step publicly, protected by reCAPTCHA. - View. The listing shows the buyer’s submitted e-invoices; a validated one carries the LHDN UUID and QR link and can be exported as PDF.
- Request for Rejection. Available only within 72 hours of the e-invoice’s validation, as counted in the browser. If a request already exists for the e-invoice, the applet shows request already exists instead. A new request starts as requested and in progress, and appears in the admin applet’s Cancellation → Rejection Requests.
- A rejection raised on the LHDN portal instead of here brings back only its date. The buyer-side rejection this applet creates lands in the seller’s Cancellation → Rejection Requests and follows the normal manual approval path. A rejection the same buyer makes directly on the MyInvois portal does not: no request is created and no queue changes. The next time BigLedger fetches that e-invoice’s details from LHDN it writes the rejection date, without the time, into the e-invoice’s IRB Reject Request Date on the admin applet’s To IRB E-Invoice screen, and tells nobody. If a buyer says they have rejected one of your e-invoices, check the LHDN portal yourself and act on it here.
- Process Request (portal listing) is only selectable for requests that are already
APPROVED,IN-PROGRESSand have a processing logic — that is, after the seller has approved them. The backend checks again before calling LHDN: the e-invoice must beValid, must carry an LHDN document UUID, and must be less than 72 hours past validation. The countdown on screen is a convenience; the backend check is the rule. - Customer Invitations (Settings) is the seller-side twin of the request form: staff find a document, update the customer’s record on their behalf, and the Batch Pool receipt is then sent through the same request processor at once, exactly as in item 2. It works only for a customer account your own login is linked to, and only on a Batch Pool row. For a walk-in buyer with no linked account, complete the buyer on the pool row in the admin applet and use Save and Resubmit instead.
The portal writes the buyer’s entity record, the pool row it processes and rejection-request headers; it never creates documents or journals, and the to-IRB header it may produce goes through the same submission and validation processors as any other.
Related applets
- My E-Invoice Admin Applet — where every portal action is completed: pools, Save and Resubmit, Rejection Requests, Cancellation Queue.
- Customer Applet — the entity record whose TIN, ID and address the buyer completes; corrections made in the portal land on the pool row and, on resubmission, on the entity.
- Sales Invoice (Internal), POS General — where the receipts and their PINs originate.
- Organisation Applet — company e-invoice status and identity used when the seller resubmits.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Search finds nothing although the receipt exists | The receipt is not waiting in the Batch Pool: it was consolidated already, skipped, still in the posting queue, or moved to the Individual or Single General pool; it is dated before the first of this month; the search was run from the PIN tab, which does not send the PIN; or the number, amount or date do not match exactly. | Search again on Search By Date Amount with the full invoice number. If it still finds nothing, the seller confirms where the receipt is in the admin applet and, if it is still waiting, completes the buyer on its pool row and uses Save and Resubmit. A document already inside a submitted consolidated e-invoice cannot be re-issued individually, and BigLedger cannot lift one receipt out of it: a cancellation cancels the whole consolidated e-invoice, and its receipts are not returned to the Batch Pool (admin applet §6). Do not cancel it for one buyer; hand the buyer’s question to whoever handles your tax. |
| Verify TIN fails | TIN and ID type/value do not match LHDN’s record; foreign buyers must use PASSPORT; NRIC must be 12 digits without hyphens; the General Public TIN EI00000000010 is accepted only with a real NRIC. | Correct the pair and verify again; a General Public TIN with a BRN or passport is rejected by LHDN (CF324, CF358). |
| Request submitted but no e-invoice appears | The request is processed at once, so either it failed to build — Portal Request shows it FAILED, and the Batch Pool row is PROCESSED / FAILED with the reason (address, phone 8–20 characters) in Validation Error — or it succeeded and the e-invoice is built and queued, waiting for the seller’s submission run. | Seller: find the request on admin applet → Internal Submission → Portal Request. For a FAILED one, fix the reason on the pool row and follow the admin applet’s PROCESSED / FAILED troubleshooting row — until then the sale is in no e-invoice. |
| Request for Rejection button disabled | More than 72 hours since validation, the e-invoice is not Valid, or a request already exists. | Ask the seller for a credit note e-invoice; check Rejection Requests for the existing request. |
Rejection request stays IN-PROGRESS | Nothing advances it until the seller sets Approval Status = APPROVED and a processing logic, then processes it. | Seller: admin applet → Cancellation → Rejection Requests. |
| Buyer says they rejected an e-invoice, but nothing changed in BigLedger | The rejection was raised on the LHDN portal, not here. There is no inbound path: BigLedger is never told. | Check the e-invoice on the MyInvois portal, then act on it in the admin applet (cancel inside 72 hours, credit note after). Ask buyers to use this portal so the request reaches you. |
| Request processed but LHDN cancel fails with “Passed 72 hours from validation date time” | The backend clock runs from the header’s validation_datetime; the portal countdown is client-side and can be later than the real cutoff. | Credit-note path. |
| Request for a consolidated e-invoice fails with “Can not void the generic document” | VOID_ORIGINAL_DOC chosen; a consolidated e-invoice has no single source document, and this is the only logic that produces that message. LHDN was never called. | Seller re-processes with CANCEL_EINVOICE in the admin applet (not offered in the portal). |
| A consolidated e-invoice reads Cancelled at LHDN with no replacement, after a buyer’s portal request | REGEN_NEW_EINVOICE chosen — the portal offers it, and on a consolidated e-invoice it cancels at LHDN first and only then fails to rebuild. Every receipt inside it is now unreported. | Seller: before approving a portal request, check whether the e-invoice is consolidated and set the logic to CANCEL_EINVOICE yourself. If it has already happened, raise a support request the same day. |