Thailand — Retail & POS Localization

Two things define a Thai deployment: a VAT rate with an expiry date, and a script that breaks naive text layout. VAT sits at 7% against a statutory 10%, reduced one year at a time by royal decree. The decree in force expires on 30 September 2026; a further extension to 30 September 2027 was approved by cabinet in July 2026, but as of this update no gazetted decree enacting it has been confirmed here — see Tax. This is the nearest expiry of any rate in this repository. Separately, Thai is written without spaces between words and stacks vowel and tone marks above and below the base letter, which defeats both line-breaking and column alignment code written for European scripts. E-tax invoicing, by contrast, remains voluntary.

Verification status — partially verified, 2026-08

Checked against secondary sources. Confirm against the Revenue Department before relying on any of it.

Resolved this pass

  • VAT 7% against a statutory 10%, enacted by Royal Decree No. 799 B.E. 2568, gazetted 14 September 2025, running to 30 September 2026. Nearest expiry in this repository — see below.
  • A further one-year extension to 30 September 2027 was approved by cabinet on 27 July 2026 and confirmed by a Revenue Department notice dated 2 August 2026. Secondary sources only; the enacting decree is not confirmed gazetted as of 2026-08-14.
  • E-Tax Invoice and e-Receipt is voluntary; no legislated B2B mandate reported for 2026 or 2027.
  • Where used, the system works in XML with PDF/A-3, under RD STD 03-2566, secured by a qualified digital signature or an ETDA time stamp, with monthly transmission by the 15th of the following month.
  • A tax invoice must carry the 13-digit TIN of both buyer and seller, the date, a description, and VAT as a separate line. Omitting any of these blocks the buyer's input VAT claim.

Still open — TODO: verify

  1. Whether the decree extending 7% to 2026-10-01 → 2027-09-30 has been gazetted, and its number. Cabinet approval and a Revenue Department notice are not the operative instrument; the royal decree is. This is the most urgent item in this file. The two preceding decrees were gazetted on 20 September 2024 and 14 September 2025, so the answer should exist by roughly mid-September 2026.
  2. Whether displayed consumer prices are legally required to be tax-inclusive.
  3. Mandatory fields for a simple retail receipt as distinct from a full tax invoice.
  4. Whether the Buddhist Era calendar is required, permitted or merely customary on receipts.
  5. Thai code page support on the target printer.
  6. VAT registration threshold.

Currency

Field Value Source type
ISO 4217 code THB official-authority
Symbol ฿ (U+0E3F) official-authority
Symbol position Prefix — ฿1,250.00 unverified
Decimal places 2 official-authority
Thousands separator ,; decimal separator . unverified
Typical price magnitude Roughly 20 to 5,000 THB for everyday retail lines unverified

Tax

Field Value Source type
VAT rate 7%, a reduction from the statutory 10%, enacted by Royal Decree No. 799 B.E. 2568 (gazetted 2025-09-14) and running to 30 September 2026. public-regulation
VAT rate from 2026-10-01 Expected to remain 7% to 30 September 2027. Cabinet approved the extension on 2026-07-27; a Revenue Department notice of 2026-08-02 confirms it. The enacting royal decree is not confirmed gazetted — until it is, the operative fallback is the statutory 10%. unverified
Tax-inclusive or exclusive display Consumer prices quoted VAT-inclusive in ordinary practice. TODO: verify legal basis. unverified
Fiscal system name Revenue Department. e-Tax Invoice & e-Receipt — voluntary, with tax incentives for adoption rather than a mandate. official-authority

The expiry is the point. A rate that has been extended repeatedly by cabinet decision is not a constant, and this one has the nearest horizon of anything in this repository. Any system deployed in Thailand needs VAT as a dated, editable record with effective-from and effective-to dates, and historical transactions must retain the rate that applied on their own date. If 7% is compiled in, the failure mode after 30 September 2026 is silently wrong tax on every sale.

How the renewal actually works, and why the date keeps moving. The 7% is not the rate in the statute. The statute says 10%, and permits a reduction by royal decree; each decree buys one year. Recent decrees:

Decree Gazetted Reduced rate runs to
No. 790 B.E. 2567 2024-09-20 2025-09-30
No. 799 B.E. 2568 2025-09-14 2026-09-30
Not confirmed 2027-09-30 (cabinet-approved 2026-07-27)

The pattern is a gazette date in the second half of September, roughly two weeks before the old decree lapses. Cabinet approval is not the instrument. Press reporting of an approved extension is a reliable signal of intent and not a legal basis, so a deployment crossing 1 October 2026 should carry the extension as a scheduled, editable rate change that someone confirms against the Royal Gazette before it takes effect — not as a hardcoded assumption in either direction.

Tax invoice versus receipt. The 13-digit TIN of both parties is required on a tax invoice. That means a business customer's TIN has to be capturable at the counter, often after the sale has been rung up — decide whether that is a mid-transaction edit or a separate issuance before designing the flow. TODO: verify what a simple retail receipt must contain by contrast.

Receipt requirements

TODO: verify the mandatory field list for a retail receipt. For a full tax invoice the confirmed elements are: seller TIN (13 digits), buyer TIN (13 digits), date, description of goods or services, and VAT shown as a separate line.

