What is a VietQR code?
-
A QR Code image contains all the information about the bank, beneficiary account number, transfer amount, and transfer description.
-
When customers use their banking app to scan the code, the app will automatically fill in all the transfer details, which is very convenient.
-
By integrating QR Code, customers won't need to manually enter transfer information. This improves customer experience and speeds up payment transfers.
-
SePay provides a tool to help you generate dynamic QR Code images at qr.sepay.vn
Embed Link Structure
https://vietqr.app/img?acc=ACCOUNT_NUMBER&bank=BANK_NAME&amount=AMOUNT&des=DESCRIPTION&template=TEMPLATE&download=DOWNLOAD&showinfo=SHOWINFO&fullacc=FULLACC&holder=ACCOUNT_HOLDER&store=STORE
Parameter Explanation
short_name, alias, code, or bin value from the list at banks.json (e.g. Vietcombank; LPBank is an alias of LienVietPostBank).compact = compact layout with the NAPAS/VietQR logo, bank logo, and SePay logo; qronly = QR image only, without the frame and logo; standee = standee layout printed at the point-of-sale counter.download=true to make the browser download the QR image instead of rendering it inline.template=standee, which already shows account information by default.showinfo=true.You can view the list of supported banks at banks.json
Choose a Layout with the template Parameter
The template parameter controls the QR image layout when you embed it into a website or print it at a point of sale. The qr.sepay.vn page also previews these layouts so you can copy the quick link directly.
| Value | Layout |
|---|---|
| (empty) | Standard QR image with the VietQR logo. |
compact | Compact layout with the NAPAS/VietQR logo, bank logo, and SePay logo, suited for embedding in a checkout page. |
qronly | QR image only, without the frame and logo. |
standee | Layout for standees, printed at the point-of-sale counter. |
The showinfo, fullacc, holder, and store parameters let you display additional account holder and store details directly on the QR image. fullacc only takes effect when showinfo=true; the standee layout already shows this information, so it does not need showinfo. The download parameter forces the browser to download the image instead of opening it inline.
Example of a compact QR link showing the account holder name:
https://vietqr.app/img?acc=1234567890&bank=Vietcombank&amount=100000&des=thanh%20toan%20DH001&template=compact&showinfo=true&holder=TIEM%20SACH%20HOAI%20NIEMVietQR rules for SePay-supported banks
Rules differ across banks: virtual account (VA) requirement, mandatory strings in the transfer memo, and how to fill acc / des based on VA type.
Virtual account (VA) requirements
Some banks require a virtual account (VA) for automatic transaction matching. The remaining banks accept either a VA or the original account number.
| Bank | Personal | Business household | Enterprise |
|---|---|---|---|
| OCB | Required | Required | Required |
| KienLongBank | Required | Required | Required |
| MSB | Required | Required | Required |
| BIDV | Required | Required | Optional |
| Other banks | Optional | Optional | Optional |
Transfer memo
For VietinBank personal and business-household accounts, the transfer memo (des) must contain SEVQR. Without this string, the transaction notification won't be pushed to SePay.
When using a memo-based VA, the transfer memo must contain TKP + the VA code. Example: VA 001 → memo must include TKP001.
Add a payment code to the memo so SePay automatically extracts it and links the transaction to your order. Configure the payment-code prefix at Payment code configuration.
QR parameter rules
The acc and des parameters change based on the VA type:
| VA type | acc | des |
|---|---|---|
| Official VA | VA number | Any content |
| Memo-based VA | Source account number | TKP + VA code + content |
| No VA | Account number | Any content |
Usage Examples
All account numbers and VA numbers in the examples below are sample data; they don't exist. Replace them with your real account or VA when implementing.
Example 1: OCB personal — official VA required
OCB requires a VA for every account type.
https://vietqr.app/img?acc=VQRQ12345678&bank=OCB&amount=100000&des=DH001%20thanh%20toan| Parameter | Value | Meaning |
|---|---|---|
acc | VQRQ12345678 | OCB VA number (sample) |
bank | OCB | OCB |
amount | 100000 | 100,000 VND |
des | DH001 thanh toan | Order code + memo |
Example 2: VietinBank personal — SEVQR required in memo
VietinBank personal and business-household accounts require the memo to contain SEVQR.
| Parameter | Value | Meaning |
|---|---|---|
acc | 0123456789 | VietinBank account number (sample) |
bank | VietinBank | VietinBank |
amount | 100000 | 100,000 VND |
des | SEVQR DH001 | Required SEVQR string + order code |
Example 3: TPBank personal — memo-based VA (TKP + VA code)
When using a memo-based VA, acc is the source account number; des joins TKP + VA code + content.
| Parameter | Value | Meaning |
|---|---|---|
acc | 0987654321 | TPBank account number (sample) |
bank | TPBank | TPBank |
amount | 200000 | 200,000 VND |
des | TKP001 DH001 | TKP + VA code 001 + order code |
Example 4: Vietcombank personal — no VA required, full info
Vietcombank doesn't require a VA. Pass full amount and des so the customer pays immediately on scanning.
| Parameter | Value | Meaning |
|---|---|---|
acc | 9988776655 | Vietcombank account number (sample) |
bank | Vietcombank | Vietcombank |
amount | 100000 | 100,000 VND |
des | thanh toan don hang | Free-form memo |
Example 5: Vietcombank — only account number and bank
Omit amount and des so the customer fills them in when scanning.
| Parameter | Value | Meaning |
|---|---|---|
acc | 9988776655 | Vietcombank account number (sample) |
bank | Vietcombank | Vietcombank |
Embedding QR Code into Your Website
Embed the dynamic QR image with an <img> tag using the QR link from the Embed Link Structure section. Any parameter from the table above works when embedding, for example add template=compact for a compact layout on a checkout page:
<img src='https://vietqr.app/img?acc=9988776655&bank=Vietcombank&amount=100000&des=thanh%20toan%20don%20hang&template=compact' alt='SePay payment QR code' />