API tạo mã QR
Đọc dạng MarkdownChuyển sang thư viện vietqr
Thư viện vietqr (bản 1.2.0 trở lên) tạo mã QR offline, không gọi API và không cần clientID / apiKey. Hàm generateQR nhận đúng body và trả đúng response JSON như POST /v2/generate:
npm install vietqr
const { generateQR } = require('vietqr');
const res = await generateQR({
accountNo: '113366668888',
accountName: 'QUY VAC XIN PHONG CHONG COVID',
acqId: '970415',
addInfo: 'Ung Ho Quy Vac Xin',
amount: '79000'
});
// { code: '00', desc: 'Gen VietQR successful!', data: { acqId, accountName, qrCode, qrDataURL } }
Thư viện chỉ tạo ảnh QR trơn (PNG, JPG hoặc SVG). Ảnh theo mẫu compact2, compact, print lấy qua Quick Link. Xem thêm tại API tạo mã QR.
Đặc tả API cũ (tham khảo)
https://api.vietqr.io/v2/generateTạo mã QR (đã ngừng hỗ trợ)
API này đã ngừng hỗ trợ và ngừng hoạt động từ 01/01/2027. Dùng thư viện vietqr (npm install vietqr) để tạo mã QR offline.
Tham số
| Trường | Mô tả |
|---|---|
x-client-id bắt buộcheader | Client Id để chứng thực. Truy cập [My VietQR](https://my.vietqr.io) để lấy Client Id |
x-api-key bắt buộcheader | API key để chứng thực. Truy cập [My VietQR](https://my.vietqr.io) để lấy API Key |
Body
| Trường | Mô tả |
|---|---|
accountNo bắt buộcstring | Số tài khoản ngân hàng thụ hưởng. Chỉ nhập số, tối thiểu 6 ký tự, tối đa 19 kí tự Ví dụ: 113366668888 |
accountNamestring | Tên tài khoản ngân hàng. Nhập tiếng Việt không dấu, viết hoa, tối thiểu 5 ký tự, tối đa 50 kí tự, không chứa các ký tự đặc biệt. Ví dụ: QUY VAC XIN PHONG CHONG COVID |
acqId bắt buộcinteger | Mã định danh ngân hàng (thường gọi là BIN) 6 chữ số, quy đinh bởi ngân hàng nước Ví dụ: 970415 |
amountinteger | Số tiền chuyển. Chỉ nhập số, tối đa 13 kí tự Ví dụ: 79000 |
addInfostring | Nội dung chuyển tiền. Nhập tiếng Việt không dấu, tối đa 25 ký tự. Không chứa các ký tự đặc biệt Ví dụ: Ung Ho Quy Vac Xin |
formatstring | Định dạng VietQR trả về Ví dụ: text |
templatestring | Mẫu VietQR trả về Ví dụ: compact |
Response 200
Trạng thái thành công
Success — Thành công
{
"code": "00",
"desc": "Gen VietQR successful!",
"data": {
"acpId": 970415,
"accountName": "QUY VAC XIN PHONG CHONG COVID 19",
"qrCode": "00020101021238560010A0000007270126000697041501121133666688880208QRIBFTTA53037045405790005802VN62220818Ung Ho Quy Vac Xin63043ACF",
"qrDataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAAAk…"
}
}Thiếu tham số — Thiếu tham số
{
"code": "01",
"desc": "Thiếu tham số"
}Thiếu tham số Mã tài khoản — Thiếu tham số Mã tài khoản
{
"code": "11",
"desc": "Thiếu tham số Mã tài khoản"
}Thiếu tham số Mã ngân hàng — Thiếu tham số Mã ngân hàng
{
"code": "12",
"desc": "Thiếu tham số Mã ngân hàng"
}Thiếu tham số Tên tài khoản — Thiếu tham số Tên tài khoản
{
"code": "13",
"desc": "Thiếu tham số Tên tài khoản"
}Mã tài khoản không hợp lệ — Mã tài khoản không hợp lệ
{
"code": "21",
"desc": "Mã tài khoản không hợp lệ"
}Mã ngân hàng không hợp lệ — Mã ngân hàng không hợp lệ
{
"code": "22",
"desc": "Mã ngân hàng không hợp lệ"
}Tên tài khoản không hợp lệ — Tên tài khoản không hợp lệ
{
"code": "23",
"desc": "Tên tài khoản không hợp lệ"
}Số tiền không hợp lệ — Số tiền không hợp lệ
{
"code": "24",
"desc": "Số tiền không hợp lệ"
}Nội dung chuyển tiền không hợp lệ — Nội dung chuyển tiền không hợp lệ
{
"code": "25",
"desc": "Nội dung chuyển tiền không hợp lệ"
}Cách gọi API cũ
curl --location --request POST 'https://api.vietqr.io/v2/generate' \
--header 'x-client-id: <CLIENT_ID_HERE>' \
--header 'x-api-key: <API_KEY_HERE>' \
--header 'Content-Type: application/json' \
--data-raw '{
"accountNo": "113366668888",
"accountName": "QUY VAC XIN PHONG CHONG COVID",
"acqId": "970415",
"addInfo": "Ung Ho Quy Vac Xin",
"amount": "79000",
"template": "compact"
}'
Các loại định dạng trả về
Trường template trong request body của API cũ có thể chọn 1 trong các tùy chọn sau. Với thư viện vietqr, các mẫu này dùng qua Quick Link.
| Giá trị | Size | Ghi chú |
|---|---|---|
| compact2 | 540x640 | Bao gồm : Mã QR, các logo , thông tin chuyển khoản |
| compact | 540x540 | QR kèm logo VietQR, Napas, ngân hàng |
| qr_only | 480x480 | Trả về ảnh QR đơn giản, chỉ bao gồm QR |
| 600x776 | Bao gồm : Mã QR, các logo và đầy đủ thông tin chuyển khoản |
| accountNo | Số tài khoản |
|---|---|
| accountName | Tên tài khoản |
| accId | Mã bin được lấy từ Api bank theo từng ngân hàng |
| addInfo | Nội dung chuyển khoản |
Ý nghĩa các trường trong Response
| Trường dữ liệu | Ý nghĩa |
|---|---|
| qrCode | Mã QR dạng văn bản |
| qrDataURL | Ảnh QR dưới định dạng Data URI, có thể dùng Data URI để nhúng hình ảnh vào website hoặc hiện thị lên trình duyệt. Tìm hiểu thêm về Data URI |
