Developer

VietQR · Tạo mã QR chuyển khoản

✧ Mở bằng AI

Sao chép tài liệu, mở AI rồi dán vào cuộc trò chuyện.

ChatGPTClaudePerplexityGrok
≡ Xem Markdown

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

// 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>"
  }
}
Tìm trong 57 trang tài liệu · Esc để đóng