Skip to Content

Odoo Accounting Setup for Thai Businesses: Complete Guide

July 17, 2026 by
Elevanta Marketing

Most Thai businesses open Odoo and head straight to Sales or Inventory. It feels logical; these modules face customers directly. But every sale creates an invoice. Every purchase creates a vendor bill. Every stock movement touches valuation. If the accounting foundation isn't built correctly first, every transaction that follows is built on sand.

Setting up Odoo accounting setup for Thai businesses isn't just about turning on a module. It means VAT sequences registered with the Revenue Department, withholding tax applied at the invoice level, PromptPay QR on every customer invoice, and PND reports ready for e-Filing by the 15th of the following month. Get these right from the start, and every other Odoo module runs cleanly on top.

Why Accounting Must Come Before Everything Else

Here's what nobody tells you upfront: if you configure Sales, Inventory, or  Odoo Manufacturing before accounting is set up correctly, you're building a system that generates transactions into a broken foundation.

A confirmed sales order creates a journal entry. A received purchase creates a stock valuation posting. A payroll run creates salary expense and SSF contribution entries. All of these posts are automatically posted, which is exactly what you want. But only if the accounts, tax rates, and sequences behind them are correct first.

We've watched businesses run three months of transactions before discovering their VAT configuration was wrong. Fixing it meant reopening and correcting every invoice and vendor bill from the day they went live. That's weeks of work that a proper setup prevents in an afternoon.

What to Prepare Before You Touch Configuration

Walking into Odoo configuration without the right documents is like starting a construction project without a site plan.

You need your company's 13-digit Tax ID and Branch Number, 00000 for the head office, or your registered branch code for any other location. You need your current Chart of Accounts from your accountant, your opening balance figures for accounts receivable, accounts payable, and bank accounts, and your active customer and supplier list with their tax IDs.

You also need to decide on opening Settings: fiscal year. Most Thai private companies use the calendar year, January to December. Some align with Thailand's government fiscal year, October to September. This decision cannot be changed after journal entries exist. Make it with your accountant before you do anything else.

Install Thai Localization 

The l10n_th module is the foundation of the Odoo Accounting setup in Thailand. If you selected Thailand during setup, it may already be installed. Otherwise, go to Apps → Search "l10n_th" → Install. It automatically adds the Thai Chart of Accounts, 7% VAT, withholding taxes, PND3/PND53 report templates, and Thai-compliant tax invoice formats.

However, the module doesn't complete your accounting setup. You'll still need to configure your bank journals, fiscal year, tax invoice sequence, company Tax ID, and Branch Number. Completing these settings ensures your Odoo system is fully compliant and ready for daily accounting.

Configure Your Thai Chart of Accounts and Fiscal Year

A successful Odoo Accounting Setup starts with reviewing your Chart of Accounts after installing l10n_th. Go to Accounting → Configuration → Chart of Accounts and ask your accountant to verify that the 7% VAT and Withholding Tax (WHT) accounts are correctly linked. If needed, you can also add a few business-specific accounts before recording any transactions.

Next, go to Accounting → Configuration → Settings and set your Fiscal Year. Simply confirm your business's financial year, opening balance date (if starting mid-year), and lock date with your accountant. Completing these settings before processing transactions helps keep your financial records accurate and avoids reconciliation issues later.

Set up VAT 7% and PP30 Monthly Reporting.

The l10n_th module automatically sets up Thailand's 7% VAT, but you should still review it before sending your first invoice. In Accounting → Configuration → Taxes, confirm that Output VAT 7% is used for sales, Input VAT 7% for purchases, and both are linked to the correct accounts. Also, configure your Tax Invoice Number sequence to meet the Revenue Department requirements.

After recording transactions, generate your monthly PP30 VAT report by navigating to Accounting → Reporting → Tax Report. Download the required sales and purchase VAT reports and submit them through the Revenue Department's e-Filing portal by the 15th of the following month.

Enable Withholding Tax for PND3 and PND53

Correctly configuring Withholding Tax (WHT) is an important part of your Odoo Accounting Setup. Setting it up before processing vendor bills helps ensure accurate tax reporting and avoids costly corrections later.

  • Know the Difference: Use PND3 for payments to individuals and PND53 for payments to registered companies or partnerships.

  • Apply the Correct WHT Rate: Select the appropriate 1%, 2%, 3%, or 5% WHT tax code when creating a vendor bill.

  • Automatic Calculation: Odoo automatically calculates the WHT amount and posts it to the Withholding Tax Payable account.

  • Pay the Net Amount: Pay suppliers after deducting WHT, then remit the withheld tax separately to the Revenue Department.

  • Generate Monthly Reports: Go to Accounting → Reporting → Tax Report, select your reporting month, and export the PND3 or PND53 CSV file.

  • Important Note: Odoo generates the CSV file for tax filing, while the official PDF WHT certificate must be created using RDprep or another approved tool.

Completing this setup from the beginning makes monthly tax filing easier and helps keep your Read our Thai Withholding Tax in Odoo: Guide to PND3 & PND53 Setup for step-by-step instructions, configuration best practices, and monthly PND reporting. 

Revenue Department e-Tax Invoice Compliance

A proper Odoo Accounting Setup includes configuring your company information before issuing any tax invoices. This ensures every invoice meets Thailand's Revenue Department requirements.

  • Complete Your Company Profile: Go to Contacts → Sales & Purchase and enter your 13-digit Tax ID and Branch Number (00000 for headquarters).

  • Avoid Invalid Invoices: Missing company details can make previously issued tax invoices incomplete or non-compliant.

  • Use the Correct Tax Invoice Format: Print invoices using the Tax Invoice format so they include the required Tax ID, Branch Number, VAT breakdown, and "Tax Invoice" label.

PromptPay QR Codes on Every Invoice

