Every digit means something.
Check and decode NIK, NPWP, phone numbers, plates and region codes. For Go, TypeScript, the terminal and AI agents. Runs offline.
- 32Province
- Jawa Barat
- 73Regency or city
- Kota Bandung
- 27District
- Gedebage
- 570590Birth date and sex
- 17 May 1990, female (day + 40)
- 1349Serial number
Well-formed
What it is for
Section titled “What it is for”- Public services and local government sitesSign-up forms that catch a mistyped NIK right away.
- Schools and universitiesStudent enrolment with clean NISN, parent NIK and address data.
- Fintech, e-commerce and paymentsPhone numbers for OTP, bank codes for transfers, amounts on invoices.
- HR and payrollPay dates, collective leave and employee NPWP without manual counting.
- Logistics and deliveryAddresses down to village level, delivery estimates and fleet plates.
- Personal data protectionKeep NIKs and phone numbers out of your logs.
- Testing and QAValid test data without copying real customer records.
- Chatbots and AI agentsAgents that answer about holidays, regions and amounts without guessing.
Use it where you work
Section titled “Use it where you work”package main
import ( "fmt"
"github.com/haikalmumtaz233/nusaindex/nik" "github.com/haikalmumtaz233/nusaindex/phone" "github.com/haikalmumtaz233/nusaindex/rupiah")
func main() { person, err := nik.Parse("3273275705901349") if err == nil { fmt.Println(person.BirthDate, person.Sex) }
mobile, err := phone.Parse("0859-5257-171") if err == nil { fmt.Println(mobile.E164, mobile.Brand) }
words, err := rupiah.Terbilang(1_500_000*rupiah.Rupiah + 50*rupiah.Sen) if err == nil { fmt.Println(words) }}import * as nik from "nusaindex/nik";import * as phone from "nusaindex/phone";import * as rupiah from "nusaindex/rupiah";
const person = nik.parse("3273275705901349");if (person.ok) { console.log(person.value.birthDate, person.value.sex);}
const mobile = phone.parse("0859-5257-171");if (mobile.ok) { console.log(mobile.value.e164, mobile.value.brand);}
const words = rupiah.terbilang(1_500_000.5);if (words.ok) { console.log(words.value);}1990-05-17 female+628595257171 XLsatu juta lima ratus ribu rupiah lima puluh sennpm install --global nusaindexConnect nusaindex-mcp to any MCP client. Every tool is read-only.
What’s inside
Section titled “What’s inside”Identifiers
Reference data
Utilities
Safe by default
Section titled “Safe by default”- Offline. No network calls, logging, or telemetry. Input never leaves your app.
- Traceable. Every dataset names its regulation and source document in
data/manifest.json. - Unofficial. Not affiliated with Dukcapil, DJP, Komdigi, Polri, Bank Indonesia, or any government agency. Valid means well-formed, not real or owned by anyone.
© 2026 Haikal Mumtaz