Lewati ke konten

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 0 diikuti 15 digit lama, atau NIK untuk wajib pajak orang pribadi penduduk.
  • NITKU, 22 digit: NPWP 16 digit ditambah nomor tempat kegiatan usaha 6 digit.
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 (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.

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"))
}
Keluaran
true
0029736758100600 029736758100600 100 false
0029736758100600
02.973.675.8-100.600
************0600