Thai customers expect the convenience of paying invoices with PromptPay QR codes, making payments faster and reducing delays. In Odoo, enable this feature by going to Accounting → Configuration → Settings → Customer Payments and turning on QR Codes.

Next, configure your company bank account by adding your registered Tax ID or Phone Number as the PromptPay proxy. Make sure the account holder's city is filled in, or the QR code won't generate. Once configured, every customer invoice will automatically include a PromptPay QR code for quick and easy payments.

Bank Reconciliation With Thai Banks

Keeping your bank records synchronized with Odoo helps maintain accurate financial data and makes month-end closing much easier.

  • Supported Banks: Kasikorn, SCB, Bangkok Bank, and Krungthai allow you to export bank statements in CSV format from their online banking portals.

  • Import Statements: Go to Accounting → Select Your Bank Account → Import Statement, then upload your CSV or OFX file.

  • Automatic Matching: Odoo matches imported transactions with existing invoices and payments based on amount, date, and reference.

  • Review Matches: Confirm suggested matches and manually investigate or create journal entries for unmatched transactions.

  • Best Practice: Import and reconcile your bank statements every month after the accounting period closes to keep your accounts accurate and avoid reconciliation problems.

Regular monthly reconciliation is an essential part of the Odoo Accounting Setup in Thailand. It improves reporting accuracy, saves time during audits, and helps you identify missing or incorrect transactions before they become bigger accounting issues.

Test Your Setup Before Going Live

Before any real customer sees an invoice or any real supplier gets a bill, run this test sequence in a sandbox environment.

Create one customer invoice. Apply Output VAT 7%. Print it and check that your Tax ID, Branch Number, VAT breakdown, and Tax Invoice sequence number are all present and correct. Then check whether the PromptPay QR code is generated and is scannable.

Create one vendor bill. Apply Input VAT 7% and one WHT rate. Confirm that Odoo deducts the WHT correctly and posts it to the WHT Payable account. Check the resulting journal entry. Does it balance? Does it post to the accounts you expect?

Finally, run a Profit & Loss report and a Balance Sheet. Do the numbers match your opening balances? If anything looks wrong in the sandbox, fix it before going live. Fixing a configuration error in the sandbox takes minutes. Fixing the same error across three months of live transactions takes days.

Connecting Accounting With Sales: Inventory and Manufacturing

A correctly configured accounting foundation makes every other Odoo module run without intervention.

Confirmed sales orders generate invoices that post revenue automatically. Received inventory updates, stock valuation, and posts to the asset accounts. Shipped deliveries post cost of goods sold. Payroll runs post salary expense and SSF contributions. None of this requires manual journal entries when the foundation is right.

For manufacturing teams, verify three things before go-live: your product costing method (standard cost, average cost, or FIFO), your Work-In-Progress accounts, and whether manufacturing overhead should post to a dedicated expense account. Costing errors in manufacturing take months to unwind; they compound with every production order processed.

How Elevanta Validates Accounting Before Anything Goes Live

Many businesses discover accounting configuration issues during their Odoo business development process, especially at the first month-end close. Missing VAT sequences, unrecorded withholding tax (WHT), bank reconciliation gaps, or PP30 totals that don't match Revenue Department expectations are common problems. These issues usually occur when accounting is configured after sales, inventory, or other business operations are already running.

Elevanta's process is built around preventing this. Before any module goes live for businesses in Bangkok, Chonburi, Si Racha, or across Thailand, we run the complete accounting configuration, test every tax scenario with real transaction data, and have your accountant sign off on PP30 and PND outputs. You see the reports before the first invoice goes out, not after the first month-end problem surfaces.

Conclusion

Thai accounting compliance doesn't wait for a convenient moment; the Revenue Department's filing deadlines are fixed, and the requirements are non-negotiable. Setting up Odoo accounting setup in Thailand correctly means having VAT sequences, WHT rates, e-Tax Invoice formats, PromptPay QR codes, and bank reconciliation working before the first transaction posts, not after the first month-end review reveals what's missing.

The businesses that go live cleanly are the ones that test everything in a sandbox first, have their accountant validate the outputs, and don't treat accounting configuration as something to circle back to later. If you're configuring Odoo for Thai accounting and want it done right from day one, Elevanta is ready to help. Book your free consultation today.

FAQs

Q1. How do I set up the Odoo accounting setup for Thailand?

Install l10n_th, configure your fiscal year and tax invoice sequence, verify VAT 7% and WHT rates, enter your company Tax ID and Branch Number, then set up PromptPay QR before sending any invoice. Run a full test in the sandbox first.

Q2. Does Odoo automatically support Thai VAT and PND reports?

Yes , l10n_th installs PND3, PND53, and PP30 templates. Go to Accounting → Reporting → Tax Report to generate CSV exports and Excel files for the Revenue Department e-Filing each month.

Q3. What does l10n_th include?

It installs the Thai Chart of Accounts, WHT accounts at 1–5% rates, VAT 7% for sales and purchases, PND report templates, and PromptPay QR support. It does not configure your bank journals, fiscal year, or tax invoice sequence.

Q4. Can I migrate Excel or QuickBooks data into Odoo accounting?

Yes, Odoo accepts CSV imports for opening balances, customer records, and supplier lists. Historical transaction data is best kept in your old system. Your accountant should confirm the opening balance date before any data moves.

Q5. Is Odoo the right accounting software for Thai SMEs?

For businesses needing only accounting, FlowAccount or Express Accounts may be simpler. For businesses needing accounting connected to inventory, sales, purchasing, manufacturing, and HR in one platform, Odoo's Thai localization, covering VAT, PND, SSF, and PromptPay, makes it the strongest option for growing Thai SMEs.

Odoo Community vs Enterprise Thailand: Pick the Right One