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

Jurisdiction
Bangladesh · national
Version
1.0.0
Verification
draft

Authoritative source "e-Passport Application Form (New/Re-Issue)", Department of Immigration and Passports (footer: "Government of the People's Republic of Bangladesh, Department of Immigration and Passports, www.dip.gov.bd"), distributed for offline/embassy submission via the Ministry of Foreign Affairs' forms portal at https://mofa.gov.bd/pages/forms/69959494fcf25ca2d1011a0e

Machine access

Schema document
registry/bd/dip/e-passport-application-form/1.0.0/schema.jsonapplication/schema+json
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

  • passportOfficeOrMission enum required

    Corrected 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
  • passportType enum required

    The 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
  • numberOfPages enum required

    A 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
  • durationOfPassport enum required

    Corrected re-extraction (see numberOfPages) shows a genuine 2-value closed set.

    enum: 5 YEARS | 10 YEARS
  • typeOfDelivery enum required

    Corrected re-extraction (see numberOfPages) shows a genuine 3-value closed set.

    enum: REGULAR | EXPRESS | SUPER EXPRESS
  • fullName string required

    Full Name (as per NID/BRC)

    length: 0–200classification: pii
  • givenName string

    Given Name

    length: 0–100classification: pii
  • surname string required

    Surname

    length: 0–100classification: pii
  • dateOfBirth date required

    Date of Birth

    classification: sensitive-pii
  • countryOfBirth enum required

    Corrected 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
  • districtOfBirth string required

    Rendered 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
  • placeOfBirth string required

    Place of Birth

    length: 0–150classification: sensitive-pii
  • gender enum required

    The 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
  • religion enum required

    Corrected re-extraction (see numberOfPages) shows a genuine embedded option list, including an "OTHERS" catch-all.

    enum: 8 valuesclassification: pii
  • nationalIdNo string

    National ID No.

    length: 0–30classification: sensitive-pii
  • birthRegistrationNo string

    Birth Registration No.

    length: 0–30classification: sensitive-pii
  • typeOfCitizenship enum required

    Corrected 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
  • dualCitizenshipStatus boolean

    A checkbox internally named "Dual" with a single "Yes" export value (checked = dual citizenship declared). Gates countryOfOtherCitizenship and foreignPassportNo below.

  • countryOfOtherCitizenship enum

    Corrected re-extraction (see countryOfBirth) shows the same genuine 244-value world-country list, so modeled as enum.

    enum: 244 valuesclassification: pii
  • foreignPassportNo string

    Foreign Passport No.

    length: 0–30classification: sensitive-pii
  • maritalStatus enum required

    Corrected re-extraction (see numberOfPages) shows a genuine embedded option list.

    enum: SINGLE | MARRIED | WIDOW | WIDOWER | DIVORCEDclassification: pii
  • profession enum required

    Corrected 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
  • contactCountryCode enum required

    Corrected 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
  • contactNumber string required

    Second of the two item-30 widgets: the free-text phone number itself, following the contactCountryCode selector.

    length: 0–20classification: pii
  • email string

    E-mail

    patternlength: 0–150classification: pii
  • permanentDistrict string required

    Rendered 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
  • permanentPoliceStation string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • permanentPostOffice string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • permanentPostalCode string required

    Permanent Address: Postal Code

    length: 0–10classification: pii
  • permanentCityVillageHouse string required

    Permanent Address: City/Village/House

    length: 0–200classification: pii
  • permanentRoadBlockSector string required

    Permanent Address: Road/Block/Sector

    length: 0–200classification: pii
  • presentCountry enum required

    Corrected 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
  • presentDistrict string required

    Rendered 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
  • presentPoliceStation string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • presentPostOffice string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • presentPostalCode string required

    Present Address: Postal Code

    length: 0–10classification: pii
  • presentCityVillageHouse string required

    Present Address: City/Village/House

    length: 0–200classification: pii
  • presentRoadBlockSector string required

    Present Address: Road/Block/Sector

    length: 0–200classification: pii
  • fatherName string required

    Father's Name (as per NID/BRC)

    length: 0–200classification: pii
  • fatherNationality enum required

    Corrected 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
  • fatherNationalIdNo string

    Father's National ID No.

    length: 0–30classification: sensitive-pii
  • fatherProfession enum required

    Corrected 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
  • motherName string required

    Mother's Name (as per NID/BRC)

    length: 0–200classification: pii
  • motherNationality enum required

    Corrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.

    enum: 236 valuesclassification: pii
  • motherNationalIdNo string

    Mother's National ID No.

    length: 0–30classification: sensitive-pii
  • motherProfession enum required

    Corrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.

    enum: 61 values
  • guardianName string

    The 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
  • guardianNationality enum

    Corrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.

    enum: 236 valuesclassification: pii
  • guardianNationalIdNo string

    Guardian's National ID No.

    length: 0–30classification: sensitive-pii
  • guardianProfession enum

    Corrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.

    enum: 61 values
  • spouseName string

    Spouse's Name (as per NID/BRC)

    length: 0–200classification: pii
  • spouseNationality enum

    Corrected re-extraction (see fatherNationality) shows the same genuine 236-value nationality list, so modeled as enum.

    enum: 236 valuesclassification: pii
  • spouseNationalIdNo string

    Spouse's National ID No.

    length: 0–30classification: sensitive-pii
  • spouseProfession enum

    Corrected re-extraction (see fatherProfession) shows the same genuine 61-value profession list, so modeled as enum.

    enum: 61 values
  • emergencyContactName string required

    Emergency Contact: Name

    length: 0–200classification: pii
  • emergencyContactRelationship enum required

    Corrected 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
  • emergencyContactCountry enum required

    Corrected re-extraction (see countryOfBirth) shows the same genuine 244-value world-country list, so modeled as enum.

    enum: 244 valuesclassification: pii
  • emergencyContactDistrict string required

    Rendered 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
  • emergencyContactPoliceStation string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • emergencyContactPostOffice string required

    Rendered as a combobox with no embedded option list, so modeled as free-text.

    length: 0–100classification: pii
  • emergencyContactPostalCode string required

    Emergency Contact: Postal Code

    length: 0–10classification: pii
  • emergencyContactCityVillageHouse string required

    Emergency Contact: City/Village/House

    length: 0–200classification: pii
  • emergencyContactRoadBlockSector string required

    Emergency Contact: Road/Block/Sector

    length: 0–200classification: pii
  • emergencyContactCountryCode enum required

    Corrected re-extraction (see contactCountryCode) shows the same genuine calling-code list, so modeled as enum.

    enum: 226 values
  • emergencyContactNumber string required

    Second of the two item-76 widgets: the free-text phone number itself.

    length: 0–20classification: pii
  • emergencyContactEmail string

    Emergency Contact: E-mail

    patternlength: 0–150classification: pii
  • bankName string

    Rendered 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
  • paymentReferenceNo string

    Payment Reference No.

    length: 0–50classification: financial
  • paymentDate date

    Payment Date

    classification: financial
  • paidAmount number

    Item 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
  • paidAmountCurrency enum

    Second 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
  • declarationDate date

    A 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: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-13
  • maturity.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 via curl -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-TLS curl invocation (this object-storage host also fails default certificate verification):
    • HTTP 200, Content-Type: application/pdf, 4,114,743 bytes.
    • sha256: 477e229ac2869691f6bd2a09be01af0d7ebb22cdae0e4591db7687e6ac7dd862 (computed via sha256sum on 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-modified header reads Wed, 18 Feb 2026 10:29:40 GMT, captured here to anchor a future re-verification diff.
  • 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/, not registry/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 an enum, 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 to permanentDistrict and presentDistrict'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/emergencyContactCountry are not Bangladesh-restricted), and countryOfBirth is 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 remain string.
  • Permanent/Present/Emergency-Contact Police Station and Post Office fields — re-checked and confirmed genuinely blank (.items returns 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-value enum (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 .items now also directly confirm the same 3-value set (ORDINARY/OFFICIAL/DIPLOMATIC).
  • gender — modeled as a 3-value enum (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 for bd/brta's vehicleOrTrailer field. .items confirms 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 .items re-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 as paidAmountCurrency, an enum field. 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 requiredWhen condition 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, all required: 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's handling text 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 companion declarationDate field. 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 via pdfjs-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 via pdfjs-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, exercising dualCitizenshipStatus: true's requiredWhen gate on countryOfOtherCitizenship/foreignPassportNo, plus a fully populated spouse block, guardian block, bank payment block, and declarationDate.

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 — drops fullName (a static required: true field) from the single-applicant valid fixture.
  • mutation-control-missing-permanent-district.json — drops permanentDistrict.
  • mutation-control-invalid-enum-gender.json — sets gender to "unknown", not one of the enum's 3 values.
  • mutation-control-invalid-enum-passport-type.json — sets passportType to "tourist", not one of the enum's 3 values.
  • mutation-control-invalid-email-pattern.json — sets email to "not-an-email", violating its regex pattern.
  • mutation-control-missing-conditional-foreign-passport-no.json — starts from the dual-citizen valid fixture and drops only foreignPassportNo, isolating the requiredWhen violation (since dualCitizenshipStatus is still true and countryOfOtherCitizenship is 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.level is national — DIP is Bangladesh's national passport and immigration authority.
  • process.type is application; see "Language" above for the process.language: bn judgment 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.0 draft latest this page has verification record schema.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.