Invoicing & tax for a Web Developer in Indonesia
A Web Developer in Indonesia bills with a QRIS-enabled invoice, and when the client is a company (PT/CV), the client withholds 2% PPh on the fee (category: Services (PPh 23)), transfers the rest, and issues a bukti potong via e-Bupot (Coretax) as proof. Example: on a Rp15.000.000 fee, Rp300.000 is withheld and you receive Rp14.700.000. Your own annual tax uses the 0.5% UMKM final tax (PP 55/2022 as amended by PP 20/2026 — now permanent): the first Rp500 million of annual omzet is tax-free, 0.5% on the rest, deposited by the 15th of the following month. On your invoice you are the payee — the client withholds and issues the slip, not you.
Building a company-profile site or web store for a corporate client is rarely just code: there’s the domain and hosting you front, the monthly maintenance retainer, and a finance team withholding PPh on every payment.
By the Tagihin team · Updated 10 Jun 2026
A worked example
Say you are a Web Developer billing a PT client Rp15.000.000 for your work. The withholding category is “Services (PPh 23)” at 2%. The figures below come straight from the Tagihin engine.
| Fee (before PPN) | Rp15.000.000 |
| Total invoiced | Rp15.000.000 |
| Less PPh withheld 2% | -Rp300.000 |
| Net the client pays (QRIS amount) | Rp14.700.000 |
The client withholds Rp300.000, transfers Rp14.700.000 to your account, and issues the bukti potong via e-Bupot as proof.
Your own tax: the 0.5% UMKM final tax
As an individual with omzet ≤ Rp4.8 billion/year who is not pekerjaan bebas, your business income is taxed at a final 0.5% of omzet (PP 55/2022 as amended by PP 20/2026 — permanent for individuals and PT Perorangan since April 2026). The best part: the first Rp500.000.000 of annual omzet is tax-free. Example: Rp600.000.000 of annual omzet → only the excess is taxed, so the year's tax is Rp500.000. Deposits are monthly, by the 15th of the following month (PMK 81/2024), using a billing code from DJP Coretax.
Run your own numbers: UMKM 0.5% final-tax calculator · Monthly deposit guide
When your client is a company: withholding & the bukti potong
A company paying you must withhold PPh and remit it in your name — individuals are generally withheld under PPh 21 for non-employees (effective 2.5%, PMK 168/2023), while corporate vendors are withheld under PPh 23 (services 2%). The proof is the bukti potong the client issues via e-Bupot in Coretax. Without an NPWP the withholding jumps: PPh 21 becomes 120% of normal, PPh 23 doubles.
Who withholds: On your own sales invoice you are the payee. The client (the payer) withholds the PPh and issues the bukti potong to you via e-Bupot — not you. Your job: make sure every withholding has its slip, then keep them for the annual SPT.
What to watch for in this trade
Separate the build fee from the domain/hosting you fronted. The PPh base should ideally be your service fee, not pass-through costs — and split lines also get approved faster.
Documents you’ll need
- Surat penawaran (quotation) — lock the scope and price before work starts
- Invoice — the formal bill, with an exact-amount QRIS QR so the client just scans
- Kwitansi (receipt) — proof of payment; above Rp5 million it requires the Rp10.000 meterai (Law 10/2020; e-meterai for PDFs)
- Bukti potong — RECEIVED from corporate clients (issued via e-Bupot), not created by you; keep every one
Tools & guides for this
- PPh withholding (PPh 21/23) & PPN calculator
- UMKM 0.5% final-tax calculator · Free draf bukti potong generator
- Which documents a freelancer needs · PPh withholding rates
- Indonesian freelancer tax answers
Tagihin issues invoices and receipts that compute the withholding for you, with an exact-amount QRIS QR embedded — the client scans and the money lands straight in your own account.
Start invoicing as a Web Developer — free →
No credit card required — start on the free plan.
Tagihin only formats and computes documents for you. This is general information, not tax advice — please confirm with the DJP (Indonesian tax office) or your accountant.