Vietnam Legal Deadline Calculator API
Vietnamese legal deadlines under Civil Code arts. 144–148 with public holidays, plus limitation periods for contracts, inheritance, labour, appeals.
Give the event date start and a period (15d, 2w, 3m, 1y, 1y6m, 10wd for working days, or "30 ngày", "3 tháng") or a rule id from the built-in table, and the API returns the last day of the time limit following the Civil Code 2015: the event day is not counted (art. 147), months and years end on the corresponding day (the last day of the month when there is none), and a period ending on a weekend or public holiday ends on the next working day (art. 148(5)), using the official Vietnamese holiday schedule. mode=fixed counts a month as 30 days and a year as 365 days (art. 146), suspended_days adds time not counted in a limitation period (art. 156).
Without start, the API lists the table: limitation periods for contract and tort claims (3 years), inheritance (30 / 10 / 3 years), void transactions, commercial disputes (2 years), labour disputes (6 / 9 / 12 months), administrative complaints (90 days) and lawsuits (1 year), appeal periods (15 days, 7 days), cassation protest (3 years), enforcement requests (5 years)… each with its article. Filter with category or q. format=ics returns a calendar file with reminders.
The response explains each step and cites the articles. It is a reference: check how the specific law counts the period.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
start | query | string | no | Event date (YYYY-MM-DD or DD/MM/YYYY). Without it the table of rules is returned. | |
period | query | string | no | Length: 15d, 2w, 3m, 1y, 1y6m, 10wd (working days), "30 ngày", "3 tháng", "nửa tháng". | |
rule | query | string | no | Rule id from the table (e.g. civil_appeal_judgment, contract_dispute, inheritance_real_estate). | |
mode | query | string | no | calendar | calendar (arts. 147–148) or fixed (art. 146: month = 30 days, year = 365 days). |
suspended_days | query | number | no | Days not counted in the limitation period (art. 156). | |
saturday_off | query | boolean | no | true | Treat Saturday as a day off. |
category | query | string | no | Filter the table: civil, inheritance, commercial, labour, administrative, procedure. | |
format | query | string | no | json (default) or ics. |
Example
curl "https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-legal-deadline?start=2026-04-15&rule=civil_appeal_judgment');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Response
{
"event_date": "2026-04-15",
"period": "15d",
"mode": "calendar",
"rule": {
"id": "civil_appeal_judgment",
"category": "procedure",
"vi": "Thời hạn kháng cáo bản án sơ thẩm (dân sự)",
"en": "Appeal against a first-instance civil judgment",
"period": "15d",
"starts_vi": "từ ngày tuyên án (vắng mặt: từ ngày nhận được bản án hoặc bản án được niêm yết)",
"starts_en": "from the pronouncement (absent party: from receipt or posting of the judgment)",
"ref": "Bộ luật Tố tụng dân sự 2015 Điều 273 khoản 1"
},
"start_date": "2026-04-16",
"raw_end_date": "2026-04-30",
"deadline": "2026-05-04",
"deadline_weekday": "Monday",
"deadline_weekday_vi": "Thứ Hai",
"moved_to_next_workday": true,
"moved_because": "Ngày Chiến thắng 30/4 và Quốc tế Lao động 1/5",
"days_from_event": 19,
"steps": [
{
"en": "The event day (2026-04-15) is not counted; the period starts on 2026-04-16 (art. 147(2))."
},
{
"en": "15 day(s) (art. 148(1)-(2)): last day 2026-04-30."
},
{
"en": "2026-04-30 is a day off (Ngày Chiến thắng 30/4 và Quốc tế Lao động 1/5): the period ends at the end of the next working day, 2026-05-04 (art. 148(5))."
},
{
"en": "The period ends at 24:00 on 2026-05-04 (art. 148(6))."
}
],
"legal": [
{
"ref": "Bộ luật Dân sự 2015, Điều 144–148 (cách tính thời hạn), Điều 149–157 (thời hiệu)",
"effective_from": "2017-01-01"
},
{
"ref": "Bộ luật Tố tụng dân sự 2015 Điều 273 khoản 1"
}
],
"notes": [
"Procedural laws sometimes count differently (e.g. \"ngày làm việc\"); courts generally apply BLDS arts. 144–148 to procedural deadlines (BLTTDS art. 182)."
],
"disclaimer": "Reference calculation, not legal advice; check the official text.",
"disclaimer_vi": "Kết quả tham khảo, không phải tư vấn pháp lý; hãy đối chiếu văn bản chính thức.",
"reviewed": "2026-11-11"
}
Use cases
- Compute the last day to appeal a first-instance judgment
- Track limitation periods in case-management software
- Add a deadline with reminders to a lawyer's calendar (.ics)
- Check whether a contract claim is time-barred
FAQ
Does the period start on the day of the event?
No. Under art. 147 the first day is not counted; the period starts the next day. A 15-day appeal period from a judgment pronounced on 15 April ends on 30 April, moved to the next working day when that is a holiday.
What if the last day is a holiday?
The period ends at the end of the next working day (art. 148(5)). Holidays come from the official schedules announced for civil servants.
Which law sets the limitation periods?
Each rule cites its law: Civil Code, Labour Code 2019, Law on Complaints, Civil / Criminal / Administrative Procedure Codes, Law on Civil Judgment Enforcement 2025.
Related APIs
JSON Validator
Check JSON syntax with exact line and column of errors, and validate data against a JSON Schema (draft 4, 7, 2019-09 or 2020-12).
{ }JSON Formatter
Pretty print JSON with 0-8 spaces or tabs, minify it, or sort object keys recursively. Syntax errors are reported with line and column.
CSVCSV to JSON
Convert CSV into an array of JSON objects using the header row, with delimiter auto-detection, number and boolean typing, and row-level errors.