Pular para o conteúdo principal

Localização Odoo Malaysia 2026: configuração SST, MyInvois e LHDN

Configure o Odoo para conformidade com a Malásia: gráfico l10n_my, imposto de serviço SST 6/8%, imposto sobre vendas 5/10%, faturamento eletrônico MyInvois LHDN, EPF/SOCSO/PCB.

E
ECOSIRE Research and Development Team
|4 de maio de 20269 min de leitura1.7k Palavras|

Este artigo está atualmente disponível apenas em inglês. Tradução em breve.

Malaysia replaced the GST system with the Sales and Service Tax (SST) regime in September 2018, and the country has since rolled out one of Southeast Asia's most ambitious e-invoicing programs through the MyInvois platform operated by Lembaga Hasil Dalam Negeri (LHDN, the Inland Revenue Board).

The MyInvois mandate phased in from August 2024 for top-tier taxpayers and expanded to all businesses by mid-2025, making Malaysia a fully e-invoiced economy by 2026. Odoo's l10n_my localization provides the chart of accounts and SST framework, while MyInvois integration requires API connectivity to LHDN's portal.

Key Takeaways

  • LHDN administers SST (Sales Tax 5-10%, Service Tax 6-8%) and corporate income tax (24% standard)
  • MyInvois e-invoicing mandatory since 2024-2025 phases; full coverage by July 2025
  • Odoo l10n_my covers MFRS-aligned chart of accounts and SST taxes
  • MyInvois requires direct API integration with LHDN — UBL 2.1-based JSON/XML format
  • Service Tax expanded scope from March 2024; rate increased to 8% for most taxable services
  • Statutory reports include SST-02 (sales tax), SST-03 (service tax), and Form C (corporate tax)
  • SSM business registration number (12-digit) required on all e-invoices

Malaysia Tax Framework Overview

Malaysia's SST regime distinguishes between two parallel taxes:

  • Sales Tax: Charged on manufactured or imported taxable goods at 5%, 10%, or specific rates. The taxpayer is the manufacturer or importer; subsequent retail sales are not re-taxed.
  • Service Tax: Charged on prescribed taxable services at 8% (raised from 6% in March 2024 for most services; certain services such as F&B, telecom, parking remain at 6%).

Corporate income tax is 24% for resident companies (17% for SME first MYR 600,000 of chargeable income). Personal income tax uses progressive brackets up to 30%.

The MyInvois platform under the Continuous Transaction Controls (CTC) framework requires near-real-time invoice clearance with LHDN. Phased rollout:

PhaseEffectiveThreshold
Phase 11 August 2024Annual turnover > MYR 100 million
Phase 21 January 2025Annual turnover MYR 25-100 million
Phase 31 July 2025All other taxpayers

By 2026, all B2B, B2G, and many B2C transactions must flow through MyInvois.

Required Odoo Localization Modules

ModulePurposeEdition
l10n_myMalaysia chart of accounts (MFRS aligned)Community
l10n_my_ediMyInvois e-invoice integrationEnterprise (Odoo 17+)
l10n_my_ubl_pintUBL 2.1 PINT-MY formatEnterprise
account_reportsSST report templatesEnterprise
hr_payroll_l10n_myEPF, SOCSO, EIS, PCB payrollEnterprise / Custom

Odoo 17.0 introduced native MyInvois support in l10n_my_edi. For deployments on older Odoo versions, integration is built via custom modules calling LHDN's MyInvois APIs (sandbox at preprod-api.myinvois.hasil.gov.my, production at api.myinvois.hasil.gov.my).

Chart of Accounts Setup

Malaysia uses MFRS (Malaysian Financial Reporting Standards), aligned with IFRS. The l10n_my chart provides:

  • 1xxx: Assets (cash, receivables, inventory, fixed assets)
  • 2xxx: Liabilities (payables, SST payable, tax payable)
  • 3xxx: Equity
  • 4xxx: Revenue
  • 5xxx: Cost of revenue
  • 6xxx-8xxx: Operating and other expenses
  • 9xxx: Tax expense

