Tạo PDF báo giá, phiếu thu API
Tạo PDF báo giá, phiếu thu, đơn đặt hàng, hoá đơn bán hàng gọn đẹp từ JSON: tiếng Việt chuẩn, thuế GTGT, số tiền bằng chữ và mã VietQR để thanh toán.
API tạo PDF biến một tài liệu JSON thành file PDF khổ A4 sẵn sàng để in: thông tin bên bán, bên mua, bảng hàng hoá (tên, đơn vị tính, số lượng, đơn giá, chiết khấu và thuế suất GTGT theo từng dòng), cộng tiền hàng, chiết khấu, thuế GTGT, tổng cộng, số tiền bằng chữ (“Mười ba triệu không trăm lẻ tám nghìn đồng”), thông tin thanh toán, ghi chú và phần ký tên. Tên hàng dài tự xuống dòng, tài liệu dài tự sang trang và đánh số trang.
Chữ dùng font Be Vietnam Pro (giấy phép SIL Open Font License), nhúng một phần trong file nên mọi ký tự tiếng Việt hiển thị đúng mà file vẫn nhỏ (khoảng 30 KB). Khi có payment.bank và payment.account, PDF in kèm mã VietQR có sẵn đúng số tiền và nội dung, khách hàng chỉ cần quét bằng app ngân hàng bất kỳ để thanh toán.
Các loại: quote (Báo giá), receipt (Phiếu thu), order (Đơn đặt hàng) và invoice (Hoá đơn bán hàng), bằng tiếng Việt hoặc tiếng Anh, theo màu thương hiệu của bạn. Đây là chứng từ thương mại: không thay thế hoá đơn điện tử theo Nghị định 123/2020/NĐ-CP, vốn phải phát hành qua nhà cung cấp hoá đơn điện tử được cấp phép.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
type | body | string | không | quote | quote, receipt, order hoặc invoice. |
items | body | array | có | Các dòng: {name, unit, quantity, price, discount (%), vat (%)}. | |
seller | body | object | không | {name, address, tax_code, phone, email}. | |
buyer | body | object | không | {name, contact, address, tax_code, phone, email}. | |
number | body | string | không | Số chứng từ. | |
date | body | string | không | Ngày (mặc định: hôm nay). | |
vat | body | number | không | 0 | Thuế suất GTGT mặc định (%) cho mọi dòng. |
discount | body | number | không | Số tiền chiết khấu chung. | |
payment | body | object | không | {bank, account, holder, content}: in mã VietQR (VND). | |
currency | body | string | không | VND | VND, USD hoặc EUR. |
lang | body | string | không | vi | vi hoặc en. |
color | body | string | không | Màu nhấn (hex). | |
format | body | string | không | pdf | pdf hoặc json (PDF base64 + số tổng). |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/invoice-pdf" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"quote","number":"BG-2026-0012","vat":10,"seller":{"name":"Công ty TNHH ABC","tax_code":"0312345678"},"buyer":{"name":"Công ty CP An Phát"},"items":[{"name":"Gói API Pro – 12 tháng","unit":"gói","quantity":1,"price":2400000}],"payment":{"bank":"VCB","account":"0123456789","holder":"CONG TY ABC"}}' \
-o outputconst res = await fetch('https://apibox.io.vn/v1/invoice-pdf', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"type": "quote",
"number": "BG-2026-0012",
"vat": 10,
"seller": {
"name": "Công ty TNHH ABC",
"tax_code": "0312345678"
},
"buyer": {
"name": "Công ty CP An Phát"
},
"items": [
{
"name": "Gói API Pro – 12 tháng",
"unit": "gói",
"quantity": 1,
"price": 2400000
}
],
"payment": {
"bank": "VCB",
"account": "0123456789",
"holder": "CONG TY ABC"
}
}),
});
const blob = await res.blob();import requests
res = requests.post(
"https://apibox.io.vn/v1/invoice-pdf",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"type": "quote", "number": "BG-2026-0012", "vat": 10, "seller": {"name": "Công ty TNHH ABC", "tax_code": "0312345678"}, "buyer": {"name": "Công ty CP An Phát"}, "items": [{"name": "Gói API Pro – 12 tháng", "unit": "gói", "quantity": 1, "price": 2400000}], "payment": {"bank": "VCB", "account": "0123456789", "holder": "CONG TY ABC"}},
timeout=30,
)
open("output", "wb").write(res.content)<?php
$ch = curl_init('https://apibox.io.vn/v1/invoice-pdf');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"type":"quote","number":"BG-2026-0012","vat":10,"seller":{"name":"Công ty TNHH ABC","tax_code":"0312345678"},"buyer":{"name":"Công ty CP An Phát"},"items":[{"name":"Gói API Pro – 12 tháng","unit":"gói","quantity":1,"price":2400000}],"payment":{"bank":"VCB","account":"0123456789","holder":"CONG TY ABC"}}',
]);
$response = curl_exec($ch);
file_put_contents('output', $response);Kết quả trả về
binary application/pdf
Ứng dụng
- Báo giá, xác nhận đơn hàng từ CRM, cửa hàng online
- Phiếu thu học phí, tiền thuê, hội viên, dịch vụ
- Yêu cầu thanh toán kèm mã VietQR
- Chứng từ in ấn từ công cụ no-code
Hỏi đáp
Đây có phải hoá đơn điện tử hợp lệ không?
Không. Hoá đơn GTGT điện tử phải phát hành qua nhà cung cấp được cấp phép và có mã của cơ quan thuế. Hãy dùng cho báo giá, phiếu thu, đơn hàng và chứng từ nội bộ.
Khách hàng thanh toán ngay từ PDF được không?
Được: khi có payment.bank (VCB, MB, TCB…) và payment.account, PDF chứa mã VietQR với tổng tiền và nội dung chuyển khoản, mọi app ngân hàng Việt Nam đều đọc được.
Thuế GTGT và chiết khấu tính thế nào?
Theo từng dòng: thành tiền = số lượng × đơn giá − chiết khấu %, thuế = thành tiền × thuế suất. Chiết khấu chung được trừ trước tổng cộng và thuế giảm theo tỷ lệ.
API liên quan
Metadata ảnh & EXIF
Đọc kích thước, định dạng, thông tin EXIF máy ảnh, thông số chụp và vị trí GPS của ảnh JPEG, PNG, WebP, HEIC, AVIF, GIF… – upload file hoặc qua URL.
PDFMetadata PDF
Đọc metadata file PDF: số trang, tiêu đề, tác giả, phần mềm tạo, ngày tạo, phiên bản PDF, mã hoá, số trường form và khổ giấy từng trang (A4, Letter…).
M↓PDFMarkdown sang PDF
Chuyển Markdown thành PDF khổ A4 / A5 / Letter gọn đẹp: tiêu đề, chữ đậm / nghiêng, liên kết, danh sách lồng, trích dẫn, khối code, bảng, số trang, tiếng Việt đầy đủ.