VietQR transfer code generator

Build a VietQR code with the account number, amount and transfer note filled in. Generated on your own device, nothing is sent anywhere.

Receiving account
  • Vietcombank Ngân hàng TMCP Ngoại thương Việt Nam · 970436
  • Techcombank Ngân hàng TMCP Kỹ thương Việt Nam · 970407
  • MB Ngân hàng TMCP Quân đội · 970422
  • VietinBank Ngân hàng TMCP Công thương Việt Nam · 970415
  • BIDV Ngân hàng TMCP Đầu tư và Phát triển Việt Nam · 970418
  • Agribank Ngân hàng NN&PTNT Việt Nam · 970405
  • ACB Ngân hàng TMCP Á Châu · 970416
  • VPBank Ngân hàng TMCP Việt Nam Thịnh Vượng · 970432
  • Sacombank Ngân hàng TMCP Sài Gòn Thương Tín · 970403
  • TPBank Ngân hàng TMCP Tiên Phong · 970423
  • ABBANK Ngân hàng TMCP An Bình · 970425
  • BacABank Ngân hàng TMCP Bắc Á · 970409
  • BaoVietBank Ngân hàng TMCP Bảo Việt · 970438
  • BVBank Ngân hàng TMCP Bản Việt · 970454
  • CAKE CAKE by VPBank · 546034
  • CBBank Ngân hàng TM TNHH MTV Xây dựng Việt Nam · 970444
  • CIMB Ngân hàng TNHH MTV CIMB Việt Nam · 422589
  • COOPBANK Ngân hàng Hợp tác xã Việt Nam · 970446
  • DongABank Ngân hàng TMCP Đông Á · 970406
  • Eximbank Ngân hàng TMCP Xuất Nhập khẩu Việt Nam · 970431
  • GPBank Ngân hàng TM TNHH MTV Dầu khí Toàn cầu · 970408
  • HDBank Ngân hàng TMCP Phát triển TP.HCM · 970437
  • HongLeong Ngân hàng TNHH MTV Hong Leong Việt Nam · 970442
  • IBK Hà Nội Ngân hàng Công nghiệp Hàn Quốc - CN Hà Nội · 970455
  • IBK TP.HCM Ngân hàng Công nghiệp Hàn Quốc - CN TP.HCM · 970456
  • IndovinaBank Ngân hàng TNHH Indovina · 970434
  • KienLongBank Ngân hàng TMCP Kiên Long · 970452
  • LPBank Ngân hàng TMCP Lộc Phát Việt Nam · 970449
  • MSB Ngân hàng TMCP Hàng Hải · 970426
  • NamABank Ngân hàng TMCP Nam Á · 970428
  • NCB Ngân hàng TMCP Quốc Dân · 970419
  • Nonghyup Ngân hàng Nonghyup - CN Hà Nội · 801011
  • OCB Ngân hàng TMCP Phương Đông · 970448
  • Oceanbank Ngân hàng TM TNHH MTV Đại Dương · 970414
  • PGBank Ngân hàng TMCP Thịnh vượng và Phát triển · 970430
  • PublicBank Ngân hàng TNHH MTV Public Việt Nam · 970439
  • PVcomBank Ngân hàng TMCP Đại Chúng Việt Nam · 970412
  • SaigonBank Ngân hàng TMCP Sài Gòn Công Thương · 970400
  • SCB Ngân hàng TMCP Sài Gòn · 970429
  • SeABank Ngân hàng TMCP Đông Nam Á · 970440
  • SHB Ngân hàng TMCP Sài Gòn - Hà Nội · 970443
  • ShinhanBank Ngân hàng TNHH MTV Shinhan Việt Nam · 970424
  • StandardChartered Ngân hàng TNHH MTV Standard Chartered Việt Nam · 970410
  • Timo Timo by Ban Viet Bank · 963388
  • Ubank Ubank by VPBank · 546035
  • UOB Ngân hàng TNHH MTV United Overseas Bank Việt Nam · 970458
  • VietABank Ngân hàng TMCP Việt Á · 970427
  • VietBank Ngân hàng TMCP Việt Nam Thương Tín · 970433
  • VIB Ngân hàng TMCP Quốc tế Việt Nam · 970441
  • Viettel Money Tổng công ty Dịch vụ số Viettel · 971011
  • VNPT Money Trung tâm dịch vụ số MobiFone - VNPT · 971005
  • VRB Ngân hàng Liên doanh Việt - Nga · 970421
  • Woori Ngân hàng TNHH MTV Woori Việt Nam · 970457

