Odoo ERP

Odoo VAT Thailand Setup: 7% Tax, Invoices, and Reports

A practical walkthrough of Odoo VAT Thailand setup: 7% tax configuration, input and output VAT, tax invoice versus receipt, and the reports your accountant needs at close.

Ravi Shanker SinghFounder & Odoo ConsultantPublished 6 min read
Share
On this page

Every Thai company we onboard onto Odoo asks the same first question. Will the 7 percent VAT just work out of the box. The rate is easy. The paperwork is not. Getting Odoo VAT Thailand configuration right means separating input VAT from output VAT correctly, knowing when a document must be a tax invoice instead of a plain receipt, and producing the reports your accountant expects at month-end close. We have set this up enough times, across Odoo 16 through 19, to know where companies trip.

This post walks through the setup we actually use on client databases, not a theoretical checklist. It assumes you are either implementing Odoo fresh, or cleaning up a Thai company configuration that was done in a hurry. If VAT is only part of a larger rollout, see our Odoo implementation services for the fuller picture.

Odoo VAT Thailand: Setting Up the 7% Rate Correctly

Odoo ships with generic tax templates. Thailand needs two mirrored taxes rather than one. A 7 percent sales tax covers output VAT. A 7 percent purchase tax covers input VAT. Each needs its own tax group and its own tag, so amounts land in the right boxes on your VAT return.

A few settings we check on every project:

  • The tax computation method should be "Percentage of Price," with included-in-price left unchecked, unless you deliberately sell VAT-inclusive prices to walk-in retail customers.
  • Each tax needs distinct Thai tax report tags, sales and purchase, linked to the standard Thai chart of accounts, not generic "Tax Paid" or "Tax Received" labels.
  • Zero-rated VAT, for exports and certain services, and VAT-exempt transactions need their own tax codes, even at 0 percent. Otherwise they vanish from the PP.30 breakdown instead of appearing in their correct line.

The mistake we see most often is companies reusing a single 7 percent tax on both sales and purchase journals. It calculates the same number, so nobody notices at first. Trouble surfaces once the accountant tries to reconcile input against output, because the tax grids no longer match the Revenue Department template.

Input VAT and Output VAT in the Day-to-Day Flow

Output VAT is what you charge your customer on a sales invoice. Input VAT is what your suppliers charge you on a vendor bill. It is reclaimable against output VAT in the monthly filing, provided the supporting tax invoice is valid.

In practice this means:

  1. Every vendor bill in Odoo must carry the correct input VAT tax line, matched to a real supplier tax invoice, not just an informal receipt.
  2. Every customer invoice must carry output VAT, unless the sale is genuinely zero-rated or exempt.
  3. The difference between total output VAT and total input VAT for the period is what gets remitted, or carried forward as a credit, on the PP.30.

Where this goes wrong: cash expenses and small purchases paid without a proper tax invoice. If the bookkeeper records input VAT against a receipt that is not a valid tax invoice, the company cannot legally claim that credit. An auditor will flag it eventually. We encourage clients to tag these as a separate "non-creditable VAT" account from day one, rather than trying to untangle it at year-end.

Tax Invoice Versus Plain Receipt in Odoo VAT Thailand Setup

This distinction trips up almost every company moving from a manual or semi-digital system into Odoo. A plain receipt acknowledges payment. A tax invoice is a legal document under the Revenue Code that entitles the buyer to claim input VAT. They are not interchangeable, and Odoo needs to know which one each transaction produces.

DocumentPurposeVAT claimable by buyer
Tax invoice (full form)Legal VAT document with seller's tax ID, invoice number, VAT breakdownYes
Abbreviated tax invoiceSimplified version, typically retail POSSometimes, with conditions
Receipt onlyProof of payment, no VAT breakdownNo

For companies issuing e-Tax Invoices, the document sequencing and the data fields, buyer tax ID, address, line-level VAT, need to match Revenue Department requirements exactly. That is a separate configuration layer on top of the base VAT setup. It deserves its own detailed walkthrough rather than a paragraph here. If you are planning that rollout alongside your core implementation, it is worth scoping the two together from the start.

The practical rule we give clients is simple. If a customer is a registered VAT business and wants to claim input VAT, they need a proper tax invoice from Odoo, not a POS receipt. Configure your point of sale and invoicing flows so staff are not choosing documents freely at the counter. Our team also handles this inside broader e-commerce development work, since Shopee, Lazada, and TikTok Shop orders flowing into Odoo need the same document discipline.

