When multi-currency invoicing applies
This guide assumes you issue e-invoices already. Whether you have to at all depends on your turnover and phase, set out in the complete guide to e-invoicing in Malaysia.
If your Malaysian business invoices clients in a foreign currency — USD, SGD, EUR, GBP, CNY, or any other — you need to handle multi-currency e-invoicing correctly in MyInvois. This is common for:
- Exporters selling goods to overseas buyers
- IT and professional services firms billing foreign clients
- Trading companies importing and exporting goods
- Manufacturers with international supply chains
- Freelancers and consultants working with foreign clients
Even if your business is entirely domestic, you might receive invoices in foreign currencies from overseas suppliers. If you issue self-billed e-invoices for those purchases, multi-currency rules apply. The Currency Exchange Rate is one of the conditional fields in LHDN's list — mandatory where applicable — as covered in the 55 MyInvois fields.
LHDN requires specific fields and calculations when an e-invoice involves a currency other than Malaysian Ringgit (MYR). Getting these wrong is one of the most common reasons for MyInvois rejection.
The currency fields in MyInvois
Every e-invoice submitted to MyInvois includes a document currency code — the currency in which the invoice is denominated. For most domestic transactions, this is MYR. For international transactions, it can be any three-letter code from the currency code list in the MyInvois SDK, which follows the ISO 4217 approach.
When the document currency is not MYR, these additional fields come into play:
Currency fields for a foreign-currency invoice
| Field | Description | Example |
|---|---|---|
| Document Currency Code | The currency of the invoice | USD |
| Tax Currency Code | Optional. If provided, it can only be the document currency or MYR | MYR |
| Currency Exchange Rate | The rate at which the foreign currency is converted into MYR. Mandatory where applicable; MyInvois rejects a foreign-currency document that omits the element (input 0.00 where no rate applies) | 4.4700 |
| Tax Amount in MYR | Tax stated in Ringgit, when you report tax in MYR | RM 3,576.00 |
The key rule: if you provide a Tax Currency Code, it must be either the document currency or MYR, and all tax-related amounts must then use that currency (validation rules DC501 and DC512). In this guide's examples we report tax in MYR, so the Tax Currency Code is MYR. You can bill your client in USD and still state the tax component in Ringgit.
How the exchange rate works
The exchange rate in your e-invoice converts the document currency to MYR. IRBM's e-Invoice Specific Guideline (section 13) sets the order: first, comply with any legal or tax requirement on the exchange rate imposed by the relevant authorities (for example RMCD or IRBM), where applicable; where none applies, you may follow the exchange rate under your internal policy. The Specific Guideline requires the rate where the e-invoice has to be converted into a Ringgit equivalent. Separately, since 1 September 2025 MyInvois validation rejects any document whose invoice currency code is not MYR if the Currency Exchange Rate element is missing, so always include it on a foreign-currency document (the SDK says to input 0.00 where the rate is not applicable). The guideline does not name a single mandatory source (Bank Negara, commercial bank, xe.com), so be able to explain how your rate was derived if questioned.
Example calculation:
- Invoice amount: USD 10,000.00
- Exchange rate: 1 USD = 4.4700 MYR
- MYR equivalent: RM 44,700.00
- Service tax at 8%: RM 3,576.00 (calculated on the MYR equivalent)
- Total in USD: USD 10,800.00 (shown to the customer)
- Tax amount in MYR: RM 3,576.00 (reported to LHDN)
The examples on this page assume a taxable service at 8%, the service tax rate the Royal Malaysian Customs Department applies to most taxable services. Some services are taxed at 6%, and goods carry sales tax at 5%, 10% or a specific rate — confirm the rate for what you are selling in the MySST FAQs. The figures are arithmetic illustrations. Whether service tax applies at all to a particular supply made to an overseas customer is a separate question under RMCD's rules, so confirm that before copying the example.
Step-by-step: creating a multi-currency e-invoice
Step 1: Determine the invoice currency
This is straightforward — it is whatever currency you and your client have agreed upon. If you are billing a Singapore company in SGD, the document currency is SGD.
Step 2: Obtain the exchange rate
Get the exchange rate that your applicable rule or policy requires (commonly the rate for the invoice date). Common sources used by Malaysian businesses:
| Source | Pros | Cons |
|---|---|---|
| Bank Negara Malaysia | Official, defensible | Published daily, may not cover all currencies |
| Your commercial bank | Matches your actual conversion rate | Varies by bank, may include spread |
| xe.com or similar | Real-time, covers all currencies | Not an official Malaysian source |
| Contractual rate | Pre-agreed, no ambiguity | May differ significantly from market rate |
A defensible default: Unless a legal or tax requirement says otherwise, many businesses adopt the Bank Negara Malaysia exchange rate for the invoice date as their internal policy. If Bank Negara does not publish a rate for a particular currency, your commercial bank's rate is a common fallback. This is a practice, not a HASiL rule.
Some contracts specify a fixed exchange rate or a particular rate source. Where no legal or tax requirement on the rate applies, you may follow it as part of your internal policy, and it helps to note it in the invoice.
Step 3: Calculate line items
Line items on the e-invoice are stated in the document currency (the foreign currency). Your client sees amounts in the currency they expect.
Example: IT consulting services billed in USD
| Line Item | Description | Qty | Unit Price (USD) | Amount (USD) |
|---|---|---|---|---|
| 1 | Senior developer — January 2026 (160 hours) | 160 | 75.00 | 12,000.00 |
| 2 | Cloud infrastructure management | 1 | 2,500.00 | 2,500.00 |
| 3 | Technical documentation | 1 | 500.00 | 500.00 |
| Subtotal | 15,000.00 |
Step 4: Calculate tax in MYR
Convert the subtotal to MYR using your exchange rate, then calculate the tax:
- Subtotal in USD: 15,000.00
- Exchange rate: 4.4700
- Subtotal in MYR: RM 67,050.00
- Service tax at 8%: RM 5,364.00
The tax amount (RM 5,364.00) is reported in the Tax Currency Code (MYR) fields of the e-invoice.
Step 5: Present the total to your client
Your client sees the total in the document currency:
- Subtotal: USD 15,000.00
- Tax equivalent: USD 1,200.00 (RM 5,364.00 / 4.4700)
- Total payable: USD 16,200.00
The e-invoice contains both the USD figures (for the client) and the MYR tax amounts (for LHDN).
Step 6: Include the exchange rate in the e-invoice
In the UBL document, the exchange rate goes in the cac:TaxExchangeRate element, with these child elements:
cbc:SourceCurrencyCode: USD (the document currency)cbc:TargetCurrencyCode: MYRcbc:CalculationRate: 4.4700 (the SDK says to input 0.00 if the exchange rate is not applicable)
The SDK defines no separate date element for the rate, so keep the rate's source and date in your own records.
This is a technical detail handled by your e-invoicing software — you should not need to construct UBL XML manually. But it is important to understand what is happening behind the scenes so you can verify correctness.
Common multi-currency scenarios
Exporting goods (FOB, CIF, etc.)
When you export goods, the invoice is typically in the buyer's currency or in USD. Key considerations:
- Incoterms affect which charges are included in the invoice (freight, insurance, duties)
- Each charge is a separate line item in the document currency
- Tax treatment may differ: the sales tax treatment of exported goods depends on your circumstances (RMCD's Guide on Manufacturing and Import / Export has separate sections for direct export and export through a third party), so confirm yours in the guide on MySST or with RMCD before deciding what tax to show
Where an export carries no sales tax, the tax amount fields may show zero. For tax-exempt transactions, though, the SDK documentation (updated 17 July 2026) says cbc:TaxAmount is not required to be 0.00: you may report the actual tax that would have been payable before the exemption, and the presence of cbc:TaxExemptionReason does not mean the amount must be zero. Which treatment applies to your export is a sales tax question, not one the e-invoice decides. The Currency Exchange Rate element is still required whenever the invoice currency is not MYR (input 0.00 where the rate is not applicable); the Tax Currency Code is optional.
Importing goods (self-billed invoices)
When you purchase from a foreign supplier who does not submit e-invoices to MyInvois, you may need to issue a self-billed invoice. In this case:
- You (the buyer) are the one submitting the e-invoice to LHDN
- The document currency is whatever currency you paid the foreign supplier in
- The exchange rate converts to MYR for tax reporting; for self-billed e-invoices for importation of goods, IRBM's guideline (section 13.4) allows Malaysian taxpayers to use their internal exchange rate
- Keep the foreign seller in the supplier block and the Malaysian purchaser in the buyer block. The purchaser issues the self-billed invoice using document type
11; do not swap the party blocks.
This is one of the most common multi-currency scenarios for Malaysian SMEs.
Mixed-currency contracts
Some contracts have pricing in multiple currencies — for example, local labor billed in MYR and imported materials billed in USD. In MyInvois, a single e-invoice can only have one document currency. Your options:
- Issue separate e-invoices — One in MYR for local components, one in USD for imported components
- Convert everything to one currency — Bill the entire contract in MYR (or USD) and apply the exchange rate to the foreign-currency portions
Option 1 is cleaner from an accounting perspective. Option 2 is simpler if the contract allows it.
Recurring invoices in foreign currency
If you bill a foreign client the same amount every month (a retainer or subscription), the exchange rate will differ each month. Each monthly e-invoice needs:
- The exchange rate your rule or policy requires for that invoice (commonly the rate for the invoice date)
- Recalculated MYR tax amounts based on the new rate
- The same document currency code
Do not carry over last month's exchange rate by default. Apply the rate that your applicable rule or policy gives for each invoice's own date.
Exchange rate disputes and audits
What if LHDN questions your exchange rate?
LHDN may ask how you arrived at an exchange rate, particularly for large transactions or rates that differ noticeably from published market rates. To protect yourself:
- Document your rate source — Keep a record of where you obtained the rate (screenshot, bank statement, printout)
- Apply the rate your rule requires — Commonly the invoice date, unless a legal or tax requirement or your internal policy points to another date. Avoid choosing a date arbitrarily
- Be consistent — Use the same rate source across all your invoices. Switching between Bank Negara, your bank, and xe.com for different invoices raises questions
What about exchange rate gains and losses?
The exchange rate on the e-invoice is the rate you applied under your rule or policy (commonly the invoice date). If the actual payment arrives weeks later at a different rate, the resulting gain or loss is an accounting matter — it does not require a new e-invoice or an adjustment to the original.
For example:
- Invoice date rate: 1 USD = 4.4700 MYR
- Payment date rate: 1 USD = 4.5200 MYR
- Invoice amount: USD 10,000
- Expected MYR: RM 44,700
- Actual MYR received: RM 45,200
- Exchange gain: RM 500
This RM 500 gain is recorded in your books but does not generate a new e-invoice or modify the original.
Rounding and precision
Multi-currency invoices introduce rounding challenges. Precision is governed by the SDK's field-level formats and the validation rules that apply to your document:
- Exchange rate: a decimal field (
cbc:CalculationRate) of up to 15 characters - Rounding adjustment: an optional rounding amount (
cbc:PayableRoundingAmount) is added to the amount payable, and it needs acurrencyIDattribute. The SDK's field table shows@currencyID='MYR', but its foreign-currency sample XML sets the rounding amount'scurrencyIDto the document currency (USD), consistent with rule DC502 (monetary values use the DocumentCurrencyCode). On a foreign-currency invoice, follow the document currency rather than hardcoding MYR. Rounding to the nearest 5 sen is a Ringgit convention and your own practice, not an SDK rule - Amounts: The SDK field tables show
26in the “Number of Chars” column for severalxsd:decimalamounts. Separately, the 6 August 2026 release note announced a 26-digit limit for the listed amount fields, scheduled for production on 24 October 2026. Check the applicable field formats and validation rules; do not assume the character and digit descriptions mean the same thing. Amounts are commonly displayed to two decimal places, and totals must reconcile with the applicable line items and adjustments.
A common practice is to carry full precision through intermediate currency calculations and round only the amounts that appear on the e-invoice. Rounding inconsistently on line items can leave the total off by a few sen against the sum of the lines.
Example of a rounding issue:
Assume these are the final line amounts and there are no invoice-level discounts or charges.
- 3 line items, each USD 33.33
- Subtotal should be USD 99.99 (not USD 100.00)
- If you round each line item to USD 33.33 and sum them, you get USD 99.99. Correct.
- If you round the subtotal independently to USD 100.00, it does not match the sum of line items, and the document no longer reconciles.
In this example, the subtotal should reconcile with the three line amounts. For other invoices, also account for applicable document-level adjustments.
Supported currencies
MyInvois accepts the three-letter codes in the SDK's currency code list, which follows the ISO 4217 approach and also lists CNH for the international renminbi. RMB is not a listed code, so use CNY or CNH. The most commonly used in Malaysian business:
| Currency | Code | Common Use Case |
|---|---|---|
| US Dollar | USD | International trade, tech services |
| Singapore Dollar | SGD | Singapore-based clients, cross-border trade |
| Euro | EUR | European clients and suppliers |
| British Pound | GBP | UK-based clients |
| Chinese Yuan Renminbi (domestic) | CNY | China trade |
| Chinese Yuan Renminbi (international, offshore) | CNH | Offshore RMB settlement |
| Japanese Yen | JPY | Japanese companies in Malaysia |
| Thai Baht | THB | Thailand cross-border trade |
| Indonesian Rupiah | IDR | Indonesia cross-border trade |
| Australian Dollar | AUD | Australian clients |
Practical checklist for multi-currency invoicing
Before submitting a multi-currency e-invoice to MyInvois, verify:
- Document currency code is correct (a code from the SDK currency list)
- Tax currency code, if used, is MYR or the document currency, and all tax amounts use it
- Exchange rate follows the applicable legal or tax requirement, or your internal policy, and is dated correctly
- All line items are in the document currency
- Tax amounts use the currency you declared as the Tax Currency Code
- Subtotal and document totals reconcile with the line amounts and applicable invoice-level discounts or charges
- Tax totals reconcile with the applicable taxable amounts, tax categories and adjustments
- Exchange rate source is documented for your records
