Invoice maker
Fill in who it is from, who it is for and the items. The tool works out the discount, VAT, withholding tax and the amount in Thai words, and can put a PromptPay QR with the amount on it. Watch the preview beside the form, then download a PDF. It runs in your browser: what you type is not sent anywhere.
This tool needs JavaScript. If you still see this after a few seconds, JavaScript is switched off in your browser or the page did not load completely: turn JavaScript on or reload the page.
Look of the document
The document
From (the seller)
Bill to (the customer)
Items
Currency, discount and tax
Notes
Payment details
Signatures
How to use it
- Choose the language of the document, the template and the colour (or press "Use sample data" to see how it looks).
- Fill in the seller, the customer and the items (you can add a logo). The preview beside the form follows what you type.
- Set the discount, VAT and withholding tax if you need them, and add a PromptPay QR if you want the customer to scan to pay.
- Press "Download PDF", and "Save the data as a file" to keep the data: next time open the file and carry on.
How the money is worked out, and rounding
- Every amount is a whole number of the smallest unit (satang, cents), never a computer's floating-point number, so there are no errors like 0.1 + 0.2.
- Each item is quantity × unit price (both can have up to 4 decimals), rounded half up to the smallest unit (1.5 × 19.99 = 29.985 → 29.99).
- A percentage discount is taken from the total of the items and rounded; a discount in money is used as typed (never more than that total).
- VAT added on top = rate × the amount after the discount; VAT included in the prices = amount × rate ÷ (100 + rate), and the price before VAT = amount − VAT.
- Withholding tax = rate × the amount before VAT, rounded, and taken off the total to give the amount to pay.
- Every part is rounded on its own and then added up, so the numbers printed on the document always add up, with no hidden fractions.
- The amount in Thai words (a Thai document in baht) is written the way Excel's BAHTTEXT writes it, for example 1,234.56 baht = หนึ่งพันสองร้อยสามสิบสี่บาทห้าสิบหกสตางค์.
Limits, and good to know
- This is a general form, not tax or legal advice, and it does not promise that a document is correct under every tax rule. A full tax invoice has requirements of its own under Thai law (the wording, the numbering, keeping copies) that the person issuing it must check; this tool does not issue tax invoices. Ask an accountant or the Revenue Department if you are unsure, and check every number and word before you send a document.
- The PromptPay QR uses a mobile number, a national ID or a 13-digit tax ID that is already registered with PromptPay (or a 15-digit e-Wallet ID). A bank account number cannot go straight into the QR, because the PromptPay standard does not carry it. The amount in the QR is the net amount to pay (after withholding tax), and it works for baht only. Scan it with your own banking app before you send the document to a customer.
- What you type is not kept in the browser: close or reload the page and it is gone. Press "Save the data as a file (.json)" to keep it on your device, and open it again later with "Open a data file" (the file holds the logo you chose, so treat it like any business document).
- The text in the PDF is real text, so it can be selected, copied and searched. It uses Sarabun (an open Thai font by Cadson Demak, under the OFL licence). A character the font does not have, such as an emoji or a Chinese character, appears as "?" in the preview and in the PDF.
- Some programs that read text out of a PDF read the Thai vowel "ำ" as two characters (nikhahit and sara aa). The PDF carries the real text for programs that support it (Adobe Acrobat, Chrome, poppler) so they read "ำ" correctly.
- A list of items longer than a page goes on to a new page with the table head repeated, and a line is never cut across two pages. The page number is at the foot.
- A document has one discount for the whole of it (not one for each line). For a discount on one line, add an item with a negative price.
Your data never leaves your device
This tool runs entirely in your browser. What you type, the logo you choose and any data file you open stay on this page: nothing is uploaded to freesabai's servers or anyone else's, and nothing is kept in the browser, so it is all gone when you close the page. The site only counts how many times this page is opened and how many times a PDF is downloaded (never what you typed, a file name or any content), and you can switch the counting off at the bottom of the page (see the privacy policy).
Report a problem or suggest an idea
Found a problem, or want this tool to do more? Tell us on the feedback page. No sign-up needed.