Odoo VAT Thailand Reports an Accountant Expects at Month End

Odoo's generic tax report is useful, but it is not the Thai PP.30 format. What accountants actually want at close is a reconciliation pack, and we build it the same way on every engagement:

  • Tax report by tax grid – output VAT and input VAT split by tag, matching the PP.30 line structure.
  • VAT ledger (sales and purchase) – a chronological list of every invoice and bill with its tax invoice number, counterpart tax ID, and VAT amount, which Thai auditors specifically ask for.
  • Undue VAT report – for advance payments or deposits where VAT liability has not yet triggered, common in construction and project-based businesses.
  • Reconciliation against the general ledger – the VAT payable or receivable account balance should tie exactly to the tax report total. If it does not, someone posted a manual journal entry with VAT attached, bypassing the proper tax line.

That last point catches more problems than anything else. Odoo allows manual journal entries to include a tax line. If a user does this instead of going through an invoice or bill, the number shows up in the general ledger. It may not flow correctly into the tax report, depending on configuration. We generally lock down manual VAT postings to accounting managers only. We also train the accounts team to run the reconciliation every month before closing, not just at year-end.

A Known Limitation Worth Planning For

Odoo's native Thai localization gives you the structure, but it will not catch every edge case your business creates on its own. Mixed VAT and non-VAT line items on the same invoice are one example. Partial credit notes that need to reverse only a portion of previously claimed input VAT are another. These situations need deliberate configuration and, occasionally, a small customization to the invoice line logic. Budget for that rather than assuming the out-of-the-box templates handle every scenario in retail, manufacturing, and services equally well. We scope this kind of work through our Odoo ERP customization services, so it has its own line item and its own sign-off, separate from the base VAT configuration.

Getting the Odoo VAT Thailand Setup Right From the Start

We walk through the existing VAT process with the client's accountant before touching the database. The Revenue Department filing habits of a ten-year-old company are rarely documented anywhere else. If you are setting up Odoo VAT Thailand configuration for the first time, or inheriting a database where the previous implementer merged input and output VAT into one tax code, it is worth a proper audit before your next filing deadline. Our team handles this as part of standard Odoo implementation work. We can review an existing configuration even if we did not build the original database, including the surrounding Odoo ERP support once the VAT setup is live and your accountant is reconciling against it monthly. For teams weighing a version jump at the same time, our Odoo migration and upgrade services page covers how we sequence that alongside localization work.

Share

Frequently asked questions

Does Odoo calculate Thai 7% VAT automatically?

Yes, once the tax templates are configured with separate sales and purchase taxes at 7 percent, Odoo applies them automatically on invoices and bills. The configuration work is in setting up correct tax tags, zero-rated codes, and report mapping, not the percentage itself.

Can I use one VAT tax code for both sales and purchases?

You can, but you should not. Thailand's PP.30 filing separates output VAT from input VAT, and a single shared tax code makes reconciliation difficult once transaction volume grows. We always set up two distinct tax codes with separate report tags.

What is the difference between a tax invoice and a receipt in Odoo?

A tax invoice carries the legal fields required to let the buyer claim input VAT, including the seller's tax ID and a VAT breakdown. A receipt only proves payment was made and does not support a VAT claim, so Odoo needs to generate the correct document type for each transaction.

Which VAT reports does Odoo generate for Thai month-end close?

Odoo's standard tax report can be configured to match the PP.30 grid structure, and we typically add a VAT ledger report and an undue VAT report for advance payments. These, plus a general ledger reconciliation, form the pack most Thai accountants expect before closing a period.

Can Odoo handle VAT-exempt and zero-rated sales separately?

Yes, but they need their own tax codes even though the rate is 0 percent. Without separate codes, exempt and zero-rated transactions can disappear from the tax report instead of appearing in their correct breakdown lines.

Sources

About the author

Ravi Shanker Singh

Founder & Odoo Consultant

Founder of Tech After Me and Odoo consultant. Ravi implements, customises and supports Odoo ERP and builds web, mobile and data products for companies in Thailand, the USA and India, working from Bangkok, New York and Delhi NCR.

More from this author

Keep reading

Put what you read into practice

The team writing these guides is the same team that ships them. Tell us what you are working on.

Get new articles in your inbox

Get new articles in your inbox

Odoo guides and IT news that matter to your business. At most one email a week.