Free QR generator โ no registration
Create a PromptPay QR code for receiving THB
Create a Thai PromptPay QR from a registered mobile number, national or tax ID, or supported e-wallet ID, with an optional fixed THB amount.
- Thai QR Payment Tag 29 format
- Optional fixed amount in THB
- CRC-16 checksum included
Supported PromptPay identifiers
Choose the identifier already linked to the receiving account
The generator creates a PromptPay credit-transfer QR using Thai QR Payment Tag 29. It does not create bill-payment, merchant-acquirer or cross-border QR credentials.
Thai mobile number
Use a 10-digit Thai mobile number that has already been registered for PromptPay. The generator converts it to the required 0066 format inside the payload.
National ID or tax ID
Use the 13-digit identifier only when it is registered to the intended PromptPay account. Consider whether publishing that identifier is appropriate.
E-wallet ID
Use the 15-digit ID supplied by a participating wallet. A wallet phone number is not automatically the same as its PromptPay e-wallet ID.
Reusable QR without an amount
Leave the amount empty when different payers will enter different amounts after scanning, such as a tip jar or shared expense.
QR with a fixed amount
Add a THB amount for one price or invoice. The banking app should show the prepared amount before the payer confirms.
Business and bill-payment QR
Businesses needing Biller ID, merchant onboarding, references, refunds or automatic reconciliation should obtain the appropriate QR service from their bank or payment provider.
Learn more
A PromptPay QR removes typing, but it does not replace payment verification
Typing a Thai mobile number or a 13-digit identifier is slow and one wrong digit can send money to the wrong account. A PromptPay QR carries the recipient identifier and, when supplied, the amount. The payer's banking app still looks up the account, displays the recipient and asks the payer to authorize the transfer. This generator never checks the account or moves money.
Avoid mistyped recipient numbers
The payer scans the identifier instead of copying a phone number or a long ID one digit at a time.
Prepare the amount when it matters
A fixed THB amount reduces entry mistakes at a counter, for an invoice or for a known shared expense.
Works with the recipient lookup in the bank app
The QR carries the PromptPay ID; the participating banking app resolves and displays the account information for the payer to verify.
Inside the QR code
What is actually stored in a PromptPay QR code?
PromptPay uses the Bank of Thailand's Thai QR Payment structure based on EMV merchant-presented QR. The generator builds a Tag-Length-Value payload, identifies the PromptPay recipient, sets THB as currency and calculates the required checksum.
Tag 29 identifies a PromptPay credit transfer
The merchant account information contains PromptPay application ID A000000677010111 and one recipient proxy: mobile, national or tax ID, or e-wallet ID.
Thai mobile numbers use a normalized value
A number such as 0812345678 is stored as 0066812345678. This is payload formatting; the recipient must already have registered the original number with PromptPay.
Currency code 764 means Thai baht
The payload always declares THB. If an amount is present, it is stored with up to two decimal places. The generator does not perform currency conversion.
The amount changes the point-of-initiation value
Without an amount, the code is reusable and the payer enters a value. With an amount, the payload is transaction-specific. This EMV distinction is not the same as QRCode GEN's editable dynamic redirect QR.
CRC-16 detects a damaged or altered payload
The final Tag 63 contains a CRC-16/CCITT-FALSE checksum. A compatible app can reject a payload whose stored text no longer matches the checksum.
The QR cannot prove ownership or settlement
The generator cannot confirm that an identifier is registered, reveal the account holder, or verify that payment arrived. Those checks happen through the participating bank or wallet.
PromptPay payload example
Mobile: 0812345678 ยท Amount: THB 100.50 โ 00020101021229370016A0000006770101110113006681234567853037645406100.505802TH6304FFE3 โ A compatible Thai banking app reads the PromptPay recipient and prepared THB 100.50 amount, then shows the resolved recipient for confirmation.
Check before publishing
- Scan with at least two participating Thai banking apps; a normal camera may only show text instead of opening a payment flow.
- Confirm that the recipient name displayed by the bank matches the intended person or business before authorizing.
- If the app reports an unknown recipient, check that the selected identifier type is correct and that the identifier is registered with PromptPay.
- For a phone number, enter the Thai number rather than a contact name, extension or foreign number.
- Compare the amount shown in the bank app with the price printed beside the code.
- After printing, inspect the surface for stickers or replacement codes that could redirect payment.
- Confirm successful receipt in the receiving bank account; do not rely only on a payer's screenshot.
- Use a bank or acquirer merchant solution when you need order references, callbacks, reconciliation or refunds.
8 checks before publishing a PromptPay QR code
A technically valid code can still point to the wrong account, expose an identifier or become difficult to scan after heavy styling. Check the payment result, not only whether the camera sees a QR pattern.
Verify the PromptPay registration first
Use the receiving bank's PromptPay settings to confirm which mobile number or identifier is linked to the account you intend to use.
Choose the correct identifier type
A 13-digit national or tax ID and a 15-digit wallet ID are encoded under different fields. Do not select a type only because the number length looks similar.
Decide whether the amount should be fixed
Leave it empty for a reusable counter sign. Set it for one price or invoice, and create a new code whenever that amount changes.
Protect personal identifiers
QR content can be decoded by anyone. Avoid publicly displaying a national or tax ID when a registered business number, mobile number or bank-provided merchant QR is more suitable.
Use strong contrast and a clear border
Keep dark modules on a white or very light solid background and preserve clear space around all four sides.
Keep logos modest
Do not cover the three large corner markers. A logo and high error correction both increase effective density, so test the finished design at print size.
Print the recipient and amount beside the QR
A visible recipient label and price help the payer compare the sign with what the banking app displays and make sticker substitution easier to notice.
Test the complete payment path
Use a small real transaction when appropriate, confirm the beneficiary name and receipt, then inspect every final print batch before use.
Features
Features
Scheme-specific validation
Account identifiers, amount formats, references and field lengths are checked for the selected payment standard.
Generated locally
The payment payload and barcode are created in the browser; the generator does not move money or register an account.
PNG and SVG exports
Download a raster image for everyday use or a scalable vector for invoices and high-quality print.
Protected fixed formats
Standards with prescribed rendering disable incompatible color, logo, shape and error-correction controls.
Optional payment context
Where the scheme permits it, prepare an amount, reference, due date or message to reduce payer entry.
Verification remains visible
The workflow reminds the payer to compare the beneficiary and amount in a compatible banking app.
Advantages & Limitations
Advantages
- Removes manual entry of a Thai phone number or long recipient ID.
- Can prepare an exact THB amount or remain reusable without one.
- Uses the interoperable Thai QR Payment payload structure.
- Can be printed or shown on a screen without a special scanner device.
Limitations
- Only works when the recipient identifier is correctly registered and the payer uses a compatible payment app.
- A personal credit-transfer QR does not provide merchant settlement, callbacks or automatic reconciliation.
- Anyone can decode the identifier stored in a public QR.
- A replaced sticker can send a valid payment to the wrong recipient unless the payer checks the name.
From a registered PromptPay ID to a payment request
How does a PromptPay QR code work?
Typing a Thai mobile number or a 13-digit identifier is slow and one wrong digit can send money to the wrong account. A PromptPay QR carries the recipient identifier and, when supplied, the amount. The payer's banking app still looks up the account, displays the recipient and asks the payer to authorize the transfer. This generator never checks the account or moves money.
Choose the PromptPay identifier
Select mobile, national or tax ID, or e-wallet ID and enter the value already linked to the receiving account.
Set or omit the THB amount
Enter a fixed amount for one payment, or leave it empty so each payer can enter their own amount.
Create, scan and verify
Generate the QR, scan it with a participating banking app and verify the resolved recipient and amount before publishing.
Use cases
Use cases
Small shops and market stalls
Let customers scan at the counter while keeping the registered recipient name visible beside the code.
Freelancers and service providers
Prepare a fixed amount for a completed job or a reusable code for variable invoices.
Events and community collections
Collect shared costs or contributions without asking every participant to type the recipient number.
Rent and recurring payments
Share a reusable recipient QR, but keep the month or unit reference outside the QR unless your bank solution supports reconciliation.
Tips and voluntary contributions
Leave the amount empty so the payer chooses a value in the banking app.
One-price items
Prepare the exact amount for a ticket, product or service and compare it with the displayed price.
Frequently asked questions
What PromptPay identifiers can I use?
Can this generator check the recipient's name?
Should I enter an amount?
Is a PromptPay QR with an amount the same as a dynamic QR code?
Can I use this as a full merchant payment system?
Does the QR prove that payment was successful?
Can foreign banking apps scan PromptPay QR codes?
Is it safe to print a national or tax ID inside the QR?
Prepare a PromptPay payment without retyping the recipient
Create the Thai QR payload, then verify the recipient and amount in a participating banking app before you publish it.
Create a PromptPay QR code