VietQR API: nhúng ảnh mã QR chuyển khoản bằng URL

Ghép một URL là có ảnh mã VietQR để đặt vào website, email xác nhận đơn hàng hay hoá đơn PDF. Không cần khoá API, không cần lập trình backend.

  • Miễn phí
  • PNG · SVG
  • Không cần khoá API
  • Cache 7 ngày

Bắt đầu

Ảnh VietQR từ một URL

Gửi yêu cầu GET tới địa chỉ dưới đây kèm tham số trên URL, máy chủ trả về ảnh PNG (hoặc SVG). Dùng URL đó làm src của thẻ <img> trong website, email xác nhận đơn hàng, hoá đơn PDF hay ứng dụng di động.

GET
https://tingee.vn/wp-json/tingee-qr/v1/vietqr
Ví dụ
https://tingee.vn/wp-json/tingee-qr/v1/vietqr?bankBin=970436&accountNumber=0123456789&amount=150000&description=DH1001&theme=frame
Ảnh VietQR mẫu trả về từ API

Tham số

Tham số của /vietqr

Tham số Bắt buộc Mô tả Ví dụ
bankBin Bắt buộc Mã BIN 6 số của ngân hàng nhận (xem bảng bên dưới). 970436
accountNumber Bắt buộc Số tài khoản hoặc tài khoản định danh: chữ và số, tối đa 19 ký tự. 0123456789
amount Tuỳ chọn Số tiền (VND), số nguyên dương. Bỏ trống để người chuyển tự nhập. 150000
description Tuỳ chọn Nội dung chuyển khoản; tự chuyển sang không dấu, tối đa 25 ký tự. Bí danh: memo. DH1001
accountName Tuỳ chọn Tên chủ tài khoản, hiển thị ở kiểu frame-account và ghi vào mã (không dấu). NGUYEN VAN A
theme Tuỳ chọn qr (mặc định) · qr-logo · frame · frame-account. frame
size Tuỳ chọn Chiều rộng ảnh, 200–2000 px. Mặc định 720. 720
format Tuỳ chọn png (mặc định) hoặc svg. png

Mã mẫu

Tích hợp vào website và ứng dụng

HTML
<img src="https://tingee.vn/wp-json/tingee-qr/v1/vietqr?bankBin=970436&accountNumber=0123456789&amount=150000&description=DH1001&theme=frame"
     alt="Quét mã để thanh toán" width="360" loading="lazy">
JavaScript
function vietQrUrl({ orderId, amount }) {
  const url = new URL('https://tingee.vn/wp-json/tingee-qr/v1/vietqr')
  url.searchParams.set('bankBin', '970436')
  url.searchParams.set('accountNumber', '0123456789')
  url.searchParams.set('amount', String(amount))
  url.searchParams.set('description', `DH${orderId}`)
  url.searchParams.set('theme', 'frame')
  return url.toString()
}

document.querySelector('#qr').src = vietQrUrl({ orderId: 1001, amount: 150000 })
PHP
<?php
$qr_url = 'https://tingee.vn/wp-json/tingee-qr/v1/vietqr' . '?' . http_build_query( [
    'bankBin'       => '970436',
    'accountNumber' => '0123456789',
    'amount'        => 150000,
    'description'   => 'DH1001',
    'theme'         => 'frame',
] );

echo '<img src="' . htmlspecialchars( $qr_url ) . '" alt="VietQR" width="360">';
Python
from urllib.parse import urlencode

params = {
    'bankBin': '970436',
    'accountNumber': '0123456789',
    'amount': 150000,
    'description': 'DH1001',
    'theme': 'frame',
}
qr_url = 'https://tingee.vn/wp-json/tingee-qr/v1/vietqr?' + urlencode(params)
print(f'<img src="{qr_url}" alt="VietQR" width="360">')

Mã QR thường

Ảnh QR cho link, văn bản: /qrcode

Trả về ảnh SVG của mã QR cho nội dung bất kỳ, với màu, kiểu chấm, góc định vị, khung lời nhắc và logo tuỳ chọn.

GET

				https://tingee.vn/wp-json/tingee-qr/v1/qrcode?content=https%3A%2F%2Ftingee.vn&color=e12a41&shape=rounded&logo=tingee										
contentBắt buộc. Nội dung mã, tối đa 1200 byte.
colorMàu dạng RRGGBB, mặc định 000000.
shapesquare · rounded · circle · diamond · leaf
eyesquare · rounded · circle · leaf
frame, frameTextframe=bottom-text để thêm khung có lời nhắc (tối đa 24 ký tự).
logonone · tingee · vietqr
size100–2000 px, mặc định 1000.

Giới hạn

Bộ nhớ đệm, giới hạn và mã lỗi

200Ảnh PNG/SVG. Kèm Cache-Control 7 ngày và ETag: cùng một URL luôn cho cùng một ảnh.
400Tham số sai (bankBin không có trong danh sách, số tài khoản hoặc số tiền không hợp lệ…). Nội dung lỗi trả về dạng JSON.
429 Vượt quá 60 ảnh tạo mới mỗi phút từ một địa chỉ IP. Thử lại sau 60 giây.
503Máy chủ không hỗ trợ tạo PNG; dùng format=svg.

