Check Official Document Format (NĐ 30/2020) Online
Check a Vietnamese administrative .docx against Decree 30/2020: A4 paper, margins, Times New Roman, font size and style of each element, page numbers.
Result
Press “Run” to see the result.
Upload a .docx administrative document (quyết định, công văn, thông báo, tờ trình…) and the API checks it against Nghị định 30/2020/NĐ-CP, Phụ lục I: A4 paper in portrait, margins (top and bottom 20–25 mm, left 30–35 mm, right 15–20 mm), Times New Roman everywhere, and the size, bold, italic and capitals of each element: Quốc hiệu (12–13, bold, capitals), Tiêu ngữ (13–14, bold), parent and issuing agency, number and symbol (13), place and date (13–14, italic), document type (13–14, bold, capitals), subject line, "V/v" line, "Kính gửi", body (13–14, justified, line spacing single to 1.5, first-line indent 1–1.27 cm, ≥ 6 pt between paragraphs), signer title and name (13–14, bold), "Nơi nhận" (12, bold italic) and its list (11). It also checks leading zeros in numbers and dates and the page number position.
Fonts and sizes are resolved like Word does: direct formatting, paragraph and character styles, document defaults and theme fonts. Elements are found heuristically from their text (CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM, "Số:", "…, ngày … tháng … năm …", "Nơi nhận:"…), including inside the usual two-column header tables; each element reports its paragraph index, measured values and the rule, and detection_confidence warns when few elements were recognised.
Findings have a severity (error, warning, info) and an English and Vietnamese message. The file is processed in memory and not stored. Old .doc files must be saved as .docx first.
Use this in your code
curl -X POST "https://apibox.io.vn/v1/vn-nd30-check" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@./my-file"const form = new FormData();
form.append('file', fileInput.files[0]);
const res = await fetch('https://apibox.io.vn/v1/vn-nd30-check', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
body: form,
});
console.log(await res.json());import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-nd30-check",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": open("my-file", "rb")},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-nd30-check');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_POSTFIELDS => ['file' => new CURLFile('my-file')],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));API documentation → Get a free API key
FAQ
Which rules are checked?
Those of NĐ 30/2020/NĐ-CP Phụ lục I that can be read from the file: paper size and orientation, margins, font, size / bold / italic / capitals of each element, body alignment and spacing, leading zeros and page numbers. Wording and the position of the seal are not checked.
How reliable is the element detection?
It is based on text patterns and works on documents built from the official templates. Unusual layouts may be mis-detected; see detection_confidence and the paragraph index of each element.
Is my document stored?
No. The .docx is read in memory for the request and discarded.