Document types
The canonical registry of document types Document Intelligence understands. Each has a fixed field schema we extract; for documents that don't fit, use generic_ocr or define a Template.
Indonesian regulatory IDs
ktp — KTP (Kartu Tanda Penduduk)
The national ID card. For identity verification use Identity Platform; for OCR-only use this.
| Field | Type | Notes |
|---|---|---|
nik | string(16) | Validated against structural rules |
fullName | string | |
placeOfBirth | string | |
dateOfBirth | date | Cross-checked with NIK |
gender | enum | LAKI-LAKI · PEREMPUAN |
bloodType | enum | A · B · AB · O · - (with +/- modifier) |
address | string | |
rtRw | string | Format NNN/NNN |
kelurahan | string | |
kecamatan | string | |
religion | enum | ISLAM · KRISTEN · KATOLIK · … |
maritalStatus | enum | BELUM KAWIN · KAWIN · CERAI HIDUP · CERAI MATI |
occupation | string | |
nationality | enum | WNI · WNA |
validUntil | string | Date or literal SEUMUR HIDUP |
issueDate | date |
npwp — Tax card
| Field | Type | Notes |
|---|---|---|
npwp_number | string(20) | Formatted XX.XXX.XXX.X-XXX.XXX |
name | string | |
address | string | |
registered_at | date | |
kpp_code | string | Kantor Pelayanan Pajak code |
kartu_keluarga — Family card
Header fields + a members[] array (each with NIK, name, relationship, gender, DOB, religion, education, occupation, citizenship, parental NIKs).
sim — Driver's license
Front + back. Fields: name, NIK, address, license class (A/A Umum/B I/B I Umum/…), issue date, expiry, photo bounding box.
passport — Indonesian passport
MRZ-extracted: passport number, name, sex, nationality, DOB, expiry, issuing country, plus MRZ checksum validation.
nib — Business registration
nib_number, business name, KBLI codes (multi-value), registered address, owner name + NIK, registration date.
bpkb — Vehicle ownership
Plate number, brand, model, year, engine number, chassis number, color, fuel type, owner name + NIK.
Civil registry
akta_lahir — Birth certificate
Child name, place + date of birth, parents' names + NIKs, witness names, registry number, issuing kelurahan.
surat_nikah — Marriage certificate
Both parties' names + NIKs + DOBs, marriage date, registering KUA, witness names.
Commercial / operations
invoice
invoice_number, issue date, due date, vendor (name + NPWP + address), customer (name + NPWP + address), line_items[] (description, qty, unit, unit_price, total), subtotal, tax, total, payment terms.
purchase_order
Same shape as invoice but with po_number instead of invoice_number, plus delivery_date, delivery_address.
delivery_note
Recipient, items delivered (line items with descriptions + qtys), signatures (yes/no flags).
receipt
Date, merchant, total, payment method, item lines (best-effort).
faktur_pajak — VAT invoice
faktur_number, seller NPWP, buyer NPWP, taxable amount, tax amount (PPN), total, code/branch.
slip_gaji — Pay slip
Period, employee name + NIK, position, gross salary, allowances (array), deductions (array), PPh21 tax withheld, net pay.
contract
Highly variable structure. Extracts: party names + NIKs, effective date, expiry, agreement type heuristic, key terms (notice period, jurisdiction, governing law). Falls back to generic_ocr if the contract is too non-standard.
Financial
rekening_koran — Bank statement
Account holder, account number, bank, statement period, opening balance, closing balance, transaction array (date, description, debit, credit, running balance).
Use Bank Statement Platform for the heavy lifting
Document Intelligence's rekening_koran handles ad-hoc one-off parses. For multi-statement loan underwriting (BCA, Mandiri, BRI, BNI, Permata, Danamon, BTN, OCBC native parsers + consolidation), use Bank Statement Platform. Same data shapes, much richer ledger analytics.
financial_statement
PSAK-aligned financial statement structure: balance sheet (assets, liabilities, equity), income statement (revenue, COGS, opex, EBITDA, net income), cash flow.
Fallback
generic_ocr
Pure OCR: returns rawText (full document text) + keyValuePairs[] (best-effort field extraction). No schema validation.
other
Stored but not extracted. Use when you only need archival + audit.
Defining your own types
Use Templates → to define schemas for documents not in this list. Common ones our customers have built:
- Bank-internal loan application forms
- Custom NPF (Notice of Payment Failure) letters
- Per-bank corporate-onboarding checklists
- Custom invoice templates for specific suppliers