{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "id/bkpm/oss-nib-registration-individual-umk",
  "version": "1.0.0",
  "title": "Indonesia OSS Individual/UMK Business Identification Number (NIB) Registration",
  "description": "Register a new Business Identification Number (Nomor Induk Berusaha, NIB) for an individual Micro or Small Business (Usaha Mikro dan Kecil, UMK) actor through Indonesia's Online Single Submission Risk-Based Approach system (OSS RBA, oss.go.id), operated by the Ministry of Investment and Downstream Industry / Investment Coordinating Board (BKPM) under Government Regulation No. 5 of 2021 and Law No. 11 of 2020 on Job Creation. Opens Indonesia as the registry's 18th jurisdiction and its Business Formation vertical, the closest Indonesian analogue to us/irs/employer-identification-number-ss4, ph/bir/tin-application-corporations-partnerships, and sg/acra/sole-proprietorship-registration: the NIB is simultaneously a business identification number, an importer identification number, and (for eligible low-risk activities) the business license itself. Covers the full individual-applicant pathway end to end: OSS mobile-number account registration, KTP (electronic ID card)-based applicant profile data, business-actor tax/social-security identifiers, KBLI (Klasifikasi Baku Lapangan Usaha Indonesia, the 2020 Indonesian Standard Industrial Classification) business-field selection, land-area/capital data that feeds OSS's own automated risk-and-scale validation engine, business detail, business-location data, product/service listing (including halal and SNI/Indonesian National Standard certification status), and the mandatory self-declaration (Pernyataan Mandiri) of compliance with spatial-planning (KKPR), safety/health/environmental (K3L), and environmental-management (SPPL) commitments. Scoped to a single natural-person (orang perseorangan) applicant registering under the UMK (Usaha Mikro dan Kecil, capital up to Rp5 billion excluding land/buildings) pathway with exactly one KBLI business-activity code and one product/service line; does not model account password/OTP verification screens, the login (Masuk) screen, the Non-UMK/business-entity (PT/CV/Yayasan) pathway, adding a second or subsequent KBLI code or product/service line via the wizard's own 'Tambah Bidang Usaha'/'Tambah Produk / Jasa' repeat actions, downstream sectoral/PB-UMKU permits, or the read-only NIB certificate output — see VERIFICATION.md. This document does not submit the registration; the live OSS RBA system (oss.go.id) and BKPM are always authoritative.",
  "status": "draft",
  "jurisdiction": {
    "country": "ID",
    "level": "national"
  },
  "authority": {
    "name": "Ministry of Investment and Downstream Industry / Investment Coordinating Board (BKPM)",
    "abbreviation": "BKPM",
    "url": "https://oss.go.id/"
  },
  "process": {
    "type": "registration",
    "language": "en"
  },
  "source": {
    "url": "https://s3.oss.go.id/oss/cms/Individual-UMK-Licensing-through-OSS-Indonesia-Application-06bf4250d469428912b5b62592497112.pdf",
    "retrievedAt": "2026-07-07",
    "documentRef": "OSS RBA official user guide, 'Individual UMK Licensing through OSS Indonesia Application' (English-language, 20-step screenshot walkthrough of the OSS Indonesia mobile app), published at oss.go.id/en/panduan/635970086345c7d71a814499"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-07",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-01",
    "notes": "Source-derived reference schema authored field-by-field from BKPM's own official OSS RBA user guide, a directly downloadable PDF (no login/CAPTCHA/WAF gate) hosted on oss.go.id's own CDN (s3.oss.go.id). Every field's label and section membership were read directly off the guide's own rendered mobile-app screenshots (each PDF page's embedded image was rendered at 2.5x scale via pdfjs-dist + node-canvas and read visually), not the PDF's sparse text layer (which carries only the guide's numbered instruction captions, not the in-app field labels themselves). This opens Indonesia as the registry's 18th jurisdiction and its first Business Formation document. Status remains 'draft' pending live-app execution testing, per this registry's structural-reference convention. See VERIFICATION.md for the full list of disclosed judgment calls, including one screen (Business Detail) whose second input's visible placeholder text does not match its own section header — flagged, not silently corrected."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering (Standards Engineer)",
    "assertedAt": "2026-07-07"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "mobileNumber",
      "label": "Nomor Telepon Seluler",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Active Indonesian mobile number, never previously used in the OSS system, prefixed with the country code (+62). Verified via a one-time WhatsApp code before the applicant profile step can continue; the verification code itself is not modelled (ephemeral, not durable application data).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 3",
      "validation": {
        "pattern": "^\\+62[0-9]{8,13}$"
      }
    },
    {
      "name": "nik",
      "label": "Nomor Induk Kependudukan",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The applicant's 16-digit National Identity Number (Nomor Induk Kependudukan), as printed on their electronic KTP (Kartu Tanda Penduduk). Forms the basis of both the OSS account profile and the later NIK carried onto the Business Actor Data screen.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8, 'Fill in the form according to your Electronic KTP'",
      "validation": {
        "pattern": "^[0-9]{16}$"
      }
    },
    {
      "name": "fullName",
      "label": "Nama Lengkap",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Full legal name exactly as printed on the applicant's electronic KTP.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "dateOfBirth",
      "label": "Tanggal Lahir",
      "type": "date",
      "required": true,
      "classification": "pii",
      "description": "Date of birth as printed on the electronic KTP. The source app's own input format is DD-MM-YYYY (worked example: '19-01-1992').",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8"
    },
    {
      "name": "gender",
      "label": "Jenis Kelamin",
      "type": "string",
      "required": true,
      "description": "Dropdown; only the selected value ('Laki-Laki', male) is visible in the guide's worked-example screenshot, not the full option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "address",
      "label": "Alamat",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "Residential address as printed on the electronic KTP.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "province",
      "label": "Provinsi",
      "type": "string",
      "required": true,
      "description": "Residential province. Dropdown; only the selected value ('Jawa Barat') is visible in the worked example, not the full 38-province option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "regency",
      "label": "Kabupaten/Kota",
      "type": "string",
      "required": true,
      "description": "Residential regency or city (kabupaten/kota), cascading from the selected province. Worked example: 'Kab. Bekasi'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 8-9",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "district",
      "label": "Kecamatan",
      "type": "string",
      "required": true,
      "description": "Residential district (kecamatan), cascading from the selected regency/city. Worked example: 'Cikarang Utara', confirmed on the same profile screen just below the fold shown in Step 8's own screenshot.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 9",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "village",
      "label": "Desa/Kelurahan",
      "type": "string",
      "required": true,
      "description": "Residential village or sub-district ward (desa/kelurahan), cascading from the selected district. The field's label is visible on the same profile screen as district, but its worked-example value is covered by a 'successful registration' confirmation dialog in the source screenshot and is not independently confirmed — see VERIFICATION.md.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 9",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "email",
      "label": "Email",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Email address shown on the Business Actor Data screen alongside the applicant's carried-over NIK, name, gender, and phone number. The worked-example screenshot shows this row with no visible value (only a small expand marker), so whether it is a locked/pre-filled field (matching the pattern of the other carried-over fields on this screen) or a genuinely blank optional input could not be confirmed from this source — modelled as optional pending live-app confirmation.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 10-11, Data Pelaku Usaha",
      "validation": {
        "maxLength": 254
      }
    },
    {
      "name": "npwp",
      "label": "NPWP",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Taxpayer Identification Number (Nomor Pokok Wajib Pajak), if the applicant already has one. The guide explicitly instructs: 'Fill in NPWP, BPJS Ketenagakerjaan, dan BPJS Kesehatan if you already have them' — all three are optional at this step.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 10-11, Data Pelaku Usaha",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "bpjsKetenagakerjaanNumber",
      "label": "BPJS Ketenagakerjaan",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Employment social security (BPJS Ketenagakerjaan) membership number, if the applicant already has one.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 10-11, Data Pelaku Usaha",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "bpjsKesehatanNumber",
      "label": "BPJS Kesehatan",
      "type": "string",
      "required": false,
      "classification": "sensitive-pii",
      "description": "Health insurance (BPJS Kesehatan) membership number, if the applicant already has one.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 10-11, Data Pelaku Usaha",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "businessActivityType",
      "label": "Jenis Kegiatan Usaha",
      "type": "string",
      "required": true,
      "description": "Dropdown; only the selected value ('Utama', i.e. primary/main business activity) is visible in the worked example, not the full option list (which by analogy to standard KBLI classification convention elsewhere likely includes a 'Penunjang'/supporting-activity option, not itself confirmed here), so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 12",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "kbliCode",
      "label": "Bidang Usaha (kode KBLI)",
      "type": "string",
      "required": true,
      "description": "The 5-digit 2020 KBLI (Klasifikasi Baku Lapangan Usaha Indonesia, the Indonesian Standard Industrial Classification) code identifying the business's field of activity, selected via a keyword search against OSS's own built-in KBLI catalog (e.g. searching 'food stalls', 'fishing', or 'street vendors' surfaces matching codes). Each NIB is allowed to consist of one or more KBLI codes; this document models exactly one. Worked example: '56102'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 12",
      "validation": {
        "pattern": "^[0-9]{5}$"
      }
    },
    {
      "name": "kbliDescription",
      "label": "Bidang Usaha (deskripsi)",
      "type": "string",
      "required": true,
      "description": "The KBLI code's own catalog description, auto-populated alongside the code once selected. Worked example: 'Rumah/Warung Makan' (eating house/food stall), with an OSS-supplied explanatory note that the classification covers food-and-beverage service businesses operating from a fixed (non-mobile) premises.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 12",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "businessActivityScope",
      "label": "Ruang Lingkup Kegiatan",
      "type": "string",
      "required": true,
      "description": "Scope of the business activity. Dropdown; only the selected value ('Seluruh', i.e. entire/all) is visible in the worked example, not the full option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 12",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "businessLandArea",
      "label": "Luas Lahan Usaha",
      "type": "number",
      "required": true,
      "description": "Total land area or floor space occupied by the business, in the unit selected by businessLandAreaUnit. Feeds OSS's own automated risk/scale validation engine (triggered by the 'Validasi Risiko' button) alongside businessCapital. Worked example: 50.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 13",
      "validation": {
        "minimum": 0
      }
    },
    {
      "name": "businessLandAreaUnit",
      "label": "Satuan",
      "type": "string",
      "required": true,
      "description": "Unit of the land-area value. Dropdown; only the selected value ('m²') is visible in the worked example, not the full option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 13",
      "validation": {
        "maxLength": 20
      }
    },
    {
      "name": "businessCapital",
      "label": "Modal Usaha",
      "type": "number",
      "required": true,
      "classification": "financial",
      "description": "Total business capital in Indonesian Rupiah (IDR), excluding land and buildings. Together with businessLandArea, this value is submitted to OSS's own automated engine that computes the business's scale (Mikro/Kecil/Menengah/Besar) and risk level (Rendah/Menengah/Menengah Tinggi/Tinggi) — a source-computed, read-only output not itself modelled as an applicant-input field (see VERIFICATION.md). Worked example: Rp 200,000,000.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 13-14",
      "validation": {
        "minimum": 0
      }
    },
    {
      "name": "businessAlreadyOperating",
      "label": "Kegiatan usaha ini sudah berjalan?",
      "type": "boolean",
      "required": true,
      "description": "Whether the business activity has already commenced operating. Source is a two-option radio button: 'Belum' (Not yet, modelled as false) or 'Sudah' (Already, modelled as true, the worked example's selected value).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 14"
    },
    {
      "name": "businessName",
      "label": "Nama Usaha / Kegiatan",
      "type": "string",
      "required": true,
      "description": "Name of the business or activity. Source shows a placeholder example ('Contoh: Pabrik Sepatu', i.e. Shoe Factory) and a worked-example value 'Warung Makan' (food stall).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 14",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "businessActivityDescription",
      "label": "Deskripsi Kegiatan Usaha",
      "type": "string",
      "required": true,
      "description": "Description of the business activity. Flagged, not silently corrected: the worked-example screenshot shows this field's own input box displaying the placeholder text 'Kabupaten/Kota' (the same label used for the unrelated regency/city selector elsewhere in this same wizard) rather than a description-shaped placeholder, and carries a dropdown affordance rather than a free-text one — apparently either a reused UI component or a genuine app-side rendering artifact in the source screenshot. This document models the field under its own section header (the only clearly legible label present) but its true purpose/shape is not independently confirmed — see VERIFICATION.md.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 14",
      "validation": {
        "maxLength": 300
      }
    },
    {
      "name": "indonesianWorkerCount",
      "label": "Jumlah Tenaga Kerja Indonesia",
      "type": "integer",
      "required": true,
      "description": "Number of Indonesian workers employed by the business. Worked example: 4.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 14",
      "validation": {
        "minimum": 0
      }
    },
    {
      "name": "businessAddressSameAsPrevious",
      "label": "Gunakan alamat yang sama dengan domisili atau kegiatan usaha sebelumnya?",
      "type": "boolean",
      "required": true,
      "description": "Whether the business-location address is the same as the applicant's residential address or a previously-registered business activity's address. Source is a two-option radio button: 'Tidak' (No, modelled as false) or 'Ya' (Yes, modelled as true, the worked example's selected value). The guide's own screenshot shows the address and cascading region fields pre-filled and editable regardless of this toggle's value; the 'Tidak' branch's own resulting form shape was not independently observed in this source.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15"
    },
    {
      "name": "businessAddress",
      "label": "Alamat Usaha",
      "type": "string",
      "required": true,
      "description": "The business's operating address.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "businessProvince",
      "label": "Provinsi",
      "type": "string",
      "required": true,
      "description": "Business-location province. Worked example: 'Jawa Barat'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "businessRegency",
      "label": "Kabupaten/Kota",
      "type": "string",
      "required": true,
      "description": "Business-location regency or city. Worked example: 'Kab. Bekasi'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "businessDistrict",
      "label": "Kecamatan",
      "type": "string",
      "required": true,
      "description": "Business-location district. Worked example: 'Cikarang Utara'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "businessVillage",
      "label": "Desa/Kelurahan",
      "type": "string",
      "required": true,
      "description": "Business-location village or sub-district ward. Worked example: 'Mekarmukti'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "businessPostalCode",
      "label": "Kode Pos",
      "type": "string",
      "required": true,
      "description": "Business-location postal code. Worked example: '11772'.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 15",
      "validation": {
        "pattern": "^[0-9]{5}$"
      }
    },
    {
      "name": "productServiceCategory",
      "label": "Jenis Produk/Jasa (kategori)",
      "type": "string",
      "required": true,
      "description": "Product/service category. Dropdown; only the selected value ('Lainnya', Other) is visible in the worked example, not the full option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16",
      "validation": {
        "maxLength": 100
      }
    },
    {
      "name": "productServiceName",
      "label": "Jenis Produk/Jasa (nama)",
      "type": "string",
      "required": true,
      "description": "Specific product or service name, entered as free text below the category dropdown. The source screenshot re-uses the identical section header 'Jenis Produk/Jasa' for both this field and productServiceCategory rather than giving this one its own distinct label — modelled here by its position and free-text input shape, not a separately-confirmed label; see VERIFICATION.md. Worked example: 'Nasi Rames' (a mixed-rice dish).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16",
      "validation": {
        "maxLength": 200
      }
    },
    {
      "name": "productionCapacity",
      "label": "Kapasitas",
      "type": "number",
      "required": true,
      "description": "Annual production/service capacity, in the unit selected by productionCapacityUnit. The source's own capacity field carries a fixed '/ Tahun' (per year) suffix. Worked example: 20,000.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16",
      "validation": {
        "minimum": 0
      }
    },
    {
      "name": "productionCapacityUnit",
      "label": "Satuan Kapasitas",
      "type": "string",
      "required": true,
      "description": "Unit of the production-capacity value. Dropdown; only the selected value ('Kursi', seats) is visible in the worked example, not the full option list, so no enum is asserted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16",
      "validation": {
        "maxLength": 50
      }
    },
    {
      "name": "hasSniCertificate",
      "label": "Apakah Anda sudah memiliki sertifikat Standar Nasional Indonesia (SNI)?",
      "type": "boolean",
      "required": true,
      "description": "Whether the applicant already holds an SNI (Indonesian National Standard) certificate for the listed product/service, only asked when the product/service category requires one. Source is a two-option radio button: 'Tidak' (No, modelled as false, the worked example's selected value) or 'Ya' (Yes, modelled as true).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16"
    },
    {
      "name": "hasHalalCertificate",
      "label": "Apakah Anda sudah memiliki sertifikat halal?",
      "type": "boolean",
      "required": true,
      "description": "Whether the applicant already holds a halal certificate for the listed product/service, only asked when the product/service category requires one. Source is a two-option radio button: 'Tidak' (No, modelled as false, the worked example's selected value) or 'Ya' (Yes, modelled as true).",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 16"
    },
    {
      "name": "selfDeclarationAgreed",
      "label": "Saya sudah membaca dan menyetujui (Pernyataan Mandiri)",
      "type": "boolean",
      "required": true,
      "fieldRole": "eligibility",
      "eligibleValues": [
        true
      ],
      "description": "Self-declaration checkbox, required under Law No. 11 of 2020 on Job Creation, by which the UMK applicant agrees to five published commitments: maintaining safety, security, health, and environmental-function preservation (K3L); willingness to fulfil obligations; willingness to undergo the halal-certification process; a Micro/Small Business statement of spatial-planning (KKPR) compliance; and a statement of willingness to manage and monitor the environment (SPPL). Must be checked before the application can be saved/submitted.",
      "sourceRef": "Individual UMK Licensing through OSS Indonesia Application — Step 17, 'Pernyataan Mandiri'"
    }
  ],
  "steps": [
    {
      "id": "account_registration",
      "title": "OSS Account Registration",
      "fields": [
        "mobileNumber"
      ],
      "next": "applicant_profile"
    },
    {
      "id": "applicant_profile",
      "title": "Applicant Profile (KTP Data)",
      "fields": [
        "nik",
        "fullName",
        "dateOfBirth",
        "gender",
        "address",
        "province",
        "regency",
        "district",
        "village"
      ],
      "next": "business_actor_data"
    },
    {
      "id": "business_actor_data",
      "title": "Business Actor Data",
      "fields": [
        "email",
        "npwp",
        "bpjsKetenagakerjaanNumber",
        "bpjsKesehatanNumber"
      ],
      "next": "business_classification"
    },
    {
      "id": "business_classification",
      "title": "Business Classification (KBLI)",
      "fields": [
        "businessActivityType",
        "kbliCode",
        "kbliDescription",
        "businessActivityScope"
      ],
      "next": "business_scale"
    },
    {
      "id": "business_scale",
      "title": "Business Scale Data",
      "fields": [
        "businessLandArea",
        "businessLandAreaUnit",
        "businessCapital"
      ],
      "next": "business_detail"
    },
    {
      "id": "business_detail",
      "title": "Business Detail",
      "fields": [
        "businessAlreadyOperating",
        "businessName",
        "businessActivityDescription",
        "indonesianWorkerCount"
      ],
      "next": "business_location"
    },
    {
      "id": "business_location",
      "title": "Business Location",
      "fields": [
        "businessAddressSameAsPrevious",
        "businessAddress",
        "businessProvince",
        "businessRegency",
        "businessDistrict",
        "businessVillage",
        "businessPostalCode"
      ],
      "next": "products_services"
    },
    {
      "id": "products_services",
      "title": "Products/Services",
      "fields": [
        "productServiceCategory",
        "productServiceName",
        "productionCapacity",
        "productionCapacityUnit",
        "hasSniCertificate",
        "hasHalalCertificate"
      ],
      "next": "self_declaration"
    },
    {
      "id": "self_declaration",
      "title": "Self-Declaration (Pernyataan Mandiri)",
      "fields": [
        "selfDeclarationAgreed"
      ]
    }
  ]
}