Paper widths: 80 mm (48 or 42 characters at Font A) and 58 mm (32).

Calendar. Thailand commonly uses the Buddhist Era, 543 years ahead of the Common Era — 2026 CE is 2569 BE. Dates on Thai commercial documents may be expected in BE. TODO: verify whether this is required, permitted or customary. Whatever the answer, store dates in a single canonical form and convert at render time; storing BE dates guarantees an off-by-543 bug somewhere downstream.

Languages used in retail

Thai is the working language of retail, and it is the harder half of this file.

No spaces between words. Thai text runs continuously; word boundaries are implicit. Line breaking therefore cannot be done by splitting on whitespace — a naive wrap breaks mid-word, which in Thai produces something between unreadable and wrong. Correct wrapping needs a dictionary-based or ICU-style line-break algorithm. TODO: verify what the chosen rendering path provides.

Stacked marks. Thai places vowel signs above and below the consonant and adds tone marks above those, so a single displayed cluster can be three or four codepoints tall. Two consequences, both familiar from the Arabic file:

Encoding. Thai needs a dedicated code page — TIS-620 and its Windows variant CP874 are the usual candidates. TODO: verify support and the ESC t value on the target printer; as elsewhere, vendor numbering varies. Raster rendering avoids the code page question and, given the line-breaking requirement above, is the recommended default here.

Deployment pattern. Chinese-owned businesses commonly pair a Chinese back office with a Thai till and Thai receipts. Products need two names — a Thai one for the customer-facing output, an internal one the owner can read.

Payment methods

Method Notes
PromptPay The national QR and account-proxy transfer rail; dominant for non-cash, including small amounts. Confirmation is visual at the counter.
Cash Still substantial.
Cards Widely accepted in urban retail through bank terminals.
E-wallets Present alongside PromptPay.

Notes for POS implementers

Put the rate expiry in the deployment checklist. 30 September 2026 is close enough that a system going live now will cross it. Check the Royal Gazette in mid-September 2026 for the decree covering 2026-10-01 onward, and configure the rate change ahead of time rather than on the morning it applies.

Test Thai rendering on hardware, with a Thai reader. Clipped tone marks and mid-word breaks are exactly the failures that survive a review by someone who does not read the script — the same trap documented in the Arabic file.

Time zone. UTC+7, no daylight saving.

Food service

Restaurants diverge from retail at the till, not just in the menu. Three things change: the tax treatment can depend on where the food is eaten, service charge and tips carry their own rules and their own tax questions, and the trading day routinely runs past midnight. Thailand's food-service questions sit on top of a VAT rate whose enacting decree expires on 30 September 2026 and a script that is hard to set on a kitchen ticket.

Tax treatment

Question Answer Source type
Dine-in, takeaway and delivery taxed differently? TODO: verify unverified
Reduced rate or registration threshold for small food businesses? TODO: verify unverified
Alcoholic drinks taxed separately? TODO: verify unverified

Service charge and tips

Question Answer Source type
Service charge customary? At what rate? Mandatory? TODO: verify unverified
Is the service charge itself taxable? TODO: verify unverified
Do tips go through the POS, and are they recorded? TODO: verify unverified
Must the service charge be shown as its own receipt line? TODO: verify unverified

Receipt requirements specific to food service

Question Answer Source type
Must dine-in and takeaway be distinguished on the document? TODO: verify unverified
Must individual menu items be itemised? TODO: verify unverified
Are table number and guest count mandatory fields? TODO: verify unverified

Operating conventions

Trading day and the midnight boundary. TODO: verify whether any rule governs the accounting date of a sale rung up after midnight. Regardless, make the business-day boundary configurable per site — a restaurant closing at 02:00 will otherwise split one night's trade across two reporting days.

Trading hours. TODO: verify typical local hours for the intended segment; they drive shift handover, Z-report timing and staffing, and they differ sharply between a bakery and a bar.

Kitchen ticket language. Chinese-owned restaurants commonly run a Chinese-reading kitchen, a local-language dining room and a Chinese back office. The kitchen ticket language must be settable independently of the till language and of the customer-facing document language — three settings, not one. TODO: verify nothing here; this is a deployment pattern, not a legal requirement.

Notes for POS implementers

Four capabilities separate a food-service till from a retail one. They are worth naming because a retail POS typically has none of them, and retrofitting them is expensive:

Kitchen tickets are where Thai rendering bites hardest. They are printed fast, on narrow paper, often on a cheaper printer than the front-of-house one, and read under time pressure. Everything in the retail section about word breaking and stacked tone marks applies with less margin for error. Test the kitchen printer separately; it is frequently a different model.

Order modifiers are not discounts. "No coriander", "extra spicy", "sauce on the side" attach to a line and must reach the kitchen ticket, sometimes with a price delta and sometimes without. Modelling them as discounts or as separate products both fail — the first corrupts the tax base, the second corrupts stock.

Void before and after firing are different events. Cancelling an item that has not reached the kitchen is an edit; cancelling one already cooked is a loss that has to be recorded as such, or waste and theft become indistinguishable.

Last updated: 2026-08


Maintained by the MISAll team. Last updated: 2026-08