Registry entry
Bangladesh e-Passport Application Form (New/Re-Issue) (Department of Immigration and Passports)
The Department of Immigration and Passports' (DIP) "e-Passport Application Form (New/Re-Issue)", the offline/embassy-submission specimen distributed via the Ministry of Foreign Affairs' (MOFA) forms portal for applicants who cannot or do not use the online e-passport portal (epassport.gov.bd). Opens Bangladesh's Passport vertical (3 of 6, alongside the already-published Taxes vertical (bd/nbr/individual-income-tax-return-form-it-11ga) and DMV vertical (bd/brta/motor-vehicle-registration-application)) and reverses a prior dead-end verdict: GOV-2591's cycle screened Bangladesh's Passport vertical and found it weak/dead-end (an online-portal-only e-passport process with no fillable specimen located at the time); this cycle found MOFA's own forms portal hosts a genuine, unauthenticated, interactive AcroForm PDF for exactly this process. A genuine 3-page, 111-AcroForm-widget specimen (independently confirmed via pdfjs-dist), bilingual (Bengali primary, English secondary) on every label. This is a combined New/Re-Issue form; this v1.0.0 scopes to the first-time (new) applicant pathway. Page 1's items 1-3 (Online Registration ID/Payment Reference/Payment Amount) are confirmed, from the PDF's own embedded default field values ("OFFLINE APPLICATION", "N/A", "N/A"), to be online-system-populated and inapplicable to this offline specimen, so they are excluded as non-applicant-entered. Item 4 (Passport Office/Bangladesh Mission) through item 8 (Type of Delivery) are modeled. Items 9-12 (Previous Passport No./Date of Issue/Date of Expiry/Reason for Re-Issue) are re-issue-only and out of scope. Personal Information (items 13-31), the Permanent Address (38-43), Present Address (44-50), Parental Information (51-58), Guardian Information (59-62, modeled as unconditionally optional: the form's own item 59 label reads "Guardian's Name – if applicable" and its page-3 declaration signature line reads "Signature of Applicant/Guardian (if Applicant is minor)", implying the guardian block applies when the applicant is a minor, but the form provides no dedicated minor/adult boolean field to gate a requiredWhen condition against), Spouse Information (63-66), and Emergency Contact (67-77) blocks are all modeled in full. Items 32-37 ("Additional Information for Official and Diplomatic Passport") are out of scope, as is items 78-79 (Pre-Police Clearance, itself printed "if applicable" with no gating field disclosed by the source) and items 80-83 (Information for Lost/Stolen Passports, a re-issue-only scenario that cannot apply to a first-time applicant). Items 84-87 (Bank Payment Information: Bank Name, Payment Reference No., Payment Date, Paid Amount) are, on independent inspection, ordinary fillable AcroForm widgets with no "for office use" heading anywhere near them (unlike this registry's bd/brta schema's office-only intake box), consistent with Bangladesh's common offline practice of paying the passport fee via a bank challan and citing that receipt's own particulars on the application; they are therefore modeled as applicant-supplied fields, not excluded as a receipt artifact. The List of Attachments checklist (10 checkboxes) is modeled for the 4 checkboxes applicable to a first-time applicant (National ID photocopy, Birth Registration Certificate photocopy, Marriage Certificate photocopy, Other); the remaining 6 (Previous Passport photocopy, NOC, GO, Retirement Document, Pre-Police Clearance Certificate, G.D.) are tied to re-issue or official/diplomatic-passport scenarios and out of scope. The Declaration (page 3) is modeled as an attestation document plus a companion declarationDate field (a genuine, if unusually positioned, AcroForm text widget found near the signature block, disclosed as a judgment call in VERIFICATION.md). A significant data-quality finding from this cycle's own independent extraction: the PDF's internal AcroForm field *names* (mostly plain numeric strings) do **not** reliably correspond to the form's own printed item numbers — e.g. printed items 9/10/11/12 carry internal field names "9"/"11"/"12"/"10" respectively — so every field in this schema was identified by its on-page position and printed label, cross-checked against the form's own text layer, never by trusting the internal PDF field name. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Bangladesh or the Department of Immigration and Passports.
Registry entry
bd/dip/e-passport-application-form
Machine access
- Schema document
registry/bd/dip/e-passport-application-form/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/bd/dip/e-passport-application-form/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
72 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
-
passportOfficeOrMissionenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 154-value embedded option list of DIP passport offices and Bangladesh diplomatic missions, the authoritative and DIP-controlled set of places this application can be filed. Modeled as enum, consistent with this registry's existing precedent for large but genuine government-defined location lists (e.g. ph/comelec's 247-value country enum).
enum: 154 values -
passportTypeenum requiredThe combobox's own default value is "ORDINARY", and the form's own "Additional Information for Official and Diplomatic Passport" heading (items 32-37, out of scope for this v1.0.0) independently names the other two categories, giving a corroborated 3-way closed set.
enum: ordinary | official | diplomatic -
numberOfPagesenum requiredA corrected re-extraction of this combobox's field object (this cycle's fix: pdfjs-dist exposes the option list via `.items`, not `.options`, which the v1.0.0 draft checked and found null) shows a genuine 2-value closed set.
enum: 48 PAGES | 64 PAGES -
durationOfPassportenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 2-value closed set.
enum: 5 YEARS | 10 YEARS -
typeOfDeliveryenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 3-value closed set.
enum: REGULAR | EXPRESS | SUPER EXPRESS -
fullNamestring requiredFull Name (as per NID/BRC)
length: 0–200classification: pii -
givenNamestringGiven Name
length: 0–100classification: pii -
surnamestring requiredSurname
length: 0–100classification: pii -
dateOfBirthdate requiredDate of Birth
classification: sensitive-pii -
countryOfBirthenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 244-value embedded world-country list (comprehensive enough that no applicant's actual country of birth falls outside it), so modeled as enum rather than free-text, consistent with this registry's existing precedent for large country enums (e.g. ph/comelec, nl/denhaag).
enum: 244 valuesclassification: sensitive-pii -
districtOfBirthstring requiredRendered as a combobox. Corrected re-extraction (this cycle's fix: pdfjs-dist exposes a combobox's option list via `.items`, not `.options`, which the v1.0.0 draft checked and found null) shows this combobox does carry a genuine embedded option list — but it is a fixed 64-value list of Bangladesh's own administrative districts only, with no "other"/free-entry catch-all, and this exact field/list is reused across a scenario this schema already discloses as capable of being outside Bangladesh (see presentCountry/emergencyContactCountry, and the source's own dependent Post-Office/Police-Station JavaScript keyed to this same district list). Modeling it as a strict enum would make a legitimate present/emergency-contact address abroad, or a birth abroad, inexpressible, so — unlike this schema's other corrected combobox fields — it is deliberately kept free-text rather than enum.
length: 0–100classification: sensitive-pii -
placeOfBirthstring requiredPlace of Birth
length: 0–150classification: sensitive-pii -
genderenum requiredThe form's own Bengali parenthetical translation literally lists the three options (Female/Male/Other), the same class of exception this registry already uses for bd/brta's vehicleOrTrailer field (a printed label naming exact mutually-exclusive options, even without a checkbox/radio widget).
enum: female | male | otherclassification: pii -
religionenum requiredCorrected re-extraction (see numberOfPages) shows a genuine embedded option list, including an "OTHERS" catch-all.
enum: 8 valuesclassification: pii -
nationalIdNostringNational ID No.
length: 0–30classification: sensitive-pii -
birthRegistrationNostringBirth Registration No.
length: 0–30classification: sensitive-pii -
typeOfCitizenshipenum requiredCorrected re-extraction (see numberOfPages) shows a genuine embedded option list, including an "OTHER" catch-all.
enum: BY BIRTH | BY DESCENT | MIGRATION | NATURALIZATION | BY MARRIAGE | OTHER -
dualCitizenshipStatusbooleanA checkbox internally named "Dual" with a single "Yes" export value (checked = dual citizenship declared). Gates countryOfOtherCitizenship and foreignPassportNo below.
-
countryOfOtherCitizenshipenumCorrected re-extraction (see countryOfBirth) shows the same genuine 244-value world-country list, so modeled as enum.
enum: 244 valuesclassification: pii -
foreignPassportNostringForeign Passport No.
length: 0–30classification: sensitive-pii -
maritalStatusenum requiredCorrected re-extraction (see numberOfPages) shows a genuine embedded option list.
enum: SINGLE | MARRIED | WIDOW | WIDOWER | DIVORCEDclassification: pii -
professionenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 61-value embedded option list, including an "OTHERS" catch-all, so no legitimate value is excluded.
enum: 61 values -
contactCountryCodeenum requiredCorrected re-extraction (see numberOfPages) shows a genuine embedded list of international calling codes (226 distinct codes after de-duplication; the source list repeats a code once per country that shares it, e.g. "1" for every NANP country), comprehensive enough to cover any real applicant, so modeled as enum.
enum: 226 values -
contactNumberstring requiredSecond of the two item-30 widgets: the free-text phone number itself, following the contactCountryCode selector.
length: 0–20classification: pii -
emailstringE-mail
patternlength: 0–150classification: pii -
permanentDistrictstring requiredRendered as a combobox. Corrected re-extraction (this cycle's fix: pdfjs-dist exposes a combobox's option list via `.items`, not `.options`, which the v1.0.0 draft checked and found null) shows this combobox does carry a genuine embedded option list — but it is a fixed 64-value list of Bangladesh's own administrative districts only, with no "other"/free-entry catch-all, and this exact field/list is reused across a scenario this schema already discloses as capable of being outside Bangladesh (see presentCountry/emergencyContactCountry, and the source's own dependent Post-Office/Police-Station JavaScript keyed to this same district list). Modeling it as a strict enum would make a legitimate present/emergency-contact address abroad, or a birth abroad, inexpressible, so — unlike this schema's other corrected combobox fields — it is deliberately kept free-text rather than enum.
length: 0–100classification: pii -
permanentPoliceStationstring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
permanentPostOfficestring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
permanentPostalCodestring requiredPermanent Address: Postal Code
length: 0–10classification: pii -
permanentCityVillageHousestring requiredPermanent Address: City/Village/House
length: 0–200classification: pii -
permanentRoadBlockSectorstring requiredPermanent Address: Road/Block/Sector
length: 0–200classification: pii -
presentCountryenum requiredCorrected re-extraction (see countryOfBirth) shows the same genuine 244-value world-country list, so modeled as enum (the applicant's present address can be Bangladesh or abroad; this world list already covers both).
enum: 244 valuesclassification: pii -
presentDistrictstring requiredRendered as a combobox. Corrected re-extraction (this cycle's fix: pdfjs-dist exposes a combobox's option list via `.items`, not `.options`, which the v1.0.0 draft checked and found null) shows this combobox does carry a genuine embedded option list — but it is a fixed 64-value list of Bangladesh's own administrative districts only, with no "other"/free-entry catch-all, and this exact field/list is reused across a scenario this schema already discloses as capable of being outside Bangladesh (see presentCountry/emergencyContactCountry, and the source's own dependent Post-Office/Police-Station JavaScript keyed to this same district list). Modeling it as a strict enum would make a legitimate present/emergency-contact address abroad, or a birth abroad, inexpressible, so — unlike this schema's other corrected combobox fields — it is deliberately kept free-text rather than enum.
length: 0–100classification: pii -
presentPoliceStationstring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
presentPostOfficestring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
presentPostalCodestring requiredPresent Address: Postal Code
length: 0–10classification: pii -
presentCityVillageHousestring requiredPresent Address: City/Village/House
length: 0–200classification: pii -
presentRoadBlockSectorstring requiredPresent Address: Road/Block/Sector
length: 0–200classification: pii -
fatherNamestring requiredFather's Name (as per NID/BRC)
length: 0–200classification: pii -
fatherNationalityenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 236-value embedded world-nationality list, comprehensive enough that no applicant's actual answer falls outside it, so modeled as enum rather than free-text.
enum: 236 valuesclassification: pii -
fatherNationalIdNostringFather's National ID No.
length: 0–30classification: sensitive-pii -
fatherProfessionenum requiredCorrected re-extraction (see numberOfPages) shows the same genuine 61-value profession list used by the applicant's own profession field (item 29), including an "OTHERS" catch-all, so modeled as enum.
enum: 61 values -
motherNamestring requiredMother's Name (as per NID/BRC)
length: 0–200classification: pii -
motherNationalityenum requiredCorrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.
enum: 236 valuesclassification: pii -
motherNationalIdNostringMother's National ID No.
length: 0–30classification: sensitive-pii -
motherProfessionenum requiredCorrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.
enum: 61 values -
guardianNamestringThe source's own label reads "if applicable"; combined with the page-3 declaration's "Signature of Applicant/Guardian (if Applicant is minor)" line, this block appears intended for a minor applicant, but the form provides no dedicated age/minor boolean field to gate a requiredWhen condition against, so guardianName/guardianNationality/guardianNationalIdNo/guardianProfession are all left unconditionally optional.
length: 0–200classification: pii -
guardianNationalityenumCorrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.
enum: 236 valuesclassification: pii -
guardianNationalIdNostringGuardian's National ID No.
length: 0–30classification: sensitive-pii -
guardianProfessionenumCorrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.
enum: 61 values -
spouseNamestringSpouse's Name (as per NID/BRC)
length: 0–200classification: pii -
spouseNationalityenumCorrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.
enum: 236 valuesclassification: pii -
spouseNationalIdNostringSpouse's National ID No.
length: 0–30classification: sensitive-pii -
spouseProfessionenumCorrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.
enum: 61 values -
emergencyContactNamestring requiredEmergency Contact: Name
length: 0–200classification: pii -
emergencyContactRelationshipenum requiredCorrected re-extraction (see numberOfPages) shows a genuine 26-value embedded option list, including an "OTHERS" catch-all, so modeled as enum.
enum: 26 valuesclassification: pii -
emergencyContactCountryenum requiredCorrected re-extraction (see countryOfBirth) shows the same genuine 244-value world-country list, so modeled as enum.
enum: 244 valuesclassification: pii -
emergencyContactDistrictstring requiredRendered as a combobox. Corrected re-extraction (this cycle's fix: pdfjs-dist exposes a combobox's option list via `.items`, not `.options`, which the v1.0.0 draft checked and found null) shows this combobox does carry a genuine embedded option list — but it is a fixed 64-value list of Bangladesh's own administrative districts only, with no "other"/free-entry catch-all, and this exact field/list is reused across a scenario this schema already discloses as capable of being outside Bangladesh (see presentCountry/emergencyContactCountry, and the source's own dependent Post-Office/Police-Station JavaScript keyed to this same district list). Modeling it as a strict enum would make a legitimate present/emergency-contact address abroad, or a birth abroad, inexpressible, so — unlike this schema's other corrected combobox fields — it is deliberately kept free-text rather than enum.
length: 0–100classification: pii -
emergencyContactPoliceStationstring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
emergencyContactPostOfficestring requiredRendered as a combobox with no embedded option list, so modeled as free-text.
length: 0–100classification: pii -
emergencyContactPostalCodestring requiredEmergency Contact: Postal Code
length: 0–10classification: pii -
emergencyContactCityVillageHousestring requiredEmergency Contact: City/Village/House
length: 0–200classification: pii -
emergencyContactRoadBlockSectorstring requiredEmergency Contact: Road/Block/Sector
length: 0–200classification: pii -
emergencyContactCountryCodeenum requiredCorrected re-extraction (see contactCountryCode) shows the same genuine calling-code list, so modeled as enum.
enum: 226 values -
emergencyContactNumberstring requiredSecond of the two item-76 widgets: the free-text phone number itself.
length: 0–20classification: pii -
emergencyContactEmailstringEmergency Contact: E-mail
patternlength: 0–150classification: pii -
bankNamestringRendered as a combobox with no embedded option list, so modeled as free-text. Part of the Bank Payment Information block (items 84-87); independently confirmed as ordinary fillable AcroForm widgets with no "for office use" heading nearby, consistent with citing a manually-paid bank challan's own particulars.
length: 0–150classification: financial -
paymentReferenceNostringPayment Reference No.
length: 0–50classification: financial -
paymentDatedatePayment Date
classification: financial -
paidAmountnumberItem 87 is genuinely two adjacent widgets (a text amount field plus a blank-default companion combobox with no distinguishing printed sub-label); only the text amount field is modeled here, the companion combobox excluded as unclear.
range: 0–∞classification: financial -
paidAmountCurrencyenumSecond of item 87's two widgets. The v1.0.0 draft excluded this combobox as an "unclear" blank-default companion widget with no distinguishing printed sub-label; this cycle's corrected combobox re-extraction (see VERIFICATION.md) found it in fact carries a genuine 2-value option list (BDT/USD), so it is now modeled as the currency of the paidAmount figure.
enum: BDT | USDclassification: financial -
declarationDatedateA genuine AcroForm text widget found in the page-3 declaration/signature block. Its position (roughly 70-90pt below the printed "Date ___ Signature ___" line) does not sit directly beneath either printed blank, but it is the only unclaimed fillable widget in that region of page 3, so it is modeled here as the date accompanying the applicant's/guardian's signature; disclosed as a judgment call in VERIFICATION.md.
Verification record
This file is the source-review record for this document version, per the manual-source-review-v1 practice.
Current claim
status:draftverification.method:manual-source-review-v1verification.lastVerifiedAt:2026-07-13maturity.level:structural-reference
This is GovSchema Standard Research cycle GOV-2666. It opens Bangladesh's Passport vertical (3 of 6), using the Department of Immigration and Passports' (DIP) "e-Passport Application Form (New/Re-Issue)". Bangladesh previously had two published verticals (Taxes — bd/nbr/individual-income-tax-return-form-it-11ga; DMV — bd/brta/motor-vehicle-registration-application).
Reverses a prior dead-end verdict
GOV-2591's cycle screened Bangladesh's Passport vertical and characterized it as weak/dead-end (Bangladesh's e-passport process is primarily an online portal — epassport.gov.bd — with no fillable PDF specimen located at the time). This cycle found the Ministry of Foreign Affairs' (MOFA) own forms portal (mofa.gov.bd/pages/forms/*) hosts a genuine, unauthenticated, interactive AcroForm PDF distributed specifically for offline/embassy submission of this same process — the same class of reversal already recorded for Bangladesh's DMV vertical (GOV-2644's BRTA finding).
Source verification (independently re-derived, not copied from the task briefing)
- Landing page:
https://mofa.gov.bd/pages/forms/69959494fcf25ca2d1011a0e— independently re-fetched this cycle viacurl -sk -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"(TLS certificate verification fails on this host by default, consistent with the task briefing's note and the same pattern already seen for BRTA/RJSC/ECS elsewhere in this registry): HTTP 200,Content-Type: text/html; charset=utf-8, 72,484 bytes. - PDF source:
https://objectstorage.ap-dcc-gazipur-1.oraclecloud15.com/n/axvjbnqprylg/b/V2Ministry/o/office-mofa/2026/1/a04a6c52-75cf-4edb-820c-0f4dd0f9ecfe.pdf— fetched independently this cycle via the same insecure-TLScurlinvocation (this object-storage host also fails default certificate verification):- HTTP 200,
Content-Type: application/pdf, 4,114,743 bytes. sha256:477e229ac2869691f6bd2a09be01af0d7ebb22cdae0e4591db7687e6ac7dd862(computed viasha256sumon the freshly-downloaded file).- All three figures were independently re-derived this cycle and match the task briefing's own cited figures exactly.
- The response's own
last-modifiedheader readsWed, 18 Feb 2026 10:29:40 GMT, captured here to anchor a future re-verification diff.
- HTTP 200,
- The form's own footer text confirms the issuing agency: "Government of the People's Republic of Bangladesh, Department of Immigration and Passports, www.dip.gov.bd" — MOFA is merely the offline-distribution host, not the issuing agency, hence
registry/bd/dip/, notregistry/bd/mofa/.
PDF structure, independently confirmed via pdfjs-dist@4 (legacy build)
- 3 pages, matching the task briefing.
getFieldObjects()returned 111 distinct field names across the document's AcroForm Widget annotations (the task briefing's own count of 114 widgets is also consistent: a handful of field names — e.g.Road_block_info— repeat across multiple widget rectangles, since they are decorative per-section "ⓘ" info-icon push buttons appearing next to more than one field, not distinct data-bearing fields;getFieldObjects()groups these under one name).getTextContent()returned a full, clean, bilingual (Bengali primary, English secondary) text layer across all 3 pages. Every printed item number (1-87), label, and required-field asterisk was read directly from this text layer, position-sorted into rows, and cross-checked against the task briefing's own transcription — it matches field-for-field, including every asterisk placement.
A significant data-quality finding: AcroForm field names do not track printed item numbers
Independently correlating every Widget annotation's page/rect coordinates against the position-sorted text layer (grouping widgets into rows by rounded y-coordinate, then left-to-right by x, which reproduces the form's own reading order and therefore its own item numbering) revealed that the PDF's internal AcroForm field names — mostly plain numeric strings — do not reliably correspond to the form's own printed item numbers. For example, in the (out-of-scope) Previous-Passport/Re-Issue row:
- Printed item 9 ("Previous Passport No.") is internal field name
"9"— matches. - Printed item 10 ("Date of Issue") is internal field name
"11". - Printed item 11 ("Date of Expiry") is internal field name
"12". - Printed item 12 ("Reason for Re-Issue") is internal field name
"10".
Similar scrambles recur in the (out-of-scope) "Additional Information for Official and Diplomatic Passport" block (items 32-37) and, more importantly, within the in-scope Permanent/Present Address blocks (e.g. printed item 38 "District" is internal field name "37"; printed item 44 "Country" is internal field name "42"). Given this, every field in this schema was identified by its on-page position and printed label, never by trusting the internal PDF field name — the field's own name in this schema.json is a GovSchema-authored camelCase key, not copied from the AcroForm.
Two auxiliary widgets were also excluded on this basis: an internal field named "0" (a tiny widget at the very bottom of page 1, value "0.90", evidently an internal PDF/form-version marker) and an internal field named "88" positioned between printed items 3 and 4 with no printed label of its own and a default value of "N/A" — excluded as a non-conforming artifact widget, alongside items 1-3 (see below).
Combobox option-list check
Corrected 2026-07-13 per GOV-2672 (review gate GOV-2668 requested changes on PR #438). The original claim below was false and is struck through for the record; see "GOV-2672 correction" immediately after it for what actually holds.
~~getFieldObjects() exposes each combobox's embedded /Opt option array (via its options member). All 33 combobox-typed fields in this document returned options: null — no embedded option list on any of them — so, per this registry's own established convention (bd/brta, th/dlt), none is modeled as enum purely on the basis of being rendered as a dropdown.~~
GOV-2672 correction
The .options member checked above does not exist on pdfjs-dist's getFieldObjects() result — it always reads undefined (loosely null), regardless of whether the combobox has an option list. The correct property is .items (an array of {exportValue, displayValue}), confirmed by re-reading pdfjs-dist@4's own FieldObject type. Independent re-extraction against the same freshly re-downloaded, hash-verified PDF (see "Source verification" above — unchanged, same sha256) using .items found 24 of this form's combobox-typed fields do carry a genuine embedded option list, not the near-blanket "options: null" the v1.0.0 draft reported.
Every one of these 24 comboboxes is also flagged editable: true in its field object (an "editable combo box": the AcroForm widget lets the user type a value outside the printed list, not just pick one) — checked directly against the PDF's own field flags, not inferred. This matters for the enum-vs-free-text call below: editable: true alone does not disqualify a field from enum (passportType/gender, discussed next, are themselves editable combos, corroborated instead by independent form text), but it does mean "this combobox has a dropdown" is not, by itself, evidence the value space is closed — the form's authors may have made a list editable specifically because it is not exhaustive.
Fields converted from free-text string to enum this correction, each backed by either an explicit "OTHER(S)" catch-all in the source's own list or a functionally exhaustive world country/nationality/calling-code list (this registry already accepts large genuine-source enums at this scale — see ph/comelec/overseas-voter-registration's and nl/denhaag/voter-registration-abroad's 247-value country enums):
numberOfPages(2:48 PAGES/64 PAGES),durationOfPassport(2:5 YEARS/10 YEARS),typeOfDelivery(3:REGULAR/EXPRESS/SUPER EXPRESS) — the three smallest, most clearly closed sets.religion(8 values +OTHERS),typeOfCitizenship(6, incl.OTHER),maritalStatus(5),emergencyContactRelationship(26 +OTHERS).profession/fatherProfession/motherProfession/guardianProfession/spouseProfession(61 values +OTHERS, one shared list).countryOfBirth/countryOfOtherCitizenship/presentCountry/emergencyContactCountry(244 values, one shared world-country list).fatherNationality/motherNationality/guardianNationality/spouseNationality(236 values, one shared world-nationality list).contactCountryCode/emergencyContactCountryCode(226 distinct calling codes after de-duplication — the source list repeats a code once per country that shares it, e.g."1"for every NANP country; de-duplicated before use as anenum, order otherwise preserved).passportOfficeOrMission(154 values after de-duplication: DIP's own passport offices plus Bangladesh's diplomatic missions — the authoritative, DIP-controlled set of places this application can be filed).
Fields where .items returned a genuine list but the field is deliberately kept free-text (disclosed in each field's own description):
districtOfBirth,permanentDistrict,presentDistrict,emergencyContactDistrict— all four share one 64-value list of Bangladesh's own administrative districts only, with no catch-all, and the source's own dependent-field JavaScript (attached topermanentDistrictandpresentDistrict's underlying widgets) keys the adjacent Post Office/Police Station comboboxes off this same district list — clear evidence the list is meant to be exhaustive for a Bangladesh address. But this schema already discloses (and a committed conformance fixture already exercises) present/emergency-contact addresses abroad (presentCountry/emergencyContactCountryare not Bangladesh-restricted), andcountryOfBirthis a full 244-country list, so an applicant can legitimately be born abroad or reside abroad while this district combobox's option list offers no matching (or "other") value. Enum-ing these four would make a real, already-disclosed scenario inexpressible, so — unlike every other corrected field above — they remainstring.- Permanent/Present/Emergency-Contact Police Station and Post Office fields — re-checked and confirmed genuinely blank (
.itemsreturns a single empty-string entry); the v1.0.0 draft's finding for these specifically was correct, just for the wrong reason (it read.options, which is also blank/absent here, coincidentally reaching the right conclusion).
passportType and gender were already correctly modeled as enum pre-correction, from independent textual corroboration rather than the (broken) combobox check, and are unchanged:
passportType— modeled as a 3-valueenum(ordinary/official/diplomatic) because two independent pieces of the form's own text corroborate a closed 3-way set: the combobox's own default value is"ORDINARY", and the form's own "Additional Information for Official and Diplomatic Passport" section heading (items 32-37) independently names the other two categories. Its combobox's.itemsnow also directly confirm the same 3-value set (ORDINARY/OFFICIAL/DIPLOMATIC).gender— modeled as a 3-valueenum(female/male/other) because its own printed Bengali parenthetical translation literally lists the three options ("নারী/ পুরুষ / অন্যান্য" — "Female/Male/Other"), the same class of exception this registry already uses forbd/brta'svehicleOrTrailerfield..itemsconfirms the same 3-value set (MALE/FEMALE/OTHER).
Split-widget fields
Three printed items are genuinely two adjacent AcroForm widgets, not one, and are modeled as two fields each:
- Item 30 ("Contact No.") — a country-code combobox (default
"880", Bangladesh's own calling code) plus a free-text number field →contactCountryCode+contactNumber. - Item 76 ("Contact No.", Emergency Contact) — the same pattern →
emergencyContactCountryCode+emergencyContactNumber. - Item 87 ("Paid Amount") — a free-text amount field (
paidAmount) plus an adjacent combobox. The v1.0.0 draft excluded this companion combobox as "unclear" (a blank-default widget with no distinguishing printed sub-label). Corrected 2026-07-13 per GOV-2672: the same.itemsre-extraction that fixed the combobox option-list check (above) found this companion combobox in fact carries a genuine 2-value list (BDT/USD), so it is no longer excluded — it is now modeled aspaidAmountCurrency, anenumfield. The unlabeled"88"widget is unrelated (not a combobox) and remains excluded on its own basis.
Scoping decision
In scope (72 fields[] + 5 documents[] entries — 71 + paidAmountCurrency, added per the GOV-2672 correction above)
This v1.0.0 scopes to the first-time (new) applicant pathway of this combined New/Re-Issue form:
- Passport request (items 4-8): Passport Office/Bangladesh Mission, Passport Type, Number of Pages, Duration of Passport, Type of Delivery. Items 1-3 (Online Registration ID/Payment Reference/Payment Amount) are excluded: their own embedded default field values read
"OFFLINE APPLICATION","N/A","N/A"respectively, directly confirming (from the PDF's own data, not inference) that these are online-system auto-fill fields inapplicable to this offline specimen — not data the applicant themselves enters. - Personal Information (items 13-31): Full Name, Given Name, Surname, Date of Birth, Country/District/Place of Birth, Gender, Religion, National ID No., Birth Registration No., Type of Citizenship, Dual Citizenship Status, Country of Other Citizenship, Foreign Passport No., Marital Status, Profession, Contact No. (2 fields), E-mail.
- Permanent Address (items 38-43) and Present Address (items 44-50) — 6 and 7 fields respectively.
- Parental Information (items 51-58): Father's/Mother's Name, Nationality, National ID No., Profession.
- Guardian Information (items 59-62): modeled, but unconditionally optional. The source's own item 59 label reads "Guardian's Name – if applicable (as per NID/BRC)", and the page-3 declaration's signature line reads "Signature of Applicant/Guardian (if Applicant is minor)" — together implying this block is meant for a minor applicant — but the form provides no dedicated age/minor boolean field anywhere to gate a
requiredWhencondition against, so a fabricated gate is not invented; all four guardian fields are left optional, consistent with this registry's convention of not inventing conditions the source does not itself provide. - Spouse Information (items 63-66): all four fields, none printed with an asterisk (applicable only if married).
- Emergency Contact (items 67-77): Name, Relationship, Country, District, Police Station, Post Office, Postal Code, City/Village/House, Road/Block/Sector, Contact No. (2 fields), E-mail.
- Bank Payment Information (items 84-87): Bank Name, Payment Reference No., Payment Date, Paid Amount. Deviation from the task briefing's own suggested scoping: the task flagged this block as possibly a system/office-generated payment receipt rather than applicant-entered data. Independent inspection found no "for office use"/"to be filled in by the office" heading anywhere near these four items (unlike
bd/brta/motor-vehicle-registration-application's own genuinely office-only Section-1 intake box, which is headed that way) — these are ordinary fillable AcroForm widgets, consistent with Bangladesh's common practice of paying a government fee via a manually-completed bank challan and then citing that receipt's own bank name/reference/date/amount on the application itself. They are therefore modeled as applicant-supplied fields, all optional (none carry a printed asterisk). - List of Attachments (4 of the printed checklist's 10 checkboxes): Photocopy of National ID, Photocopy of Birth Registration Certificate, Photocopy of Marriage Certificate, Other — modeled as
documents[]entries, allrequired: false. The form's own instruction header ("Please fill up the application form page 1 to 3 as per National ID/Birth Registration Certificate") implies at least one of National ID or Birth Registration Certificate is expected from every applicant; this is disclosed in each document entry'shandlingtext rather than machine-encoded, consistent with this registry's established convention for source-disclosed-but-ungated "at least one of" business rules (e.g.rw/dgie/passport-application-first-adult's phone-or-email precedent). - Declaration (page 3): modeled as a
documents[]attestation entry (declarationAttestation,required: true) carrying the declaration's verbatim statement text, plus a companiondeclarationDatefield. This last is a disclosed judgment call: a genuine AcroForm text widget (internal name"200") was found in the page-3 declaration/signature area, but its rect sits roughly 70-90pt below the printed "Date ___ Signature ___" line rather than directly beneath either blank. It is nonetheless the only unclaimed fillable widget anywhere in that region of page 3, so it is modeled here as the date accompanying the applicant's/guardian's signature, left optional (no printed asterisk is visible for it either way).
Out of scope, disclosed
- Items 1-3 (Online Registration ID, Online Payment Reference, Online Payment Amount) — confirmed online-system auto-fill fields via their own embedded default values (
"OFFLINE APPLICATION"/"N/A"/"N/A"), not applicant-entered data on this offline specimen. - Items 9-12 (Previous Passport No., Date of Issue, Date of Expiry, Reason for Re-Issue) — re-issue-only; the form's own page-1 note states re-issue-without-change applicants need only fill items 1-37, implying these are populated when the applicant already holds — and is re-issuing — a passport, which cannot apply to a first-time applicant.
- Items 32-37 ("Additional Information for Official and Diplomatic Passport": GO/NOC/Others, Issuing Authority, Reference No., Date, Date of Retirement, Passport Application for) — a narrower official/diplomatic sub-pathway, out of scope for this general first-time-applicant v1.0.0. A future companion schema could model this sub-pathway, mirroring this registry's own established companion-schema pattern (e.g. the CH-ZH Hilfsblatt series, the GR AADE Ε2/Ε3 forms).
- Items 78-79 ("Pre-Police Clearance Information if applicable") — the source itself flags this as conditional but discloses no gating field, and it is plausibly tied to specific occupational/re-issue scenarios; left out of scope per the task's own suggestion, disclosed here as an open question for a future cycle rather than resolved.
- Items 80-83 ("Information for Lost/Stolen Passports") — by definition a re-issue-only scenario (a first-time applicant has never held, and therefore cannot have lost or had stolen, a passport).
- 6 of the 10 List-of-Attachments checkboxes: Photocopy of Previous Passport (re-issue-only), NOC and GO (tied to the official/diplomatic sub-pathway, items 32-33), Retirement Document (tied to item 36, Date of Retirement, itself official-passport-only), Pre-Police Clearance Certificate and G.D. (tied to the excluded items 78-83 above).
- The companion combobox behind item 87 ("Paid Amount") — see "Split-widget fields" above.
- Decorative "ⓘ" info-icon push-button widgets (
Perm_addr_info,Curr_addr_info,Guardian_info,District_info,Road_block_info×4,Lost_info) — confirmed viapdfjs-dist's own "Push buttons without action dictionaries are not supported" warning: these are non-interactive decorative icons with no associated action, not data-bearing fields. - The page-1 barcode/QR annotation (
Barcode) — confirmed viapdfjs-dist's own "Barcodes are not supported" warning: an image-bearing annotation, not applicant input.
Language
process.language is set to bn (Bengali): the form's own title block leads with the Bengali title ("ই-পাসেপাটর্ আেবদন ফরম") before the English translation, and the issuing government's own official language is Bengali, distinguishing this schema from bd/nbr and bd/brta (both genuinely English-only text layers). Every field label on this form is bilingual (English first, Bengali parenthetical, on most rows) — this is disclosed as a judgment call, since the form is functionally usable in either language.
Conformance run
Re-run 2026-07-13 per GOV-2672. Converting 24 fields from free-text string to enum (see "GOV-2672 correction" above) invalidated several fixture values that were free-form prose standing in for what are now closed sets (e.g. maritalStatus: "Unmarried" — not a member of the corrected 5-value enum; countryOfBirth: "Bangladesh" — the corrected enum's actual member is the source's own verbatim casing, "BANGLADESH"). All 8 fixtures were updated to use real enum member values (verbatim source casing, e.g. "ENGINEER", "BANGLADESHI", "SINGLE") wherever a field they populate was converted; fields kept free-text (the four district fields, Police Station/Post Office, City/Village/House, etc.) are untouched. The valid-married-dual-citizen-applicant-with-guardian.json fixture also gained a paidAmountCurrency: "BDT" entry alongside its existing paidAmount, to exercise the new field.
Two hand-authored valid fixtures under conformance/bd/dip/e-passport-application-form/1.0.0/:
valid-single-first-time-applicant.json— an unmarried, single- citizenship applicant applying for an ordinary passport at a domestic passport office; no guardian/spouse/bank-payment data populated (all optional, left absent).valid-married-dual-citizen-applicant-with-guardian.json— a married, dual-citizen applicant applying for a diplomatic passport at an overseas mission, exercisingdualCitizenshipStatus: true'srequiredWhengate oncountryOfOtherCitizenship/foreignPassportNo, plus a fully populated spouse block, guardian block, bank payment block, anddeclarationDate.
Both were checked with a from-scratch Node conformance checker (check_conformance.mjs, not committed — a disposable script, per this registry's own established practice) implementing this schema's own required/requiredWhen/type/validation.{enum,minimum,maximum,pattern, minLength,maxLength} grammar directly against spec/v0.3/SPEC.md's rules:
`` $ node check_conformance.mjs schema.json \ valid-single-first-time-applicant.json \ valid-married-dual-citizen-applicant-with-guardian.json valid-single-first-time-applicant.json: 0 error(s) valid-married-dual-citizen-applicant-with-guardian.json: 0 error(s) ``
Six mutation-control fixtures, each isolated to raise exactly one error:
mutation-control-missing-full-name.json— dropsfullName(a staticrequired: truefield) from the single-applicant valid fixture.mutation-control-missing-permanent-district.json— dropspermanentDistrict.mutation-control-invalid-enum-gender.json— setsgenderto"unknown", not one of the enum's 3 values.mutation-control-invalid-enum-passport-type.json— setspassportTypeto"tourist", not one of the enum's 3 values.mutation-control-invalid-email-pattern.json— setsemailto"not-an-email", violating its regex pattern.mutation-control-missing-conditional-foreign-passport-no.json— starts from the dual-citizen valid fixture and drops onlyforeignPassportNo, isolating therequiredWhenviolation (sincedualCitizenshipStatusis stilltrueandcountryOfOtherCitizenshipis still present in that fixture).
`` $ node check_conformance.mjs schema.json \ mutation-control-missing-full-name.json \ mutation-control-missing-permanent-district.json \ mutation-control-invalid-enum-gender.json \ mutation-control-invalid-enum-passport-type.json \ mutation-control-invalid-email-pattern.json \ mutation-control-missing-conditional-foreign-passport-no.json mutation-control-missing-full-name.json: 1 error(s) - fullName: required but missing mutation-control-missing-permanent-district.json: 1 error(s) - permanentDistrict: required but missing mutation-control-invalid-enum-gender.json: 1 error(s) - gender: value "unknown" not in enum ["female","male","other"] mutation-control-invalid-enum-passport-type.json: 1 error(s) - passportType: value "tourist" not in enum ["ordinary","official","diplomatic"] mutation-control-invalid-email-pattern.json: 1 error(s) - email: value "not-an-email" does not match pattern ^[^@\s]+@[^@\s]+\.[^@\s]+$ mutation-control-missing-conditional-foreign-passport-no.json: 1 error(s) - foreignPassportNo: required but missing ``
All six negative controls raised exactly one error each, and neither valid scenario raised an unexpected error.
Both registry validators were run against the schema document and pass:
``` $ node tools/validate.mjs registry/bd/dip/e-passport-application-form/1.0.0/schema.json ok registry/bd/dip/e-passport-application-form/1.0.0/schema.json 1/1 document(s) passed.
$ node tools/validate-ajv.mjs registry/bd/dip/e-passport-application-form/1.0.0/schema.json ok registry/bd/dip/e-passport-application-form/1.0.0/schema.json [v0.3] 1/1 document(s) validated against the meta-schema (ajv 2020-12). ```
(tools/node_modules did not have ajv/ajv-formats present in this worktree at the start of this cycle; ran npm ci --include=dev inside tools/ first, per this registry's own known NODE_ENV=production gotcha.)
tools/govschema-client/registry-index.json was regenerated via npm run build-index inside tools/govschema-client/.
Scope and jurisdiction notes
- Opens Bangladesh's Passport vertical (3 of 6); Taxes and DMV are already published. Business Formation, Visa, and National ID remain open backlog per prior cycles' screening.
jurisdiction.levelisnational— DIP is Bangladesh's national passport and immigration authority.process.typeisapplication; see "Language" above for theprocess.language: bnjudgment call.- Companion candidates for a future cycle: (1) the official/diplomatic sub-pathway (items 32-37) excluded here, as its own companion schema, mirroring this registry's CH-ZH Hilfsblatt / GR AADE Ε2-Ε3 companion- schedule precedent; (2) the re-issue pathway (items 9-12, 78-83), which would need this same form modeled from the opposite (holder-already-has- a-passport) angle; (3) Bangladesh's remaining Business Formation, Visa, and National ID verticals.
Re-verification
Per the practice's cadence, nextReviewBy is set to 2027-01-13 (6 months). A future review should prioritize: (1) confirming the object-storage-hosted PDF has not been silently replaced with a revised edition (this cycle captured its last-modified: Wed, 18 Feb 2026 10:29:40 GMT header to anchor a future diff, unlike the BRTA cycle's PDF host, which returned no such header); (2) re-attempting DIP's own site (dip.gov.bd)/the online e-passport portal (epassport.gov.bd) directly, in case a more authoritative first-party specimen becomes reachable in the future; (3) whether a future cycle wants to model the official/diplomatic sub-pathway or the re-issue pathway as separate companion schemas.
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 Department of Immigration and Passports or any government. The authoritative source is always the live government form and its official instructions.