URL ảnh chứa số tài khoản và số tiền, vì vậy ảnh được đánh dấu noindex để không xuất hiện trên công cụ tìm kiếm. Chỉ chia sẻ URL cho người cần chuyển tiền.

Ngân hàng

Mã BIN các ngân hàng hỗ trợ VietQR

Ngân hàng Tên đầy đủ BIN SWIFT
ABBANK Ngân hàng TMCP An Bình 970425 ABBKVNVX
ACB Ngân hàng TMCP Á Châu 970416 ASCBVNVX
Agribank Ngân hàng Nông nghiệp và Phát triển Nông thôn Việt Nam 970405 VBAAVNVX
BacABank Ngân hàng TMCP Bắc Á 970409 NASCVNVX
BaoVietBank Ngân hàng TMCP Bảo Việt 970438 BVBVVNVX
BIDV Ngân hàng TMCP Đầu tư và Phát triển Việt Nam 970418 BIDVVNVX
CAKE TMCP Việt Nam Thịnh Vượng - Ngân hàng số CAKE by VPBank 546034 —
CIMB Ngân hàng TNHH MTV CIMB Việt Nam 422589 CIBBVNVN
COOPBANK Ngân hàng Hợp tác xã Việt Nam 970446 —
Eximbank Ngân hàng TMCP Xuất Nhập khẩu Việt Nam 970431 EBVIVNVX
HDBank Ngân hàng TMCP Phát triển Thành phố Hồ Chí Minh 970437 HDBCVNVX
KBank Ngân hàng Đại chúng TNHH Kasikornbank 668888 KASIVNVX
KienLongBank Ngân hàng TMCP Kiên Long 970452 KLBKVNVX
LPBank Ngân hàng TMCP Lộc Phát Việt Nam 970449 LVBKVNVX
MBBank Ngân hàng TMCP Quân đội 970422 MSCBVNVX
MBV Ngân hàng TNHH MTV Việt Nam Hiện Đại 970414 OCBKUS3M
MoMo CTCP Dịch Vụ Di Động Trực Tuyến 971025 —
MSB Ngân hàng TMCP Hàng Hải Việt Nam 970426 MCOBVNVX
NamABank Ngân hàng TMCP Nam Á 970428 NAMAVNVX
NCB Ngân hàng TMCP Quốc Dân 970419 NVBAVNVX
OCB Ngân hàng TMCP Phương Đông 970448 ORCOVNVX
PGBank Ngân hàng TMCP Thịnh vượng và Phát triển 970430 PGBLVNVX
PVcomBank Ngân hàng TMCP Đại Chúng Việt Nam 970412 WBVNVNVX
PVcomBankPay Ngân hàng TMCP Đại Chúng Việt Nam Ngân hàng số 971133 WBVNVNVX
Sacombank Ngân hàng TMCP Sài Gòn Thương Tín 970403 SGTTVNVX
SaigonBank Ngân hàng TMCP Sài Gòn Công Thương 970400 SBITVNVX
SCB Ngân hàng TMCP Sài Gòn 970429 SACLVNVX
SeABank Ngân hàng TMCP Đông Nam Á 970440 SEAVVNVX
SHB Ngân hàng TMCP Sài Gòn - Hà Nội 970443 SHBAVNVX
ShinhanBank Ngân hàng TNHH MTV Shinhan Việt Nam 970424 SHBKVNVX
Techcombank Ngân hàng TMCP Kỹ thương Việt Nam 970407 VTCBVNVX
Timo Ngân hàng số Timo by Ban Viet Bank (Timo by Ban Viet Bank) 963388 —
TPBank Ngân hàng TMCP Tiên Phong 970423 TPBVVNVX
Ubank TMCP Việt Nam Thịnh Vượng - Ngân hàng số Ubank by VPBank 546035 —
VIB Ngân hàng TMCP Quốc tế Việt Nam 970441 VNIBVNVX
VietABank Ngân hàng TMCP Việt Á 970427 VNACVNVX
VietBank Ngân hàng TMCP Việt Nam Thương Tín 970433 VNTTVNVX
VietCapitalBank Ngân hàng TMCP Bản Việt 970454 VCBCVNVX
Vietcombank Ngân hàng TMCP Ngoại Thương Việt Nam 970436 BFTVVNVX
VietinBank Ngân hàng TMCP Công Thương Việt Nam 970415 ICBVVNVX
VPBank Ngân hàng TMCP Việt Nam Thịnh Vượng 970432 VPBKVNVX
Woori Ngân hàng TNHH MTV Woori Việt Nam 970457 —

Câu hỏi thường gặp

Giải đáp thắc mắc

VietQR API có miễn phí không?

Có. API ảnh miễn phí và không cần khoá. Để đảm bảo ổn định, mỗi địa chỉ IP bị giới hạn số ảnh tạo mới mỗi phút; ảnh đã tạo được trình duyệt và CDN lưu cache.

API ảnh có lưu thông tin tài khoản không?

Không. Máy chủ chỉ vẽ ảnh từ tham số trong URL rồi trả về, không lưu lại. Lưu ý URL ảnh chứa số tài khoản nên chỉ chia sẻ cho người cần chuyển tiền.

Có xác nhận được khách đã thanh toán không?

API ảnh chỉ tạo mã QR. Để nhận thông báo báo có và tự động đối soát đơn hàng, hãy dùng API thanh toán của Tingee tại developers.tingee.vn.

Công cụ khác