Every tax invoice gets made twice — once in your system, once for the Revenue Department.
The e-Tax Invoice & e-Receipt mandate arrived after most Thai companies had already chosen their accounting system, so the electronic side got bolted on around it: a provider portal here, an export file there, a spreadsheet tracking what was accepted. The invoices themselves are correct — getting them to the Revenue Department in the right shape is what eats the month. That gap is closable without changing how your accountants think; only the duplicate work has to go.
—— Sound familiar?
You know this problem by these symptoms.
Someone on the accounting team spends the days after month-end re-keying posted invoices into the e-Tax provider's portal, one by one.
One wrong branch code — head office where it should be a branch — gets the document rejected and starts days of correction emails.
The VAT return and the e-Tax submission log never agree on the first pass, and finding out why is a manual hunt every month.
Issuing a credit note starts with hunting down the original tax invoice number it has to reference.
There is a spreadsheet whose only job is tracking which invoices were submitted, accepted or rejected — and it is updated by hand.
Your accounting system was chosen before e-Tax Invoice & e-Receipt existed, so compliance had to be added around it rather than built into it. The invoice now lives in two places — the ERP that posts it and the channel that signs and submits it — and every field they share is copied by hand. Two systems each holding half a document guarantees re-keying, mismatches and a reconciliation load that grows with volume. Nobody designed this; it accreted, one requirement at a time.
—— The way out
How Odoo closes this gap.
Tax invoices born complete
Odoo's Thai localization keeps the 13-digit tax ID and head-office-or-branch code on the customer record and prints the Thai tax invoice layout from it. The document accounting posts already carries every field the Revenue Department format asks for, so there is no second version to assemble later.
Credit notes that remember their origin
In Odoo a credit or debit note is created from the invoice it adjusts, so the original document number and the reason travel with it automatically. The reference chain the e-Tax XML expects is filled from that link, not from someone's memory or a filing cabinet.
Submission without re-keying
We connect Odoo to your ETDA-certified service provider, so posted invoices flow out as digitally signed XML with the PDF/A-3 copy attached. Statuses come back onto the invoice itself — submitted, accepted, rejected — and the tracking spreadsheet retires.
One ledger behind every filing
The VAT return figures, the e-Tax submissions and the withholding tax exports — PND 3 and PND 53 files RDprep can read — all draw from the same posted entries in Odoo Accounting. When the numbers reconcile, it is because they were never separate numbers.
—— How we run it
The transition, managed properly.
A parallel run through one full filing cycle
Your current e-Tax channel keeps running while Odoo issues the same documents for at least one VAT month. We switch over only after both sides of the return agree.
Master data validated in batches
Customer tax IDs and branch codes are cleaned and validated batch by batch before go-live, because those two fields cause most rejections. You sign off each batch, and any batch can be rolled back until you do.
Training on live documents
The accounting team learns by issuing real invoices and credit notes on your own data, not demo records. The consultant who scoped the project runs the training, in Thai or English.
—— FAQ
Questions teams ask about this problem.
How long until we can submit from Odoo?
If your accounting already runs in Odoo, connecting the e-Tax flow is a short phase of a few weeks, including the parallel run. If accounting is moving to Odoo at the same time, the standard phased implementation applies and e-Tax goes live with the accounting phase. Either way, the timeline is given in writing after scoping, never before.
Can we keep our current provider and process during the switch?
Yes, and we insist on it. The old channel keeps submitting until Odoo has matched it through a full filing cycle; only then does it stand down.
Our customer master is full of missing tax IDs and wrong branch codes. Is that a blocker?
It is the normal starting condition, not a blocker. Format checks catch invalid 13-digit tax IDs and branch codes during batch validation, and whatever cannot be fixed automatically comes back to you as a short exception list — not as a rejected filing.
What does this cost, and what do the licences add?
The work is quoted as a fixed price per phase after scoping. Odoo Community's licence is $0; Enterprise is billed by Odoo directly and never marked up by us. Certificate and service-provider fees are paid to those providers directly, also without markup.
Let's find out whether Odoo actually fits your business.
A short call, an honest answer. If it isn't the right system for you, we'll say so.