Bukti Potong explained
Withholding-tax slips for PPh 21/23/26/4(2): form, flow and issuance.
Bukti Potong (sometimes "Bupot") is the official document proving that a PPh withholder has withheld and remitted income tax on behalf of the withholdee.
A Bukti Potong is the counterpart of every PPh withholding event — without one, the withholdee cannot credit the tax on their annual SPT.
Types of Bukti Potong
| Form | For | Issued when |
|---|---|---|
| BP PPh 21 A1 | Permanent employees, final annual | Year-end / when an employee leaves |
| BP PPh 21 A2 | Non-permanent / non-employee workers | At each payment |
| BP PPh 23 | Service withholding (PKP/non-PKP vendors) | At each invoice payment |
| BP PPh 26 | Payment to non-resident taxpayers | At each payment |
| BP PPh 4(2) | Land/building rent, construction services, etc. | At each final payment |
Anatomy of a Bukti Potong
Every Bupot must contain at least:
- Withholder identity — NPWP, name, address
- Withholdee identity — NPWP (or NIK), name, address
- Tax period — month/year
- Income type — object-type code
- DPP — tax base (gross income)
- Rate & PPh withheld — withholding amount
- Sequence number — unique per (tenant, type, period)
How esaFiskaly issues them
- 1
- 2
When an invoice is paid (PPh 23), payroll runs (PPh 21), or rent is paid (PPh 4(2)), esaFiskaly drafts a Bupot automatically.
- 3
- 4
The system uses a
doc_sequencestable with atomic locking, so numbers are unique per (tenant, type, period) — no collisions under concurrent requests. - 5
- 6
The old 15-digit and new 16-digit (NIK-NPWP) formats are validated before issuance. For PPh 23, if the NPWP is invalid, the system auto-applies the 200% gross-up rate ("NPWP-doubling" penalty).
- 7
- 8
Click Issue. Status moves DRAFT → ISSUED. An A4 PDF is available for printing or emailing.
- 9
- 10
An ISSUED Bupot cannot be edited — only voided. The system records the void reason for the audit trail.
Reporting to DJP
Every issued Bupot rolls into the SPT Masa for its tax period:
- PPh 21 → Monthly PPh 21 SPT (file by the 20th of the following month)
- PPh 23/26 → Monthly PPh 23/26 SPT
- PPh 4(2) → Monthly PPh 4(2) SPT
esaFiskaly outputs XML/CSV ready to upload to e-Bupot Unifikasi DJP.
