Đọc mã QR căn cước (CCCD) API
Đọc mã QR trên thẻ căn cước gắn chip (CCCD / căn cước) từ chuỗi hoặc ảnh: số định danh, họ tên, ngày sinh, giới tính, nơi cư trú, ngày cấp, kèm kiểm tra.
Mã QR in trên thẻ CCCD gắn chip (từ 2021) và thẻ căn cước (từ 07/2024) chứa một dòng chữ phân tách bằng dấu |: số định danh cá nhân 12 số, số CMND 9 số cũ (có thể trống), họ tên, ngày sinh (ddmmyyyy), giới tính, nơi cư trú và ngày cấp. Gửi chuỗi đó qua qr, hoặc ảnh chụp mã qua image (PNG / JPEG, máy chủ tự đọc QR), API trả JSON gọn với ngày tháng dạng ISO.
Số 12 chữ số được đối chiếu với chính thông tin trên thẻ: mã tỉnh nơi đăng ký khai sinh (kèm tỉnh mới sau sáp nhập 2025), chữ số giới tính / thế kỷ và hai số năm sinh phải khớp ngày sinh và giới tính in trên thẻ. Họ tên được tách thành họ, đệm, tên; địa chỉ được đối chiếu với xã, phường và tỉnh hiện hành; thời hạn thẻ được tính theo các mốc 14, 25, 40 và 60 tuổi của Luật Căn cước 2023 (thẻ cấp trong vòng 2 năm trước mốc tuổi thì dùng đến mốc tiếp theo).
API chỉ đọc nội dung QR, không chứng minh thẻ là thật (eKYC cần đọc chip NFC). Đây là dữ liệu cá nhân: chỉ xử lý trong bộ nhớ, không lưu và không ghi log.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
qr | body | string | không | Chuỗi QR (số định danh|CMND cũ|họ tên|ddmmyyyy|giới tính|địa chỉ|ddmmyyyy). | |
image | body | file | không | Hoặc ảnh PNG / JPEG chụp mã QR (multipart hoặc image_base64). | |
address | body | boolean | không | true | false: không đối chiếu địa chỉ với xã, phường hiện hành. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/cccd-qr" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"qr":"079099012345|272345678|Nguyễn Văn An|15081999|Nam|123 Lê Lợi, Phường Bến Thành, Quận 1, TP. Hồ Chí Minh|20042021"}'const res = await fetch('https://apibox.io.vn/v1/cccd-qr', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"qr": "079099012345|272345678|Nguyễn Văn An|15081999|Nam|123 Lê Lợi, Phường Bến Thành, Quận 1, TP. Hồ Chí Minh|20042021"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/cccd-qr",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"qr": "079099012345|272345678|Nguyễn Văn An|15081999|Nam|123 Lê Lợi, Phường Bến Thành, Quận 1, TP. Hồ Chí Minh|20042021"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/cccd-qr');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"qr":"079099012345|272345678|Nguyễn Văn An|15081999|Nam|123 Lê Lợi, Phường Bến Thành, Quận 1, TP. Hồ Chí Minh|20042021"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"source": "text",
"valid": true,
"errors": [],
"warnings": [],
"id_number": "079099012345",
"old_id_number": "272345678",
"full_name": "Nguyễn Văn An",
"date_of_birth": "1999-08-15",
"sex": "male",
"address": "123 Lê Lợi, Phường Bến Thành, Quận 1, TP. Hồ Chí Minh",
"issue_date": "2021-04-20",
"name_parts": {
"family_name": "Nguyễn",
"middle_name": "Văn",
"given_name": "An",
"unaccented": "NGUYEN VAN AN"
},
"number_details": {
"province_code": "079",
"province": "TP. Hồ Chí Minh",
"province_since_2025": "TP. Hồ Chí Minh",
"sex": "male",
"century_digit": 0,
"birth_year": 1999,
"serial": "012345"
},
"validity": {
"valid_until": "2024-08-15",
"lifetime": false,
"expired": true,
"rule": "Renew at 14, 25, 40 and 60; a card issued within 2 years before one of these ages stays valid until the next one (Luật Căn cước 2023, Điều 21)."
},
"address_parsed": {
"format": "old (before 07/2025)",
"matched": true,
"result": {
"ward": "Phường Bến Thành",
"ward_code": "26743",
"province": "Thành phố Hồ Chí Minh",
"province_code": "79",
"postal_code": "71009",
"full_address": "123 Lê Lợi, Phường Bến Thành, Thành phố Hồ Chí Minh"
}
},
"note": "Parsed from the QR text only: this does not prove the card is genuine (use NFC chip reading / C06 verification for eKYC). Nothing is stored or logged."
}
Ứng dụng
- Khai báo lưu trú khách sạn, nhà trọ từ thẻ căn cước
- Rút ngắn form đăng ký khách hàng (ngân hàng, SIM, phòng khám)
- Đối chiếu thông tin nhập tay với thẻ
- Phát hiện thẻ căn cước hết hạn khi làm thủ tục
Hỏi đáp
Có kiểm tra với cơ sở dữ liệu dân cư không?
Không. API chỉ kiểm tra nội dung QR và cấu trúc số; xác thực thẻ thật cần đọc chip NFC hoặc dịch vụ của C06.
Hỗ trợ loại thẻ nào?
Thẻ CCCD gắn chip (2021) và thẻ căn cước mới (2024). CCCD mã vạch đời cũ và CMND 9 số không có mã QR này.
Dữ liệu có bị lưu lại không?
Không. Yêu cầu được xử lý trong bộ nhớ, không ghi vào log, bộ nhớ đệm hay cơ sở dữ liệu.
API liên quan
Kiểm tra JSON
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
{ }Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.