Setting Up MyInvois (LHDN E-Invoicing) for Your Café in 30 Minutes
A 6-step MyInvois setup walkthrough for Malaysian café and F&B owners — sandbox first, production second, common pitfalls and how to avoid them.
LHDN’s MyInvois rollout is now the most common “new thing” small Malaysian F&B operators ask us about. It’s less scary than it looks. Here’s how to get a café compliant in about half an hour.
What MyInvois actually is
MyInvois is LHDN’s national e-invoicing platform. Every eligible business must submit invoices to LHDN through MyInvois, which validates them, returns a unique IRBM number, and stores them centrally. Customers can then view the invoice on the MyInvois portal.
For a café, “invoice” in practice means a structured record of each transaction (or daily summary, depending on your ruling). Your POS submits the record; LHDN validates; the printed receipt becomes the consumer-facing artefact while the structured record sits in MyInvois.
What you need before you start
- Your business’s TIN, BRN (or SSM number), and MSIC code.
- A registered MyInvois account at mytax.hasil.gov.my.
- A POS that supports MyInvois client credentials and can submit invoices via the LHDN API.
- (Optional but recommended) SST registration number if you charge SST.
The 30-minute setup, step by step
1. Register on MyInvois (5 minutes)
Log in at mytax.hasil.gov.my using your company’s SSM credentials. Navigate to the MyInvois section and complete the company profile. You’ll see a sandbox mode (use this for every test until you’re sure) and a production mode (flip when you’re ready to go live).
2. Generate client credentials (5 minutes)
Under Settings → Integration, generate an API client ID and client secret. Treat the secret like a password — once you save it in your POS, rotate it if you ever suspect it’s leaked.
3. Wire credentials into your POS (5 minutes)
In Timeo, you’d go to Settings → E-invoice, paste your TIN, BRN, MSIC code, and the client ID + secret. Select sandbox mode first. Timeo encrypts the secret at rest (envelope encryption) so the value in the database isn’t readable even with full admin access.
4. Submit a sandbox invoice (5 minutes)
Ring up a fake transaction, hit submit. The POS posts the structured record to MyInvois sandbox; you should see a returned IRBM number. If you don’t, check the API logs in your POS — the most common errors are wrong TIN format, missing MSIC code, or SST included on a tenant that’s not SST-registered.
5. Verify in MyInvois portal (5 minutes)
Log into mytax.hasil.gov.my, navigate to the sandbox invoices view, confirm your test invoice appears with the right amounts and the correct buyer details.
6. Flip to production (5 minutes)
Regenerate production-mode credentials, swap them into your POS, change the mode toggle to “production”, and submit a real transaction. Check it lands in the production view.
Common pitfalls (and how to avoid them)
- MSIC code mismatch:the code on your SSM record must match what you submit. Look it up at the start, don’t guess.
- SST included on a non-SST tenant: only SST-registered businesses include the SST line. Including it without registration is a validation reject.
- Token expiry:the MyInvois OAuth token has a fixed TTL. Your POS should refresh automatically; if you see 401s after a long quiet period, that’s the cause.
- Receipt is not the invoice:your printed receipt can stay as-is; the structured submission to MyInvois is the legal artefact. Don’t try to reformat your receipts to look like government invoices.
You don’t have to do this alone
Timeo ships MyInvois support as a tenant setting and handles the sandbox-vs-production flip, credential rotation, and token refresh for you. See how the Timeo F&B platform handles compliance →