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?

This generator supports a Thai mobile number, a 13-digit national or tax ID, and a 15-digit e-wallet ID. The value must already be registered with the intended PromptPay account.

Can this generator check the recipient's name?

No. The recipient lookup happens in the participating banking or wallet app after scanning. The payer must verify the displayed name before approving payment.

Should I enter an amount?

Enter an amount when the code represents one known THB payment. Leave it empty for a reusable code where each payer enters the amount.

Is a PromptPay QR with an amount the same as a dynamic QR code?

No. In the payment standard it is transaction-specific because an amount is present, but the QR image still stores a fixed payload. It is not an editable QRCode GEN redirect.

Can I use this as a full merchant payment system?

It can prepare a personal PromptPay credit-transfer QR. Businesses needing merchant identity, Biller ID, references, settlement reports, refunds or API confirmation should use a bank or licensed payment provider.

Does the QR prove that payment was successful?

No. A QR only prepares payment details. Check the receiving account or your official merchant system for final transaction status.

Can foreign banking apps scan PromptPay QR codes?

Only apps and cross-border payment arrangements that explicitly support Thai QR or PromptPay can process them. Support, limits and exchange rates depend on the provider.

Is it safe to print a national or tax ID inside the QR?

The value is not encrypted and can be decoded. Consider the privacy and business context before making it public.

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