newv3.8.0Batch e-Faktur: 500 invoices in one call

Verify NIK. Issue e-Faktur. Accept QRIS. One API, from Jakarta.

Kait connects your app to Dukcapil, DJP's Coretax and the QRIS network through one tidy API. One key, one error format, one webhook for all of it.

npm i @kait/node

Sandbox keys are free forever. No credit card.

fig. 01 · kait.mark

56 × 3644 × 24 cells

move your cursor to turn the linkscroll to turn the link

poster · server rendered

zsh · ~/your-store
npm i @kait/node
added 1 package, and audited 214 packages in 1s
export KAIT_KEY=kait_test_51Hx9QmTzA
curl -u $KAIT_KEY: \ https://api.kait.id/v1/npwp/validasi \ -d npwp=0012345678091000
200 OK·38 ms·req_01JA7Q3M8Z4XKD·jkt-1
{
  "objek": "validasi_npwp",
  "npwp": "0012345678091000",
  "valid": true,
  "nama": "PT LAPAK GROSIR NUSANTARA",
  "jenis": "badan",
  "pkp": true,
  "kpp": "KPP Madya Jakarta Selatan I",
  "nitku": "0012345678091000000000",
  "diperiksa_pada": "2026-10-11T07:32:08Z"
}

Latest release

kait changelog --latest

v3.8.0

· Thursday, 8 October 2026

  • new
  • faktur

Batch e-Faktur: 500 invoices in one call

Marketplaces and ERPs can now send up to 500 invoices at once. Kait splits them to fit Coretax's limits, sends them in parallel and reports each invoice's outcome in a single webhook.

  • New endpoint POST /v1/faktur/batch
  • The faktur.batch_selesai webhook carries a summary per invoice
  • Node and Go SDKs 3.8.0 support it today; PHP follows next week
- for (const pesanan of pesananHariIni) {-   await kait.faktur.terbitkan(pesanan)- }+ await kait.faktur.terbitkanBatch(pesananHariIni)
Every release

Used by 2,300 engineering teams, from marketplaces to clinics

  • Lapak Grosir
  • Kopiloka
  • Slipku
  • Armada Kirim
  • Klinik Medira
  • Sewaruang
  • Neraca Kita
  • Dana Panen

Endpoints

Four doors, one key.

Every endpoint shares the same key, error format and webhooks. Learn one and you know them all.

200POST /v1/nik/verifikasi176 ms

{
  "objek": "verifikasi_nik",
  "id": "nik_01JA7RC0QF",
  "nik": "3171••••••••0001",
  "status": "terverifikasi",
  "cocok": {
    "nama": 0.98,
    "tanggal_lahir": true,
    "tempat_lahir": true
  },
  "sumber": "dukcapil"
}

Match a NIK, name and date of birth against Dukcapil's records. You get a match score per field, not just a yes or a no.

Latency

Measured from Jakarta, not from a brochure.

We called NPWP validation 10,000 times from Jakarta and compared it with a similar API served from Singapore.

kait bench npwp --dari jakarta --n 10000

Kait, jkt-1API via Singapore

p5038 ms212 ms
p9571 ms388 ms
p99140 ms910 ms

Tested 4 to 6 October 2026 from our office in Kuningan, on a 100 Mbps fibre line.

99.98%

jkt-1 uptime over the last 90 days

Pro plan SLA is 99.95%

11 min

median from sign-up to the first successful call

2,140 new developers, August to September 2026

4.2M

API calls a day

peaking at 9.8M during the 9.9 sale

SDKs

Install it in the language your team writes.

Official SDKs with full types, automatic retries and webhook signature checks. All of them open source.

npm i @kait/node

Node.jsv3.8.0

import Kait from "@kait/node";

const kait = new Kait(process.env.KAIT_KEY);

const npwp = await kait.npwp.validasi({
  npwp: "0012345678091000",
});

console.log(npwp.pkp); // true

An honest sandbox, failures included.

kait_test_ keys never touch Dukcapil, DJP or real money. The magic values below trigger every outcome, so your failure paths are tested before a customer finds them.

Magic values

InputResult
3171010101900001terverifikasiNIK matches on every field
3171010101900002nama_tidak_cocokname score 0.41
3171010101900003tidak_ditemukanNIK is not registered
0000000000000001npwp_nonaktifNPWP has been revoked
Rp10.001qris_kedaluwarsaQRIS expires in 5 seconds
Rp99.999coretax_sibukinvoice queued, approved 2 minutes later
$ kait listen --teruskan localhost:3000/webhook
ready, forwarding to localhost:3000/webhook
07:32:41  faktur.disetujui    fkt_01JA7R2C9W  200  18 ms
07:32:58  qris.lunas          qr_01JA7RB4KX   200  11 ms
07:33:02  nik.terverifikasi   nik_01JA7RC0QF  500  34 ms
07:33:03  retry 1 of 8        nik_01JA7RC0QF  200  15 ms

From the engineers who use it every day

We deleted 2,400 lines of tax integration code and replaced them with one call. Invoices are now issued before the courier leaves.
Ardi NugrohoVP Engineering, Lapak Grosir
The sandbox is honest. Every error we ever met in production turned out to be one we had already tested with its magic values.
Melati HasibuanCTO, Slipku
NIK verification under 200 ms is not a marketing number. We measure it ourselves across 12,000 courier sign-ups a day.
Andreas WijayaLead Backend, Armada Kirim

Your first call, before your coffee goes cold.

Sign up, copy a sandbox key, run one command. Our median developer gets a first response in 11 minutes.

npx kait login

No credit card. No call from sales.