Registry entry
Vietnam Declaration Requesting Issuance of a Domestic Regular Passport for Persons Aged 14 and Above — Tờ khai đề nghị cấp hộ chiếu phổ thông ở trong nước (Mẫu TK01)
Vietnam's form TK01, "Tờ khai đề nghị cấp hộ chiếu phổ thông ở trong nước dành cho người từ 14 tuổi trở lên" (Declaration requesting issuance of a domestic regular passport for persons aged 14 and above), published by the Immigration Department (Cục Quản lý xuất nhập cảnh) under the Ministry of Public Security (Bộ Công an), the citizen-facing declaration a Vietnamese citizen aged 14 or over files, in person, to request a first-time, renewed, or amended regular passport while resident in Vietnam. This schema opens Vietnam as a new jurisdiction in this registry. A separate, distinct form (TK01a) covers the same domestic process for a person under 14, filed by their legal representative, and is out of scope for this schema. TK01 supersedes a materially different, older form of the same purpose, X01 (Circular 29/2016/TT-BCA), which remains live and unauthenticated at its original download URL on xuatnhapcanh.gov.vn despite having been legally superseded twice since (Circular 73/2021/TT-BCA renamed it TK01; Circular 31/2023/TT-BCA restated TK01/TK01a with QR-code and portrait-photo provisions) before this cycle's own Circular 69/2026/TT-BCA (issued 2026-05-22, effective 2026-07-01 — 10 days before this schema's own retrieval date) replaced the template outright. This schema models the current TK01 template exclusively, sourced directly from Circular 69/2026/TT-BCA's own published text, not the stale X01 download. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Socialist Republic of Vietnam or its Ministry of Public Security.
Registry entry
vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc
Machine access
- Schema document
registry/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
30 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.
Fields
-
familyNamestring requiredThe applicant's family name (surname), written in uppercase per the form's own note (2).
length: 1–100classification: pii -
middleAndGivenNamestring requiredThe applicant's middle and given name(s), written in uppercase per the form's own note (2). Printed as a distinct blank from familyName on the same numbered item.
length: 1–200classification: pii -
sexenum requiredThe applicant's sex, printed as two checkboxes (Nam / Nữ).
enum: male | female -
dateOfBirthDayinteger requiredDay of the applicant's date of birth. Printed as a separate blank from month and year.
range: 1–31 -
dateOfBirthMonthinteger requiredMonth of the applicant's date of birth. Printed as a separate blank from day and year.
range: 1–12 -
dateOfBirthYearinteger requiredYear of the applicant's date of birth. Printed as a separate blank from day and month.
range: 1900–2026 -
placeOfBirthstring requiredThe applicant's place of birth (province/city). Per the form's own note (3), if born abroad, the country name is written here instead.
length: 1–200 -
personalIdentificationNumberstring requiredThe applicant's 12-digit personal identification number (số định danh cá nhân), printed as 12 individual digit boxes. Replaces the superseded X01 form's separate CMND/CCCD-number-plus-issue-date-plus-issue-place block, reflecting Vietnam's unified Citizen Identification (CCCD) numbering scheme.
patternclassification: sensitive-pii -
ethnicitystring requiredThe applicant's ethnicity (dân tộc).
length: 1–100 -
religionstring requiredThe applicant's religion (tôn giáo). Accepts "Không" (none) as a valid entry, per common practice on Vietnamese civic forms of this kind.
length: 1–100 -
phoneNumberstring requiredThe applicant's phone number.
length: 1–30classification: pii -
permanentResidencestring requiredThe applicant's registered permanent residence address, printed as a single free-text line — unlike the superseded X01 form, the current TK01 prints no separate ward/district/province breakdown boxes for this address.
length: 1–500classification: pii -
temporaryResidencestring optionalThe applicant's registered temporary residence address, if any. Printed with no "(nếu có)" tag, but modelled as optional per this registry's own convention of not treating a structurally-conditional field (not every applicant maintains a separate temporary-residence registration) as universally required absent an explicit gating field on the source.
length: 0–500classification: pii -
currentResidencestring requiredThe applicant's current place of residence. A distinct concept from permanentResidence/temporaryResidence, with no counterpart on the superseded X01 form.
length: 1–500classification: pii -
occupationstring requiredThe applicant's occupation.
length: 1–200 -
employerNameAndAddressstring optionalThe name and address of the applicant's employer/agency, if any. The current TK01 merges this into a single printed blank, unlike the superseded X01 form's separate name and address boxes.
length: 0–500 -
fatherFullNamestring requiredThe applicant's father's full name.
length: 1–200classification: pii -
fatherDateOfBirthdate requiredThe applicant's father's date of birth, printed as a single dd/mm/yyyy line (unlike the applicant's own date of birth, which is split into three separate blanks).
-
motherFullNamestring requiredThe applicant's mother's full name.
length: 1–200classification: pii -
motherDateOfBirthdate requiredThe applicant's mother's date of birth, printed as a single dd/mm/yyyy line.
-
spouseFullNamestring optionalThe applicant's spouse's full name, if married. The form prints no marital-status selector field to gate this on, so it is modelled as plainly optional rather than invent one, following this registry's own established convention for a similarly-unconditioned field.
length: 0–200classification: pii -
spouseDateOfBirthdate optionalThe applicant's spouse's date of birth, if married, printed as a single dd/mm/yyyy line.
-
oldPassportNumberstring optionalThe number of the applicant's most recently issued regular passport, if any.
length: 0–20 -
oldPassportIssueDatedate optionalThe issue date of the applicant's most recently issued regular passport, if any.
-
feeRefundAccountNumberstring optionalThe applicant's bank account number for a fee refund, if applicable. A field cluster wholly new to this form revision, with no counterpart on the superseded X01 form.
length: 0–30classification: sensitive-pii -
feeRefundAccountHolderNamestring optionalThe name of the fee-refund bank account holder, if a refund account is given.
length: 0–200classification: pii -
feeRefundBankNamestring optionalThe name of the bank holding the fee-refund account, if a refund account is given.
length: 0–200 -
requestDetailsstring requiredFree-text statement of the reason for the request, per the form's own note (4): a first-time or renewed passport, or another specified request.
length: 1–1000 -
passportWithChipboolean optionalThe applicant requests a passport with an embedded electronic chip. One of a mutually exclusive pair with passportWithoutChip; see exclusivityGroups.
-
passportWithoutChipboolean optionalThe applicant requests a passport without an embedded electronic chip. One of a mutually exclusive pair with passportWithChip; see exclusivityGroups.
Verification record
Why this candidate (GOV-2404, "GovSchema Standard Research")
This registry's existing open gaps were all re-confirmed dead ends this cycle before scouting new jurisdictions: Italy's remaining four verticals (Passport, Business Formation, National ID, Visa — all confirmed dead-end in GOV-2382) and Argentina/Chile/Spain's remaining verticals (re-confirmed dead-end in GOV-2397) offered no genuinely open path forward. Three fresh candidate jurisdictions were scouted in parallel: Greece, Peru, and Vietnam. Vietnam's Passport vertical won on source strength — see "Candidates considered and not picked" below for the Greece/Peru comparison.
Source fetch — and a legal-currency correction mid-cycle
The first scouting pass located https://hochieu.xuatnhapcanh.gov.vn/docs/FORM_TO_KHAI_X01.pdf ("Mẫu/Form X01"), live and unauthenticated: HTTP 200, 252,823 bytes, genuine %PDF-1.6 header, SHA-256 3e8830d25e97a919d02c54b665770d86b7bdec51f98dc0f1e3192847135eace9 (independently re-fetched and re-hashed this cycle, matching the scouting pass's own figures exactly). Independent pdfjs-dist@3.11.174 extraction confirmed a genuine AcroForm: 41 /Widget annotations across 39 distinct field names on a single page (2 fields — gioi_tinh, gioi_tinh_con — are radio-button pairs sharing one field name each), every field carrying a self-documenting Vietnamese alternativeText tooltip (e.g. "Nhập thông tin họ và tên" — "Enter full name information"). By AcroForm-richness alone, this was the strongest single source found across all three scouted jurisdictions this cycle.
Before authoring against it, however, a routine legal-currency check (this registry's own source-of-truth-fidelity principle: a schema is only valid if it matches the current live government source) found form X01 was issued under Circular (Thông tư) 29/2016/TT-BCA and has been superseded three times since:
- Circular 73/2021/TT-BCA (2021-06-29) renamed the form TK01.
- Circular 31/2023/TT-BCA (2023-07-20) restated TK01 with QR-code and updated photo provisions, and split the under-14 case into a distinct sibling form, TK01a.
- Circular 69/2026/TT-BCA (2026-05-22, effective 2026-07-01 — ten days before this schema's own retrieval date) replaced the TK-series templates outright, per its own Điều 1 ("Thay thế các biểu mẫu ban hành kèm theo Thông tư số 31/2023/TT-BCA" — "Replace the forms issued under Circular 31/2023/TT-BCA"), naming TK01 (14+, domestic) first among nine replaced forms.
X01's continued live availability at its original government URL is a publishing-lag artifact — the download link on xuatnhapcanh.gov.vn simply has not been updated — not evidence of continued legal validity. Authoring against it would have modelled a form that ceased to be the operative template ten days before this cycle even started. This schema does not use X01 at all; it models the current TK01 exclusively.
The current TK01 template was located inside Circular 69/2026/TT-BCA's own full-text PDF, fetched directly from the Ministry of Public Security's own domain:
https://bocongan.gov.vn/media/bca-media/library-20260605162947-b5b3b663-47e8-48b9-8dbc-431d44435183-thong-tu-69-2026-tt-bca-hc-gth.pdf— HTTP 200, 3,590,521 bytes, genuine%PDF-1.5header, SHA-256aa110281eebb5eed459bd83a9a9000393f4adfb8a0efe56154ca46df5bd2bb19, no login/CAPTCHA/WAF gate.- Discovery path: a web search for the circular's own number and date surfaced
bocongan.gov.vn's own document library entry directly; a secondary confirmation came fromthuvienphapluat.vnandluatvietnam.vn(Vietnamese legal-database mirrors), which corroborated the circular number, date, and "replaces 9 forms, effective 2026-07-01" characterization independently of the primary-source PDF.
Extraction technique: full-page rendering of a mixed-codec scanned gazette
This 12-page PDF is a scanned, signed gazette document. pdfjs-dist's own getTextContent() returns 0 characters on every page except the cover (itself only a garbled-font-encoding operative-text page, page 1). The remaining 11 pages are scanned images split across two different compression codecs within the same PDF: a raw byte scan for JPEG SOI/EOI markers found 8 DCTDecode (JPEG) image objects, but the PDF's own object dictionary revealed 4 more images encoded JBIG2Decode (a bi-level fax-style codec commonly used for black-and-white scanned text, invisible to a JPEG-marker byte scan). Rather than hand-decode two different image codecs, node-canvas + pdfjs-dist full-page rendering (page.render() at scale: 2.0) was used to rasterize every page of the PDF to PNG directly — pdfjs's own worker handles both codecs internally during rendering. This is a new extraction technique for this registry, distinct from both the AcroForm-widget route (fi/poliisi, se/skatteverket) and the raw-JPEG- object-stream route (it/mit, GOV-2389) used in prior cycles, needed here specifically because this source mixes codecs within one document.
Page 4 of the rendered set is Mẫu TK01 in full, legible at 2x scale (see the field-by-field transcription below). Five sibling pages were also visually confirmed en route while locating TK01, cross-checking Điều 1's own enumerated list of nine replaced forms: TK01a (page_img_3/rendered page 3, under-14 domestic), TK02 (rendered page 5, 14+ abroad), TK02a (rendered page 6, under-14 abroad), TK03 (rendered page 7, identity confirmation for a citizen abroad reporting a lost passport), and TK06 (rendered page 1 in JPEG-blob extraction order, "statement regarding failure to collect a passport"). Only TK01 is modelled in this schema.
No /Widget annotations exist anywhere in this PDF (a signed, flattened, print-and-fill gazette scan) — all 30 fields were identified directly from the rendered page's own printed layout and numbered items, following this registry's jp/houmukyoku/se/polisen precedent for a source with a genuine text-or-image layer but no fillable widgets to key field names off of.
Field-by-field transcription (Mẫu TK01)
| Item | Printed Vietnamese | Modelled field(s) | |---|---|---| | 1 | Họ...... Chữ đệm và tên...... | familyName, middleAndGivenName | | 2 | Giới tính: Nam ☐ Nữ ☐ | sex | | 3 | Sinh ngày...tháng...năm... Nơi sinh (tỉnh, thành phố) | dateOfBirthDay, dateOfBirthMonth, dateOfBirthYear, placeOfBirth | | 4 | Số định danh cá nhân [12 digit boxes] | personalIdentificationNumber | | 5 | Dân tộc | ethnicity | | 6 | Tôn giáo | religion | | 7 | Số điện thoại | phoneNumber | | 8 | Nơi thường trú | permanentResidence | | 9 | Nơi tạm trú | temporaryResidence | | 10 | Nơi ở hiện tại | currentResidence | | 11 | Nghề nghiệp | occupation | | 12 | Tên và địa chỉ cơ quan (nếu có) | employerNameAndAddress | | 13 | Cha: họ và tên...sinh ngày | fatherFullName, fatherDateOfBirth | | 13 | Mẹ: họ và tên...sinh ngày | motherFullName, motherDateOfBirth | | 13 | Vợ/chồng: họ và tên...sinh ngày | spouseFullName, spouseDateOfBirth | | 14 | Hộ chiếu phổ thông cấp lần gần nhất (nếu có): Số...cấp ngày | oldPassportNumber, oldPassportIssueDate | | 15 | Số tài khoản hoàn lệ phí (nếu có) / Tên chủ tài khoản / Tên ngân hàng | feeRefundAccountNumber, feeRefundAccountHolderName, feeRefundBankName | | 16 | Nội dung đề nghị | requestDetails | | 16 | Cấp hộ chiếu có/không gắn chíp điện tử | passportWithChip, passportWithoutChip |
All 19 printed numbered items map onto exactly 30 modelled fields; nothing on the form's own face is excluded (the photo boxes and QR code carry no applicant-entered data, and the signature line/declaration clause are not data fields, per this registry's standard signature-line convention).
Differences from the superseded X01 — followed exactly, not carried over
The new TK01 differs materially from the superseded X01 (whose AcroForm this cycle also fully extracted before setting it aside — see above). This schema follows the new form's own structure in every case, disclosed here rather than silently reconciled against the old one:
- Identity number: X01's separate CMND/CCCD-number-plus-issue-date- plus-issue-place block (3 fields:
so_cmnd,ngay_cap_cmnd,noi_cap_cmnd) is replaced by a single 12-digitSố định danh cá nhânfield — modelled aspersonalIdentificationNumberwithpattern: ^[0-9]{12}$— reflecting Vietnam's post-2021 shift to the unified Citizen Identification (CCCD) numbering scheme. - Address structure: X01's three-part Phường/xã–Quận/huyện–Tỉnh/TP breakdown for both permanent and temporary residence (8 fields total:
dctt_xa/dctt_huyen/dctt_tinh,dcta_xa/dcta_huyen/dcta_tinh, plus the two street-line fields) is gone. The new TK01 prints one free-text blank each for permanent residence, temporary residence, and current residence (a third address concept X01 did not carry at all) — modelled as three flat string fields (permanentResidence,temporaryResidence,currentResidence), not a synthetic address sub-object reconstructing the old breakdown. - Employer block: X01's separate employer-name (
ten_co_quan) and employer-address (dia_chi_co_quan) boxes are merged into one printed blank — modelled as one combined optional field,employerNameAndAddress, not force-split back into two fields the current form does not itself distinguish. - No child-inclusion section: X01's entire "child under 9 to be included in this passport" block (6 fields: name, sex, day/month/year of birth, place of birth) has no counterpart on the new TK01. The under-14 case is now exclusively routed through the separate TK01a form (rendered page 3, visually confirmed this cycle — see its own header, "TỜ KHAI Đề nghị cấp hộ chiếu phổ thông ở trong nước dành cho người chưa đủ 14 tuổi"), out of scope for this schema.
- Two wholly new field clusters, with no X01 precedent at all: a fee-refund bank-account block (item 15 — account number, account-holder name, bank name, all optional per the form's own "(nếu có)" tag), reflecting a digital fee-refund channel; and a mutually exclusive chip/no-chip e-passport choice (item 16's own two checkboxes), per the form's own footnote (4) instruction ("Đề nghị cấp hộ chiếu có (hoặc không) gắn chíp điện tử thì đánh dấu (X) vào ô tương ứng" — "mark X in the corresponding box").
Judgment calls disclosed
fatherDateOfBirth/motherDateOfBirth/spouseDateOfBirthare typeddate, notstring. This is a deliberate departure from this registry'sfi/poliisiprecedent for a superficially similar field: that Finnish form's own AcroFormalternativeTexttooltip explicitly allowed a literal "deceased" value in place of a date ("...nếu đã mất thì ghi đã mất"equivalent). This Vietnamese form's rendered page carries no equivalent allowance anywhere in its own footnoted instructions (items 1-5) — absent that evidence on this specific source, the field is modelled as a cleandaterather than assuming the same carve-out applies here too.temporaryResidenceis optional (required: false) despite carrying no printed "(nếu có)" tag on the form itself. Disclosed judgment call: unlikepermanentResidenceandcurrentResidence, a separate temporary-residence registration is not universal in Vietnam's own residence-registration system (Luật Cư trú), and this registry's own established practice (e.g.se/skatteverket/samordningsnummer-ansokan's optional contact-address fields) is to leave a structurally-conditional- but-untagged field optional rather than invent arequiredWhengate the source itself does not support.spouseFullName/spouseDateOfBirthare optional. The form prints no marital-status selector field anywhere to condition this on, so — per this registry's established convention (e.g.fi/poliisi's second- guardian fields) — plain optionality is disclosed rather than a synthetic gating field invented.ethnicity/religion/phoneNumberare modelledrequired: true, matching every other unmarked numbered item on the form;religion's own description notes "Không" (none) is itself a valid entry, consistent with common practice on this class of Vietnamese civic form.
documents[]
The form's own printed text carries no attachment checklist. Two entries were sourced instead from a first-party provincial police portal's own published procedure guidance — conganthanhhoa.gov.vn (Công an tỉnh Thanh Hóa), which cites Circular 31/2023/TT-BCA. This is one circular generation behind 69/2026, but 69/2026's own Điều 1 states it replaces only the TK-series templates themselves, not the underlying documents-required regulation, so the checklist is treated as still current:
photograph(required: true) — matches the new TK01's own printed note (1) exactly: ≤6 months old, 4x6cm, white background, bare head, clear face and ears, no glasses, formal attire.priorPassportOrLossReport(required: false) — required only when the applicant currently holds or previously held a passport (the reissue case) or must submit a police loss report if the previous passport was lost; not required for a genuine first-time applicant. Disclosed as conditionally applicable in prose rather than gated by an inventedrequiredWhen, consistent with this registry's own convention for a non-form-sourceddocuments[]entry (see e.g.se/skatteverket/samordningsnummer-ansokan's residence-permit-card entry).
Conformance verification
A one-off checker script (check_conformance.mjs, not committed — ad hoc per this registry's convention) evaluated every fixture in conformance/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0/ against this schema's fields[] (required/validation.pattern) and exclusivityGroups rules (no documents[].requiredWhen rules to evaluate, per above — photograph is statically required and was included in both valid fixtures). Results:
| Fixture | Errors | Expected | |---|---|---| | first-time-applicant-minimal.json | 0 | 0 | | renewal-applicant-with-temp-residence-and-refund-account.json | 0 | 0 | | mutation-control-missing-static-required.json | 1 (occupation missing) | 1 | | mutation-control-personal-id-pattern-violation.json | 1 (personalIdentificationNumber fails pattern) | 1 | | mutation-control-exclusivity-group-violation.json | 1 (chip_choice both true) | 1 |
All 5 fixtures produced exactly the expected error count. The two valid scenarios cover a minimal first-time applicant (no prior passport, temporary residence, spouse, or fee-refund account) and a fuller renewal applicant (prior passport, temporary residence, spouse, and a fee-refund bank account, exercising every optional field); the three mutation controls each isolate exactly one rule type (required, validation.pattern, exclusivityGroups) by construction.
Registry validation
node tools/validate.mjs registry/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0/schema.json→ok, 1/1 passednode tools/validate-ajv.mjs registry/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0/schema.json→okagainst the v0.3 meta-schema, 1/1 validatednode tools/verify-sources.mjs registry/vn/xuatnhapcanh/to-khai-cap-ho-chieu-pho-thong-trong-nuoc/1.0.0→ see command output in the PR
Candidates considered and not picked
- Greece: DMV (in-person only), Business Formation (telematic ComUnica- style channel, no citizen-fillable PDF), Passport (a downloadable "sample" PDF exists but is 6 embedded scanned JPEGs with zero font references, and the site itself states category-specific forms are only printed in person), and National ID (appointment-only via
id.gov.gr) were all found weak or dead-end. The one strong candidate found — the Greek MFA's national/Schengen visa application form — is a genuine text-layer static PDF, but the primarymfa.grhost returned an Akamai edge block from this sandbox; only a VFS Global consulate mirror (vfsglobal.com/greece/bahrain/...) was independently fetchable. Left as a viable backlog candidate for a future cycle, ideally re-fetching the primarymfa.grcopy from a different network first. - Peru: Passport (Migraciones) and National ID (RENIEC DNI) were re-confirmed appointment/biometric-gated, matching a prior scouting pass's finding. Taxes (SUNAT) is Clave-SOL-login-gated with only instructional cover-sheet PDFs downloadable, not a fillable form. Business Formation (SUNARP incorporation) is web-portal-login-gated, but a sibling SUNAT form, RUC registration (Formulario 2119), is a genuine unauthenticated static text-layer PDF. DMV (MTC driver's-licence application) and Visa (Cancillería's DGC-005 form) are both genuine unauthenticated static text-layer PDFs as well, with DGC-005 the cleanest of the three (single page, bilingual, ~10 fields). All three are real, viable backlog candidates for a future Peru-opening cycle, but none carry genuine AcroForm widgets — weaker by this registry's own bar than Vietnam's TK01 candidate.
Scope and jurisdiction notes
This opens Vietnam as this registry's 37th jurisdiction, via the Passport vertical. Vietnam now stands at 1 of 6 verticals (Passport); Business Formation, DMV, Taxes, Visa, and National ID remain open, unscreened backlog candidates for a future cycle.
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Immigration Department, Ministry of Public Security of Vietnam or any government. The authoritative source is always the live government form and its official instructions.