Configure the company record with the SSM Business Registration Number (12-digit format from 11 October 2019), tax identification number (TIN, prefixed with C for companies, IG for individuals), and SST registration number if registered.

SST Configuration

Configure SST tax records under Accounting > Configuration > Taxes:

Tax NameRateTypeNotes
SST Service Tax 8%8%SalesMost taxable services
SST Service Tax 6%6%SalesF&B, telecom, parking, others
Sales Tax 10%10%SalesManufactured taxable goods
Sales Tax 5%5%SalesReduced-rate goods
Sales Tax 0%0%SalesSchedule A exempt
Out of Scope0%SalesNon-SST registered transactions

Sales tax differs fundamentally from VAT — there is no input credit mechanism. The manufacturer pays sales tax to LHDN, and downstream resellers do not reclaim or charge it again (with limited exceptions for designated areas like LMW and FCZ). Configure Odoo so that purchases of finished goods do NOT generate input tax records; only direct manufacturers register and remit sales tax.

# Example service tax check on invoice
def _check_service_tax_applicability(self, invoice):
    """Service tax applies only if seller is SST-registered and service is in Schedule of Taxable Services."""
    if not self.company_id.l10n_my_sst_registered:
        return False
    taxable_codes = ['001', '002', '003', '004', '005', '006', '007', '008', '009']
    for line in invoice.invoice_line_ids:
        if line.product_id.l10n_my_service_tax_code in taxable_codes:
            return True
    return False

MyInvois E-Invoicing Requirements

MyInvois operates as a CTC platform — every invoice must be submitted to LHDN before transmission to the buyer. The flow:

  1. Seller's ERP creates the invoice and submits to MyInvois API in UBL 2.1 PINT-MY format
  2. MyInvois validates structure, tax IDs, totals, and compliance fields
  3. On success, LHDN issues a Unique Identifier Number (UIN) and digitally signs the invoice
  4. MyInvois generates a QR code linking to the validation portal
  5. Seller delivers the validated invoice (PDF + XML) to the buyer
  6. Buyer can reject within 72 hours; otherwise it is deemed accepted

Required fields include seller TIN, buyer TIN (or "EI00000000010" for non-business consumers), SSM number, MSIC industry code, e-invoice type (01-Invoice, 02-Credit Note, 03-Debit Note, 04-Refund Note, 11-Self-billed, etc.), and item-level tax breakdown.

For Odoo 17+ Enterprise, configure MyInvois under Accounting > Configuration > Settings > Taxes:

<record id="res_company_myinvois_config" model="res.config.settings">
    <field name="l10n_my_edi_mode">prod</field>
    <field name="l10n_my_edi_company_tin">C12345678901</field>
    <field name="l10n_my_edi_company_brn">202301012345</field>
    <field name="l10n_my_edi_company_msic">62010</field>
</record>

The OAuth2 client credentials (client_id, client_secret) issued by LHDN must be configured in the e-invoice settings.

Payroll Considerations

Malaysian payroll requires four mandatory contributions plus PCB (income tax withholding):

ContributionEmployeeEmployerNotes
EPF (Employees Provident Fund)11%13% (or 12% if salary > MYR 5,000)Retirement fund
SOCSO (Social Security)0.5%1.75%Capped at MYR 6,000 base
EIS (Employment Insurance Scheme)0.2%0.2%Capped at MYR 6,000
HRDFN/A1%If 10+ employees, mandatory training fund
PCB (Potongan Cukai Bulanan)Per LHDN tablesN/AMonthly income tax withholding

EPF rates for foreign workers differ. PCB calculations follow the LHDN MTD (Monthly Tax Deduction) tables, which are updated annually.

Reporting Requirements

Statutory reports a Malaysia Odoo deployment must produce:

  • SST-02: Bi-monthly sales tax return (manufacturers)
  • SST-03: Bi-monthly service tax return (service providers)
  • Form C: Annual corporate income tax return
  • Form CP58: Annual statement of fees and commissions paid to agents
  • EPF Form A: Monthly EPF contribution return
  • SOCSO Form 8A: Monthly SOCSO contribution return
  • EA / EC / E: Annual employer remuneration statements

