Short answer: e-invoice for homestay in Malaysia is compulsory only once your business passes the threshold, which LHDN raised to RM3 million in annual sales from 1 September 2026. Most homestay operators are below it. Your guests, however, still ask for invoices for expense claims, so you need a clean way to issue one either way.
We run 100+ homestay units in Johor Bahru and Desaru, and we built the software we use, AntlerHub, which we now sell to other operators. So read this as an operator writing about a real workflow, not as tax advice. Where the rules are unclear, we say so and send you to LHDN or your tax agent.
Do homestay operators in Malaysia have to issue e-invoices?
It depends on your annual sales, not on whether you rent rooms.
| Your situation | What the rules say (as of November 2026) |
|---|---|
| Annual sales below RM3 million | Not required to implement e-invoicing. LHDN announced the new threshold on 30 August 2026, effective 1 September 2026, and said more than 1.1 million businesses qualify (The Star, 30 August 2026) |
| Below RM3 million, but part of a group | Practitioner guides say the exemption does not apply if a related company, holding company or joint venture is at RM3 million or more. Ask your tax agent how your group is counted |
| RM3 million and above | You are in. Reported relaxation period for the later phases runs to 31 December 2027 (third-party guides; check LHDN's own timeline) |
| Exempt, but you want to join voluntarily | Allowed and encouraged by LHDN |
Two warnings. First, the threshold has moved twice in under a year (RM500,000, then RM1 million, then RM3 million), so check it every year and do not rely on an old blog post, including this one. Second, the threshold counts your business's sales. An operator who manages other people's units and books the room revenue may be counting far more than the operator's own fee. How your revenue is counted is a question for your accountant, not your PMS.
The tourism tax is a separate thing. Airbnb and similar platforms collect the RM10 per night tourism tax for bookings they handle; we covered that in Airbnb tourism tax in Malaysia. Registration questions are in do you need SSM for a homestay.
Which e-invoice rules actually affect a homestay?
If you are inside the mandate, five rules matter day to day:
| Rule | What it means for a homestay |
|---|---|
| Consolidated e-invoice | Guests who do not ask for an invoice can be grouped into one monthly e-invoice using the general public TIN EI00000000010, submitted within 7 days after the month ends (as reported by guides) |
| RM10,000 single-transaction rule | From 1 January 2026, any single transaction above RM10,000 needs its own e-invoice. A long stay, a group booking or a corporate block can cross this |
| Guest asks for an invoice | That guest needs an individual e-invoice with their own details, not the consolidated one |
| 72-hour window | A validated e-invoice can be cancelled within 72 hours. After that, you fix it with a credit note, not by deleting it |
| Penalties | Each failure is an offence under section 120(1)(d) of the Income Tax Act, RM200 to RM20,000 or up to six months, as summarised by guides |
We could not find LHDN guidance that names homestays or short-term rentals specifically, or says accommodation can never be consolidated. If your business depends on that answer, get it in writing from your tax agent.
Why do guests ask a homestay for an invoice at all?
Almost always an expense claim. A Singapore engineer on a two-week project, a team on a site visit, a family whose company pays for relocation. That changes who the invoice is addressed to: often the employer, not the person who slept in the room.
This is where most homestay invoices go wrong. The operator types the guest's name, the claim is rejected because it should say the company, and the invoice has to be redone. With e-invoicing switched on, redoing it is no longer free: after 72 hours it needs a credit note.
How does our system handle a guest's invoice request?
Every guest gets a portal link for their stay. One tile there is "Request invoice". This is how it works, taken from our own code rather than a feature list:
- Step 1, bill-to. The form is pre-filled from the guest's portal details, but every field can be changed, because the bill-to is often an employer.
- Five party types. Malaysian individual, Malaysian company, foreign individual, foreign company, exempted person. Each type only offers the ID types it can have: a Malaysian company only gets a registration number, a foreign individual only gets a passport. A form that allows an impossible combination fails later, after the guest has gone home.
- Checked before Confirm. Every limit our accounting system (Bukku) enforces is checked in the browser, with a sample answer next to the field. A real case taught us this: a guest typed a company number the way letterheads print it, new 12-digit SSM number with the old one in brackets. The accounting system refused it, the request sat frozen, and nobody noticed for two days. Now the form spots the new number, asks the guest to confirm dropping the old one, and only then sends it.
- The tax number is optional. If a guest types a TIN that is not 11 to 14 characters, it is left out rather than taking the whole invoice down.
- Step 2, summary, then Confirm. After Confirm the request is frozen, because the invoice gets a real document number the moment it is created and cannot be edited, only voided and reissued.
- Step 3, the invoice. It is raised straight away, so the guest does not wait for someone in the office.
If the accounting system refuses the guest's own data, the request goes back to the guest with the refused field marked, and they send it again. If it fails for our reasons (a timeout, a payout being posted at that moment), the guest sees "being prepared", the system retries every 15 minutes for up to 14 days, and after an hour it is reported to our own team as a job.
One more detail that matters on a tax document: the same name with a different ID number is treated as a different party, and a person and a company are never merged. A guest who bills himself on one stay and his employer on the next gets two correct invoices, not one wrong one.
What should an invoice for an Airbnb or Agoda booking say?
This is the part almost nobody explains. When a guest books through a platform, you never see what the guest paid. The platform charges its own guest service fee, keeps it, and does not tell you the amount.
So our invoice for an OTA booking states the stay as it reaches us:
| Line | Amount |
|---|---|
| Accommodation, dates and nights | Room charge the platform bills on our behalf, before its commission |
| Less: platform commission | Shown as its own line, when the platform reports it |
| Note on the invoice | The room charge is not what you paid the platform; the platform's guest service fee is not disclosed to us; check your platform receipt for the total |
If the platform does not report the commission at all, the invoice only states the amount we received and says so. It is less satisfying than a round number, but it never disagrees with the guest's own receipt without explaining why.
The invoice date is the booking date when we have it. If we only know the day we pulled the booking from the channel, the screen says the date fell back, rather than printing it as if it were exact.
And direct bookings?
A direct booking has no platform in between, so the invoice is simply what the guest paid us, with no commission sentences. Our system raises a cash invoice for every paid direct booking, whether or not anyone asks, because the payment has to be recorded anyway. If the guest later asks for an invoice to their company, that invoice is reissued to the new bill-to. The new contact is checked first, so a refused company number cannot leave the stay with no invoice at all.
More on how direct booking money moves is in OTA payout reconciliation and how the owner statement closes the month.
Do security deposits need an e-invoice?
A refundable deposit is not a sale, so our system records it with no service tax and nothing for MyInvois. A forfeited deposit is different: once you keep it, it is income, so that document is marked to go to MyInvois when the company has e-invoicing switched on. If you handle deposits by hand, this is the line people miss.
Before our system voids or changes an accounting document, it checks two things: whether it was already sent to LHDN more than 72 hours ago, and whether the accounting period is locked. If either is true, it stops and tells you to issue a credit note, instead of half-changing something it cannot take back.
Where our system is weaker
- Bukku only. Guest invoices are raised in Bukku. If you use another accounting system, the portal shows "message us" instead of the form. Other systems are not fully supported for this.
- We do not submit to LHDN ourselves. AntlerHub creates the invoice in Bukku; whether it goes to MyInvois depends on your Bukku e-invoice setting.
- OTA invoices cannot show the guest's full total, because the platforms do not give it to us.
- The rules above are what we read in November 2026. We are not your tax agent.
What should you do this month?
- Check your annual sales against the RM3 million line, and ask your agent how managed units and related companies are counted.
- Decide one way to issue guest invoices, and who checks the bill-to before it is final.
- Ask whoever handles your bookings to flag stays above RM10,000.
- Make sure forfeited deposits are recorded as income.
- If you are buying software, ask the vendor to show you a guest invoice request from start to finish, including what happens when a company number is wrong. Pricing for AntlerHub is per unit on the pricing page.
This article is general information, not tax advice. Check the current rules on the LHDN MyInvois site or with your tax agent.