An account number is 4 to 19 letters and digits.

Optional, and not part of the code: the VietQR format carries no name field, banking apps look the real one up on scan. This box only feeds the branded image at the bottom of the page.

Transfer details
The amount must be a positive whole number of at most 13 digits.

VietQR code
Layout

Leave blank to drop that line.

Pick a bank and enter an account number to generate the code.

Data encoded in the code
Pick a bank and enter an account number to generate the code.

This is what the code actually carries, in the EMVCo format Napas uses for VietQR. Any banking app scanning it lands on the same result.

VietQR version with the bank logo

The code above is built on your own device and nothing leaves the browser. The branded version has to be drawn by vietqr.io's servers, which means the account number, amount and note get sent to that service. Only press this if you are happy with that.

Step by step

  1. Pick the receiving bank

    Type in the bank box to search: it matches the full name, the everyday abbreviation (vcb, tcb, stb), the former brand name, or the six-digit BIN itself. Once picked, check the BIN shown underneath - that number, not the name, is what decides which bank the money reaches.

  2. Enter the account number

    Four to nineteen letters and digits, no spaces. The account holder box is optional: the VietQR format has nowhere to put a name, and banking apps look the real one up on scan. That box only feeds the shareable card and the branded image at the bottom of the page.

  3. Add an amount and a note if you want one

    Leave the amount blank and the sender types it themselves, which suits a fixed code stuck on a counter. Fill it in and the code becomes a one-transaction code. The transfer note drops Vietnamese accents automatically, because most domestic banking systems choke on them; the tool shows exactly what will end up in the code.

  4. Choose a layout

    The shareable card carries the name, account number and amount, which suits sending over a messenger or printing out. The plain code is the QR on its own, for dropping into your own design. The name line at the top of the card is editable.

  5. Download the image or copy the payload

    Download PNG saves it at high resolution, sharp enough to print. If you are generating the code somewhere else, copy the payload below - that is the actual content the code carries.

Frequently asked questions

No. The whole code-building step runs in JavaScript inside your browser: the tool assembles the EMVCo payload and paints the code onto a canvas, with no network call carrying the account number.

The one exception is the load branded version from vietqr.io button at the bottom. That one has to be drawn by their servers, so the account number, amount and note do get sent to that service. It only runs when you press it.

Because the VietQR format has no field for the recipient's name. The code carries only the bank's BIN and the account number; the banking app takes those, looks them up, and shows the real registered name. That is actually a good thing: it means nobody can fake a recipient name by editing a code.

Yes, in one field. With no amount the code carries a "reusable" flag - whoever scans it types their own figure, which suits a fixed code printed for a counter. With an amount it carries a "single transaction" flag. Neither expires and both can be scanned any number of times; the flag is just a hint to the banking app about which kind of code this is.

Most domestic core banking systems still handle transfer notes without accents. Left in, the note can arrive at the other end as a run of garbled characters, depending on the bank. The tool strips them up front and shows exactly what will be encoded so you can check first.

That is the actual content of the code, written in the EMVCo QR Code format Napas uses for VietQR. It is a run of fields joined together, each one shaped as id - length - value, with a CRC checksum as the last four characters.

Copy it to build the code elsewhere, or to compare against when you suspect a code is wrong. Scanning this string with any banking app lands on the same result.

The list follows the banks that have joined Napas's VietQR system. A bank that has not joined has no BIN, so no valid VietQR code can be built for it - that is a limit of the format, not of this tool. If your bank joined recently and is missing here, drop me a line and I will add it.

Yes. The downloaded image is built at high resolution, so anything from business-card size up stays sharp. A few things to keep in mind when printing: leave the white margin around the code alone, print it dark on a light background rather than inverted, and do not stick anything over the middle.

This tool runs entirely on your own machine. Nothing is sent to a server or anywhere else.