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.
https://tingee.vn/wp-json/tingee-qr/v1/vietqr
https://tingee.vn/wp-json/tingee-qr/v1/vietqr?bankBin=970436&accountNumber=0123456789&amount=150000&description=DH1001&theme=frame
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
<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">
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
$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">';
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.
https://tingee.vn/wp-json/tingee-qr/v1/qrcode?content=https%3A%2F%2Ftingee.vn&color=e12a41&shape=rounded&logo=tingee
content | Bắt buộc. Nội dung mã, tối đa 1200 byte. |
color | Màu dạng RRGGBB, mặc định 000000. |
shape | square · rounded · circle · diamond · leaf |
eye | square · rounded · circle · leaf |
frame, frameText | frame=bottom-text để thêm khung có lời nhắc (tối đa 24 ký tự). |
logo | none · tingee · vietqr |
size | 100–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. |
400 | Tham 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. |
503 | Má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