SST returns are submitted via the MySST portal (mysst.customs.gov.my) operated by RMCD (Royal Malaysian Customs Department).

Implementation Checklist

  1. Obtain SSM registration (12-digit BRN) and SST registration if applicable
  2. Apply for LHDN MyInvois API credentials (sandbox first, then production)
  3. Install l10n_my and l10n_my_edi; configure TIN, BRN, MSIC code
  4. Verify MFRS chart of accounts; add company sub-accounts
  5. Configure Service Tax 8% (or 6% for special category) and Sales Tax 5%/10%
  6. Test MyInvois submission with sample invoices in sandbox
  7. Configure payroll with EPF, SOCSO, EIS, HRDF, PCB
  8. Build SST-02 / SST-03 report aligned to RMCD format
  9. Train AR team on 72-hour buyer rejection window
  10. Migrate to MyInvois production after sandbox validation

Common Pitfalls

Treating SST as VAT: Sales Tax has no input credit. Configuring it as a recoverable input tax inflates expenses and triggers RMCD audit.

Wrong service tax rate: 8% applies broadly since March 2024, but F&B, telecom, parking, and certain professional services remain at 6%. Hard-coding 8% causes overcharging.

Missing MSIC code on invoices: MyInvois rejects invoices without a valid MSIC industry code on each line. Configure MSIC at product or product category level.

TIN validation failures: Buyer TIN must be valid and active in LHDN's registry. Use the TIN validation API before invoice submission to avoid rejection storms.

Bypassing 72-hour rejection window: If a buyer rejects within 72 hours, the seller must issue a cancellation and a corrected invoice. Workflows that don't track rejection status leave invoices in an ambiguous state.

ECOSIRE delivers Odoo localization for Malaysia, including MyInvois integration and SST-compliant invoicing. Contact us for implementation or explore our Odoo customization services.

Frequently Asked Questions

Does Odoo 17 Enterprise fully support MyInvois?

Yes. Odoo 17.0 introduced l10n_my_edi with native MyInvois submission. Odoo 18 and 19 enhance the integration with self-billed invoice support, consolidated invoicing for B2C, and improved validation pre-checks. For Odoo 16 or earlier, custom development is required.

Is MyInvois mandatory for B2C transactions?

B2C transactions can be issued as consolidated monthly e-invoices for non-business consumers (using TIN "EI00000000010"). However, certain B2C sectors and high-value transactions require individual e-invoices. The LHDN guidelines define thresholds and exceptions; consult the latest version when configuring Odoo's invoicing rules.

What is the difference between Sales Tax and Service Tax?

Sales Tax is charged once at the manufacturer or importer level on goods (5% or 10%). Service Tax is charged at the service provider level on prescribed services (6% or 8%). They do not stack — a manufacturer selling goods charges sales tax, and a service provider charges service tax. Both are non-creditable: there is no input recovery mechanism like in VAT systems.

How do we handle self-billed invoices in Odoo?

Self-billed invoices (where the buyer issues the invoice for the seller, common with foreign suppliers) require e-invoice type 11 in MyInvois. Odoo's l10n_my_edi supports this via a flag on the vendor bill. The buyer's company appears as the "seller" in the e-invoice payload, and the foreign supplier's details populate the buyer fields.

Can we issue credit notes through MyInvois?

Yes. Credit notes use e-invoice type 02 and must reference the original invoice's UIN. Odoo's refund and reverse functionality, when paired with l10n_my_edi, automatically populates the reference field. Credit notes can only be issued within the timeframe LHDN allows (currently 6 months from original invoice date for adjustments).

E

Escrito por

ECOSIRE Research and Development Team

Redação técnica

A equipe de redação técnica da ECOSIRE escreve sobre Odoo ERP, e-commerce com Shopify, agentes de IA, análise de dados com Power BI, automação com GoHighLevel e boas práticas de software empresarial. Nossos guias ajudam as empresas a tomar decisões de tecnologia bem fundamentadas.

ECOSIRE

Transforme seu negócio com o Odoo ERP

Implementação, personalização e suporte especializado do Odoo para agilizar suas operações.