VietQR · Tạo mã QR chuyển khoản
✧ Mở bằng AI
POST https://api.pay2s.vn/vietqr/generate
Tạo mã QR chuyển khoản từ tài khoản nhận, ngân hàng, số tiền và nội dung. API này độc lập với OneQR và Collection Link: tạo QR không tạo đơn hàng, không xác nhận thanh toán và không tự phát IPN.
Nguồn đối chiếu: request VietQR trong collection Developer Pay2S và phản hồi API thực tế ngày 11/10/2026.
Xác thực
Gửi Content-Type: application/json. Request Postman và lần gọi kiểm chứng không dùng Authorization, API key hay chữ ký HMAC. Playground gọi API thật qua backend, kể cả khi chưa cấu hình khóa demo.
Body
| Trường | Kiểu trong mẫu | Ý nghĩa |
|---|---|---|
accountNo |
string | Số tài khoản nhận. Mẫu P2S99999999 là tài khoản demo. |
accountName |
string | Tên chủ tài khoản hiển thị. Không phải kết quả xác minh tên tài khoản. |
bankCode |
string | Mã ngân hàng viết tắt; mẫu đã thử: ACB. |
addInfo |
string | Nội dung chuyển khoản. |
amount |
number | Số tiền; mẫu đã thử: 2000. |
template |
string | Mẫu giao diện; đã thử modern. |
maskAccount |
boolean | Tùy chọn che số tài khoản trên ảnh theo mẫu Postman. |
API trả lỗi thiếu trường nếu không có accountNo, accountName, bankCode. Giới hạn độ dài, toàn bộ template/ngân hàng và giá trị mặc định của trường tùy chọn chưa được xác minh; không suy ra từ một request mẫu.
Đọc response và hiển thị ảnh
- Kiểm tra HTTP và
code === "00"trước khi sử dụng kết quả. data.qrCode: chuỗi dữ liệu mã QR, không phải URL ảnh.data.qrDataURL: ảnh PNG dạngdata:image/png;base64,..., có thể gán vàosrccủa ảnh.data.acqId,bankCode,bankName,accountName: thông tin ngân hàng và chủ tài khoản trong kết quả.
// result là JSON response từ API.
if (result.code !== '00') throw new Error(result.desc || 'Không tạo được QR');
document.querySelector('#vietqr').src = result.data.qrDataURL;
Mở Playground để chỉnh request, xem/tải ảnh QR thật và lấy code cURL, Node.js hoặc PHP gọi API.
Ví dụ lỗi đã kiểm chứng
Gửi body {} trả HTTP 400:
{"code":"01","desc":"Missing required fields: accountNo, accountName, bankCode"}
Theo dõi tiền vào
Nếu cần xác nhận thanh toán, tích hợp webhook giao dịch hoặc API lịch sử giao dịch. Nếu cần quản lý đơn hàng, payment link và IPN, dùng Collection Link V2.
Request và response đối chiếu ngày 11/10/2026
Các mẫu dưới đây giữ cấu trúc trường và kiểu dữ liệu. Khóa, chữ ký, URL phiên đã được thay bằng placeholder; danh sách chỉ giữ tối đa hai phần tử và dữ liệu ảnh/PDF/XML dài được rút gọn. Không sao chép placeholder để gọi API thật.
VietQR · Tạo mã QR chuyển khoản
Đã gọi API demo/UAT. Đã gọi API VietQR với tài khoản demo, không gửi Authorization. qrDataURL được rút gọn; response thật chứa ảnh PNG Base64 đầy đủ.
POST /vietqr/generate
Body:
{
"accountNo": "P2S99999999",
"accountName": "TAI KHOAN DEMO",
"bankCode": "ACB",
"addInfo": "THANHTOANDEMO",
"amount": 2000,
"template": "modern",
"maskAccount": true
}
HTTP 200. Response:
{
"code": "00",
"desc": "Gen VietQR successful!",
"data": {
"acqId": "970416",
"bankCode": "ACB",
"bankName": "Ngân hàng TMCP Á Châu",
"accountName": "TAI KHOAN DEMO",
"qrCode": "00020101021238550010A000000727012500069704160111P2S999999990208QRIBFTTA520400005303704540420005802VN62170813THANHTOANDEMO6304D27B",
"qrDataURL": "data:image/png;base64,<PNG_BASE64_RUT_GON>"
}
}