{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "bd/dip/machine-readable-visa-application-form",
  "version": "1.0.0",
  "title": "Bangladesh Machine Readable Visa (MRV) Application Form (D.I.P. Form-4)",
  "description": "The Department of Immigration and Passports' (DIP) \"Machine Readable Visa Application Form\" (D.I.P. Form-4, \"free of cost\"), distributed via Bangladesh's Online MRV Portal (visa.gov.bd) for foreign nationals applying for a Bangladeshi visa. Opens Bangladesh's Visa vertical (4 of 6, alongside the already-published DMV (`bd/brta/motor-vehicle-registration-application`), Taxes (`bd/nbr/individual-income-tax-return-form-it-11ga`), and Passport (`bd/dip/e-passport-application-form`) verticals). A genuine, unauthenticated, 4-page, plain print-and-fill PDF (no AcroForm widgets, confirmed via pdfjs-dist: 0 annotations across all 4 pages) with a clean, complete extractable text layer. This single physical form is reused across five distinct application pathways selected by the applicant: New Visa, Extension of Visa, No Visa Required (NVR) declaration, Transit/On Arrival Visa, and a Police Verification/Official Use back-office block. This v1.0.0 scopes to the New Visa pathway only — the pathway a first-time foreign applicant uses to request a new Bangladeshi visa — comprising Personal Details (page 1, items 1-10), Travel Document Details (page 1, items 11-20), Payment Details (page 1, items 21-24), and the New Visa section (page 2, items 25-28). The Extension of Visa (items 29-38), No Visa Required (items 39-50), and Transit/On Arrival Visa (items 51-56) sections are alternate uses of this same physical form for different applicant categories/processes and are out of scope for this v1.0.0, disclosed in VERIFICATION.md as candidates for a future revision. The source prints no required-field asterisks or other required-field markup anywhere on the form (unlike this jurisdiction's own `bd/dip/e-passport-application-form`); this schema marks as `required` only the fields that are unconditionally essential to any visa application (identity, passport particulars, purpose/duration/arrival-date/entries of the requested visa) and leaves every other field optional, a disclosed judgment call consistent with this registry's own established `bd/brta/motor-vehicle-registration-application` and `th/dlt/vehicle-registration-application` precedent for source forms with no printed requiredness markup. None of this form's checkbox groups (Sex, Marital Status, Purpose of Visit, Intended Number of Entries) render as fillable AcroForm widgets — each is a printed option list next to unchecked boxes — but every one names an exact, exhaustive, mutually-exclusive option set in print, so each is modeled as `enum`, consistent with this registry's own `bd/dip/e-passport-application-form` `gender` precedent (a printed option list is sufficient corroboration even without a checkbox widget). Page 3's supporting-document checklist (19 checkbox items) is a single generic list shared by all five pathways; this v1.0.0 models only the items applicable to a general New Visa applicant (passport/photo/payment-slip, plus purpose-conditional recommendation letter, work permit, and sponsoring-company trade licence) as `documents[]` entries, and discloses the remaining category-specific items (marriage/birth certificate, a parent's/spouse's visa or passport copy, an affidavit, a Sri Lankan-national-specific No Objection Certificate, company income-tax/TIN documents, a bilateral-agreement reference, security clearance, and an overstay payment slip) as out of scope in VERIFICATION.md. Page 3's Police Verification and \"For Official Use\" blocks are DIP/consular-staff-completed, not applicant-supplied, and are excluded entirely. Page 4 (general instructions: photo specification, fee non-refundability, submission process) is informational only and not modeled. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Bangladesh or the Department of Immigration and Passports.",
  "status": "draft",
  "jurisdiction": {
    "country": "BD",
    "level": "national"
  },
  "authority": {
    "name": "Department of Immigration and Passports",
    "abbreviation": "DIP",
    "url": "https://www.dip.gov.bd"
  },
  "process": {
    "type": "application",
    "language": "en"
  },
  "source": {
    "url": "https://visa.gov.bd/Img/MRV_FORM.pdf",
    "retrievedAt": "2026-07-13",
    "documentRef": "\"D.I.P Form-4 (Free of cost)\", \"Machine Readable Visa Application Form\", Government of the People's Republic of Bangladesh, Department of Immigration & Passports, distributed via the Online MRV Portal at https://visa.gov.bd (Download page: https://visa.gov.bd/DownloadMRVForm.aspx)"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-13",
    "verifiedBy": "GovSchema Engineering",
    "nextReviewBy": "2027-01-13",
    "notes": "GovSchema Standard Research cycle GOV-2675 (child issue GOV-2677). Opens Bangladesh's Visa vertical (4 of 6). Scouted this cycle against two other candidates (Bangladesh Business Formation via RJSC, and Greece's Passport vertical); this MRV form was the strongest of the three (official government portal, clean text layer, independently corroborated by a byte-near-identical embassy mirror), so it was picked for authoring this cycle. Independently re-fetched the source this cycle via a plain curl (no TLS workaround needed, unlike several other Bangladesh government hosts already in this registry): HTTP 200, Content-Type application/pdf, 124451 bytes, sha256 fb2d675a5a98f7ed9a06a11699cdf426cb6a8a26d34ca1c2da89fd58fa353f7d. Cross-checked against a corroborating mirror, `https://www.bangladeshembassy.org.sa/downloads/visa_Form.pdf` (HTTP 200, application/pdf, 124473 bytes, sha256 2c3701d45a47600eb44b1fc6dc0254812d82fcc11b3b8ed740f1842a242f38f2) — not byte-identical (22-byte difference, consistent with an embedded metadata/producer-string difference between two independently-hosted copies of the same form), but confirms this is genuinely the same DIP Form-4 rather than a coincidentally similar document. Parsed the downloaded PDF with pdfjs-dist@3.11.174 (legacy build), installed fresh in a scratch directory (not a repo dependency): 4 pages, getFieldObjects() returned null (no AcroForm), and getAnnotations() returned 0 for every one of the 4 pages — a plain print-and-fill document. getTextContent() returned a full, clean English text layer across all 4 pages (1259/1309/1093/1278 characters respectively, 4939 total). Every field below was extracted directly from this text layer; sourceRef citations quote the source's own item numbers and printed labels verbatim. No required-field asterisks, bold markers, or other requiredness markup were found anywhere in the extracted text (confirmed by grepping the raw text for '*' — zero occurrences), unlike this jurisdiction's own e-passport form (bd/dip/e-passport-application-form), whose AcroForm-derived text layer does carry printed asterisks. Given this task's own instruction to base requiredness on the source, and finding none, only fields unconditionally essential to any visa request (personal identity, passport particulars, and the requested visa's purpose/duration/arrival date/entry count) are marked `required: true`; every other field (addresses, contact details, marital status, occupation, nationality at birth, payment particulars, and previous-visit/previous-visa history) is left optional — disclosed as a judgment call, consistent with this registry's own bd/brta and th/dlt precedent for source forms without printed requiredness markup. Two valid conformance fixtures (0 errors each) plus 6 mutation-control fixtures (each raising exactly 1 error) are committed under conformance/bd/dip/machine-readable-visa-application-form/1.0.0/. See VERIFICATION.md for the full sourcing record, every scoping/disclosure judgment call, and the complete item-to-field derivation."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering",
    "assertedAt": "2026-07-13"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "firstGivenName",
      "label": "Full Name: First/Given Name(s)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, item 01: \"Full Name :(as in the passport) First/ Given Name (S)\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "lastSurname",
      "label": "Full Name: Last/Surname",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, item 01: \"Full Name :(as in the passport) ... Last/ Surname\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "permanentAddress",
      "label": "Permanent Address",
      "type": "string",
      "required": true,
      "classification": "pii",
      "sourceRef": "Page 1, item 02: \"Permanent address:\"",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "permanentAddressContactNo",
      "label": "Permanent Address: Contact No.",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, item 02: \"Contact no:\" (Permanent address block)",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "permanentAddressEmail",
      "label": "Permanent Address: E-mail",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, item 02: \"E-mail:\" (Permanent address block)",
      "validation": {
        "maxLength": 150,
        "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"
      }
    },
    {
      "name": "addressInBangladesh",
      "label": "Address in Bangladesh",
      "type": "string",
      "classification": "pii",
      "description": "The source provides no dedicated boolean gate distinguishing whether the applicant already has an address in Bangladesh (e.g. a hotel booking or host address), so this and its two companion fields are left unconditionally optional.",
      "sourceRef": "Page 1, item 03: \"Address in Bangladesh:\"",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "addressInBangladeshContactNo",
      "label": "Address in Bangladesh: Contact No.",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, item 03: \"Contact no:\" (Address in Bangladesh block)",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "addressInBangladeshEmail",
      "label": "Address in Bangladesh: E-mail",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, item 03: \"E-mail:\" (Address in Bangladesh block)",
      "validation": {
        "maxLength": 150,
        "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"
      }
    },
    {
      "name": "dateOfBirth",
      "label": "Date of Birth",
      "type": "date",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Page 1, item 04: \"Date of Birth: DD/MM/YYYY\""
    },
    {
      "name": "sex",
      "label": "Sex",
      "type": "enum",
      "required": true,
      "classification": "pii",
      "description": "The source prints a 3-option list (\"Male Female Others\") next to unchecked boxes, not a fillable AcroForm widget; the printed option list is treated as sufficient corroboration for an enum, consistent with this registry's own `bd/dip/e-passport-application-form` `gender` precedent.",
      "sourceRef": "Page 1, item 05: \"Sex: Male Female Others\"",
      "validation": {
        "enum": [
          "Male",
          "Female",
          "Others"
        ]
      }
    },
    {
      "name": "placeOfBirth",
      "label": "Place of Birth",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Page 1, item 06: \"Place of Birth:\"",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "presentNationality",
      "label": "Present Nationality",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Modeled as free-text: the source prints only a blank line with no embedded country-selector option list (unlike the AcroForm-based `bd/dip/e-passport-application-form`, this form has no combobox widgets at all).",
      "sourceRef": "Page 1, item 07: \"Present Nationality:\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "nationalityAtBirth",
      "label": "Nationality at Birth",
      "type": "string",
      "classification": "pii",
      "sourceRef": "Page 1, item 08: \"Nationality at Birth:\"",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "occupation",
      "label": "Occupation",
      "type": "string",
      "sourceRef": "Page 1, item 09: \"Occupation:\"",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "maritalStatus",
      "label": "Marital Status",
      "type": "enum",
      "classification": "pii",
      "description": "The source prints a 4-option list next to unchecked boxes (\"Unmarried Married Widower/Widow Divorced\"); \"Widower/Widow\" is printed as a single combined option, not two separate ones.",
      "sourceRef": "Page 1, item 10: \"Marital Status : Unmarried Married Widower/Widow Divorced\"",
      "validation": {
        "enum": [
          "Unmarried",
          "Married",
          "Widower/Widow",
          "Divorced"
        ]
      }
    },
    {
      "name": "passportNumber",
      "label": "Passport No.",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "sourceRef": "Page 1, item 11: \"Passport No:\"",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "typeOfPassport",
      "label": "Type of Passport",
      "type": "string",
      "description": "Modeled as free-text: the source prints only \"Type of Passport\" with no adjacent option list or checkbox (unlike `sex`/`maritalStatus`/`purposeOfVisit`/`intendedNumberOfEntries`, which each name an explicit option set in print).",
      "sourceRef": "Page 1, item 12: \"Type of Passport\"",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "passportPlaceOfIssue",
      "label": "Passport: Place of Issue",
      "type": "string",
      "required": true,
      "sourceRef": "Page 1, item 13: \"Place of Issue:\" (passport block)",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "passportDateOfIssue",
      "label": "Passport: Date of Issue",
      "type": "date",
      "required": true,
      "sourceRef": "Page 1, item 14: \"Date of issue: DD/MM/YYYY\" (passport block)"
    },
    {
      "name": "passportDateOfExpiry",
      "label": "Passport: Date of Expiry",
      "type": "date",
      "required": true,
      "sourceRef": "Page 1, item 15: \"Date of Expiry: DD/MM/YYYY\" (passport block)"
    },
    {
      "name": "dateOfLastVisitToBangladesh",
      "label": "Date of Last Visit to Bangladesh",
      "type": "date",
      "description": "Not applicable to a genuine first-time visitor; left optional since the source provides no boolean gate for prior-visit status.",
      "sourceRef": "Page 1, item 16: \"Date of last visit to Bangladesh: DD/MM/YYYY\""
    },
    {
      "name": "lastVisaNumber",
      "label": "Last Visa No.",
      "type": "string",
      "description": "Companion to dateOfLastVisitToBangladesh; applicable only if the applicant has held a prior Bangladeshi visa.",
      "sourceRef": "Page 1, item 17: \"Last Visa No:\"",
      "validation": {
        "maxLength": 30
      }
    },
    {
      "name": "lastVisaDateOfIssue",
      "label": "Last Visa: Date of Issue",
      "type": "date",
      "sourceRef": "Page 1, item 18: \"Date of Issue: DD/MM/YYYY\" (last visa block)"
    },
    {
      "name": "lastVisaPlaceOfIssue",
      "label": "Last Visa: Place of Issue",
      "type": "string",
      "sourceRef": "Page 1, item 19: \"Place of Issue:\" (last visa block)",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "lastVisaDateOfExpiry",
      "label": "Last Visa: Date of Expiry",
      "type": "date",
      "sourceRef": "Page 1, item 20: \"Date of Expiry: DD/MM/YYYY\" (last visa block)"
    },
    {
      "name": "bankNameAndBranch",
      "label": "Name of the Bank and Branch",
      "type": "string",
      "description": "Payment-details block. Some applicant nationalities/purposes are visa-fee-exempt per Bangladeshi consular practice, and the source provides no boolean fee-applicability gate, so this and its three companion payment fields are left optional.",
      "sourceRef": "Page 1, item 21: \"Name of the Bank and Branch:\"",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "paymentReferenceNumber",
      "label": "Cheque/Bank Transfer/Chalan/Scroll No.",
      "type": "string",
      "sourceRef": "Page 1, item 22: \"Cheque/ Bank Transfer/ Chalan/ Scroll No:\"",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "amountDeposited",
      "label": "Amount deposited",
      "type": "number",
      "description": "The source prints the unit as a parenthetical \"(Taka/ US$)\" immediately after this item, with no separate checkbox or field to select which currency; the amount and its currency cannot be disentangled from a single printed blank, so no separate currency field is modeled.",
      "sourceRef": "Page 1, item 23: \"Amount deposited (Taka/ US$)\"",
      "validation": {
        "minimum": 0
      }
    },
    {
      "name": "paymentDate",
      "label": "Payment Date",
      "type": "date",
      "sourceRef": "Page 1, item 24: \"Date: DD/MM/YYYY\" (payment block)"
    },
    {
      "name": "purposeOfVisit",
      "label": "Purpose of Visit",
      "type": "enum",
      "required": true,
      "description": "New Visa section. The source prints a 9-option list next to unchecked boxes, including an \"Others (Please Specify)\" catch-all with a companion free-text line (see purposeOfVisitOtherSpecify).",
      "sourceRef": "Page 2, item 25: \"Purpose of Visit: Tourism Employment Business Official Diplomatic Study Investment Transit Others(Please Specify)\"",
      "validation": {
        "enum": [
          "Tourism",
          "Employment",
          "Business",
          "Official",
          "Diplomatic",
          "Study",
          "Investment",
          "Transit",
          "Others"
        ]
      }
    },
    {
      "name": "purposeOfVisitOtherSpecify",
      "label": "Purpose of Visit: Other (Please Specify)",
      "type": "string",
      "requiredWhen": {
        "field": "purposeOfVisit",
        "equals": "Others"
      },
      "sourceRef": "Page 2, item 25: \"Others(Please Specify)\"",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "durationOfProposedStay",
      "label": "Duration of Proposed Stay in Bangladesh",
      "type": "string",
      "required": true,
      "description": "Modeled as free-text: the source prints no unit (days/weeks/months) next to this blank line, unlike several other fields in this registry that print an explicit unit.",
      "sourceRef": "Page 2, item 26: \"Duration of Proposed Stay in Bangladesh:\"",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "tentativeDateOfArrival",
      "label": "Tentative Date of Arrival in Bangladesh",
      "type": "date",
      "required": true,
      "sourceRef": "Page 2, item 27: \"Tentative Date of Arrival in Bangladesh: DD/MM/YYYY\""
    },
    {
      "name": "intendedNumberOfEntries",
      "label": "Intended Number of Entries",
      "type": "enum",
      "required": true,
      "description": "The source prints a 3-option list next to unchecked boxes.",
      "sourceRef": "Page 2, item 28: \"Intended Number of Entries: Single Re Entry Multiple\"",
      "validation": {
        "enum": [
          "Single",
          "Re-Entry",
          "Multiple"
        ]
      }
    },
    {
      "name": "declarationPlace",
      "label": "Declaration: Place",
      "type": "string",
      "description": "Companion to the declarationAttestation document, printed on the same line as the applicant's signature and declarationDate.",
      "sourceRef": "Page 3, Declaration block: \"Place ... Date ... Signature\"",
      "validation": {
        "maxLength": 150
      }
    },
    {
      "name": "declarationDate",
      "label": "Declaration: Date",
      "type": "date",
      "description": "Companion to the declarationAttestation document, printed on the same line as the applicant's signature and declarationPlace.",
      "sourceRef": "Page 3, Declaration block: \"Place Date DD/MM/YYYY Signature\""
    }
  ],
  "documents": [
    {
      "id": "declarationAttestation",
      "label": "Applicant's declaration of accuracy",
      "category": "attestation",
      "required": true,
      "belongsTo": "applicant",
      "statement": "I, hereby, declare that statement given above is true and will not request to refund my paid visa fee even if my application is declined.",
      "sourceRef": "Page 3, Declaration statement, immediately above the Place/Date/Signature line"
    },
    {
      "id": "passportCopyWithLastVisaAndArrivalPage",
      "label": "Passport copy, Last Visa & Last Arrival Page",
      "category": "identity-document",
      "required": true,
      "belongsTo": "applicant",
      "sourceRef": "Page 3, Check List: \"Passport copy, Last Visa & Last Arrival Page\""
    },
    {
      "id": "applicantPhotograph",
      "label": "Applicant's photograph",
      "category": "identity-document",
      "required": true,
      "belongsTo": "applicant",
      "handling": "Page 1 prints a dedicated 45mm x 35mm photograph placement box; the same requirement is separately listed on page 3's Check List as \"Photo\". Page 4's General Instructions specify a colour photograph with a white background, glued at the form's top-left corner.",
      "sourceRef": "Page 1, \"Applicant’s Photograph Measuring 45 mm x 35mm\"; Page 3, Check List: \"Photo\"; Page 4, General Instructions item 1"
    },
    {
      "id": "paymentSlip",
      "label": "Payment Slip",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "handling": "Some applicant nationalities/purposes are visa-fee-exempt per Bangladeshi consular practice, and the source provides no boolean gate for fee applicability, so this is left optional rather than encoding a fabricated requiredWhen condition.",
      "sourceRef": "Page 3, Check List: \"Payment Slip\""
    },
    {
      "id": "recommendationLetterFromMinistryOrAuthority",
      "label": "Recommendation from concerned Ministry/Authority",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "handling": "Typically applicable to Official/Diplomatic/Business-purpose applications; the source's Check List does not itself gate this on purposeOfVisit, so it is left unconditionally optional rather than encoding a fabricated requiredWhen condition.",
      "sourceRef": "Page 3, Check List: \"Recommendation from concern Ministry/ Authority\""
    },
    {
      "id": "workPermit",
      "label": "Work Permit",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "handling": "Applicable to Employment-purpose applications.",
      "sourceRef": "Page 3, Check List: \"Work Permit\""
    },
    {
      "id": "tradeLicenseOfSponsoringCompany",
      "label": "Trade license of the sponsoring Company",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "handling": "Applicable to Business/Investment-purpose applications sponsored by a Bangladeshi company.",
      "sourceRef": "Page 3, Check List: \"Trade license of the sponsoring Company\""
    },
    {
      "id": "otherSupportingDocument",
      "label": "Other",
      "category": "supporting-evidence",
      "required": false,
      "belongsTo": "applicant",
      "handling": "A catch-all checklist item for any other supporting document not covered by the checklist's other entries; the form provides no companion free-text field to specify what \"Others\" refers to.",
      "sourceRef": "Page 3, Check List: \"Others\""
    }
  ]
}
