NPWP
- 0Awalan NPWP 15 digit
- 15Jenis wajib pajak
- 067320Nomor registrasi
- 0Digit pengaman
- 246Kode KPP
- 000Status pusat atau cabang
- Pusat
Strukturnya benar
Ada tiga format yang diterima (PMK 112/2022 sebagaimana diubah PMK 136/2023):
- 15 digit, format lama (
02.973.675.8-100.600). - 16 digit, berupa
0diikuti 15 digit lama, atau NIK untuk wajib pajak orang pribadi penduduk. - NITKU, 22 digit: NPWP 16 digit ditambah nomor tempat kegiatan usaha 6 digit.
Fungsi
Section titled “Fungsi”| Go | TypeScript | Hasil |
|---|---|---|
npwp.Valid(s) |
npwp.isValid(s) |
Apakah s NPWP atau NITKU yang strukturnya benar |
npwp.Parse(s) |
npwp.parse(s) |
Field di bawah |
npwp.To16(s) |
npwp.to16(s) |
Bentuk 16 digit dari format mana pun |
npwp.Format(s) |
npwp.format(s) |
15 digit dengan titik dan strip, selain itu hanya digit |
npwp.Mask(s) |
npwp.mask(s) |
Hanya 4 digit terakhir terlihat |
Pemisah yang diterima: spasi, ., dan -.
Field hasil parse
Section titled “Field hasil parse”| Field (JSON) | Ada jika | Catatan |
|---|---|---|
npwp16 |
Selalu | |
npwp15 |
Bukan NIK | 15 digit format lama |
nitku |
Input berupa NITKU | 22 digit |
businessPlace |
Input berupa NITKU | 6 digit terakhir |
isNik |
Selalu | 16 digitnya adalah NIK |
taxOffice |
Bukan NIK | Kode KPP 3 digit |
status |
Bukan NIK | Status 3 digit (000 = pusat) |
DJP tidak pernah menerbitkan aturan check digit NPWP, jadi NusaIndex cuma mengecek strukturnya. Wajib pajak baru sejak 2024 dapat NPWP 16 digit yang strukturnya tidak dipublikasikan.
length, charset, nik (16 digit yang tampak seperti NIK tetapi NIK-nya tidak valid), serial.
Contoh
Section titled “Contoh”package main
import ( "fmt"
"github.com/haikalmumtaz233/nusaindex/npwp")
func main() { fmt.Println(npwp.Valid("02.973.675.8-100.600"))
parsed, err := npwp.Parse("02.973.675.8-100.600") if err == nil { fmt.Println(parsed.NPWP16, parsed.NPWP15, parsed.TaxOffice, parsed.IsNIK) }
sixteen, err := npwp.To16("029736758100600") if err == nil { fmt.Println(sixteen) }
formatted, err := npwp.Format("029736758100600") if err == nil { fmt.Println(formatted) }
fmt.Println(npwp.Mask("0029736758100600"))}import * as npwp from "nusaindex/npwp";
console.log(npwp.isValid("02.973.675.8-100.600"));
const parsed = npwp.parse("02.973.675.8-100.600");if (parsed.ok) { const { npwp16, npwp15, taxOffice, isNik } = parsed.value; console.log(npwp16, npwp15, taxOffice, isNik);}
const sixteen = npwp.to16("029736758100600");if (sixteen.ok) { console.log(sixteen.value);}
const formatted = npwp.format("029736758100600");if (formatted.ok) { console.log(formatted.value);}
console.log(npwp.mask("0029736758100600"));true0029736758100600 029736758100600 100 false002973675810060002.973.675.8-100.600************0600© 2026 Haikal Mumtaz