When you hire someone in Indonesia—whether a full-time employee, contractor, or freelancer—the paperwork doesn't stop at an offer letter. The tax authority (LHDN) requires you to capture their NPWP (Nomor Pokok Wajib Pajak, the personal tax ID), hold tax at source on payments, and if they're issuing invoices, generate e-Faktur (electronic invoice) records tied to that NPWP. Get it wrong and you face penalties that compound fast. Get it right, and the friction mostly disappears into your payroll system—but only if your payroll software actually handles NPWP matching and withholding natively. Why NPWP Matters the Moment You Hire An NPWP is Indonesia's equivalent to a tax ID number. Every individual who earns income above a threshold must have one. The moment you commit to paying someone—salary, contract, freelance, one-off project—you must collect their NPWP before the first payment. This isn't optional. Your payroll system needs to store the NPWP and match it to the person's identity and payment history. Why? Because LHDN cross-references NPWP against: Tax withholding you report (SPT, the annual tax return) E-Faktur invoices they or you issue Bank records and payment histories If you pay someone without capturing or validating their NPWP upfront, you can't file accurate withholding reports. LHDN will flag mismatches, and your accountant will inherit a cleanup job that costs time and credibility. Tax Withholding Mechanics: When Money Leaves the Bank Indonesia applies different withholding rates depending on the type of payment and the payee's status: Salary (regular employees): 5–30% depending on income bracket and personal status (PTKP). This is calculated and held monthly. Contractor/service fees: 3% withheld on invoice amount (if the contractor is not registered for VAT) or 10% if they are VAT-registered and didn't issue an e-Faktur. Freelance/project work: Same as contractor, typically 3%. Interest, dividends, royalties: 10–20% depending on type and beneficiary. The key: You (the employer/payer) must calculate and hold the tax before releasing the payment. The withheld amount goes to a government bank account within 10 days of month-end. Then you report it to LHDN in your SPT filing. Your payroll system needs to: Identify the payment type (salary, service, freelance, etc.) Look up the payee's NPWP to determine their tax bracket or VAT status Calculate withholding automatically Deduct it from the payment and log it for your monthly withholding report Generate a withholding certificate (Bukti Pemotongan) for the payee If your payroll software can't match NPWP to payment type and apply the correct rate, you'll either overpay (withhold too much, needing to reconcile later) or underpay (risking penalties), and your accountant will spend hours recalculating by hand. E-Faktur: When Contractor Invoices Trigger Tax Records If you're paying a contractor or service provider, and they issue an invoice, that invoice may need to be recorded as an e-Faktur (elektronik Faktur) in the LHDN system. Who issues e-Faktur? Only PKP (Pengusaha Kena Pajak)—people or businesses registered for VAT. A freelancer without VAT registration doesn't issue e-Faktur; you simply withhold 3% and file it as a regular service payment. What's the link to NPWP? Every e-Faktur must include: The contractor's NPWP and full name Your (the buyer's) NPWP and company name Invoice amount, tax (PPN, VAT at 11% if applicable), withholding amount Effective date and serial number (assigned by LHDN) The LHDN system cross-checks the contractor's NPWP against: Their registered PKP status Their e-Faktur limit (new PKP have quotas) Your reported withholding for that invoice If the NPWP doesn't match their profile, the e-Faktur won't validate. If you withhold 3% but the invoice shows 10%, there's a discrepancy. LHDN flags these and can assess penalties or disallow deductions in your own tax filing. How Payroll Systems Actually Handle This (and Where They Fail) Not all payroll software treats NPWP matching and withholding as first-class features. Here's what separates systems that work in Indonesia from those that require manual workarounds: Gold Standard: NPWP Validation + Withholding Automation A system that handles Indonesian payroll correctly will: Require NPWP at hire: Force the NPWP field during employee/contractor creation; don't let you save a contract without it. Validate against LHDN: Optionally, check the NPWP in real time against LHDN's database to catch typos or inactive accounts before your first payment. Store NPWP with contact details: Link the NPWP to the person's record (phone, address, bank account) so it appears on contracts, invoices, and withholding certs. Classify payment type: Ask at hire time (or per-transaction) whether this is salary, service/contractor, freelance, or project work. Default withholding rates should update based on payment classification. Calculate withholding automatically: When you run payroll or issue a contractor paym