You've found a sharp developer in Jakarta. They send an invoice. You assume you can pay it like any other vendor invoice, wire them the money, and move on. Three weeks later your accountant tells you that you owe PPh21 withholding tax on that payment, you haven't validated their NPWP against tax records, and your invoice isn't compliant with Indonesian tax law. The payment stalls. The contractor doesn't get paid. Everyone loses. Indonesian tax compliance for contractors is not optional—it's a gate on every payment. The rules are clear, but they're enforced by linking contractor identity to the National Tax Number (NPWP), matching it against live records, and withholding a percentage of payment at source. Miss any step and payments bounce or get flagged by your bank. Here's how to get it right the first time. NPWP: The Tax ID that gates payment An NPWP (Nomor Pokok Wajib Pajak) is Indonesia's tax registration number. Every contractor you pay must have one. It's not optional, not later, not once you scale—it's required before payment leaves your account. Why? Indonesia's tax authority (Direktorat Jenderal Pajak, or DJP) requires invoices to be registered and matched against taxpayer records. If the NPWP on the invoice doesn't match a live registration, the invoice fails validation. Many banks now reject payments on invoices that fail this check. How to verify an NPWP before payment Ask your contractor for their NPWP in writing (email is fine). Then: Cross-check against the DJP public registry. Go to djponline.pajak.go.id and search for the NPWP. The result will show the taxpayer's registered name and status. The name must match exactly what's on the invoice and in your contract. Confirm they are registered as a non-employee (sole trader or freelancer). If they're registered as an employee of another company, they cannot issue an invoice to you as an independent contractor. This is a DJP rule, not a procedural preference. Check the invoice date against their NPWP active date. If the NPWP was registered after the invoice date, the invoice is invalid. The DJP will reject it. Store proof of NPWP verification. Screenshot the registry result or get a confirmation letter from the contractor. Your accountant and auditor will ask for this. If the contractor doesn't have an NPWP, they can apply online at the DJP website in about two weeks. Do not pay them until it's active. PPh21 withholding: Who pays and how much PPh21 is Personal Income Tax. When you pay a contractor in Indonesia, you are legally required to withhold a percentage of their invoice and remit it to the tax authority on their behalf. The withholding rate depends on the contractor's status and whether they have a Surat Keterangan (tax certificate). Here's the breakdown: Contractor with NPWP and a valid Surat Keterangan: 0–5% withholding, depending on their tax compliance status. Ask them to provide their Surat Keterangan (issued by the DJP). If they can't, assume 15%. Contractor with NPWP but no Surat Keterangan: 15% withholding. Contractor without NPWP: 20% withholding (but you should not pay until they have one). The withholding is your responsibility to remit to the tax authority by the 10th of the following month. It does not go to the contractor. You deduct it from their payment, pay them the net amount, and file it with the DJP as PPh21 withholding. Example: A 10 million Rupiah invoice Contractor invoice: Rp 10,000,000 PPh21 withholding at 15%: Rp 1,500,000 Net payment to contractor: Rp 8,500,000 You remit: Rp 1,500,000 to DJP This is not negotiable. The contractor should expect it. If they ask you not to withhold or to pay them the full amount, they're asking you to break Indonesian tax law. Say no. Some invoicing platforms (like Orin's invoicing module ) can automate the withholding calculation, but only if you feed in the correct rate. The rate comes from the contractor's Surat Keterangan or their NPWP status. Payment rails: Wise, local bank transfer, and settlement timing Once you've verified the NPWP and calculated withholding, you need a payment method that clears in Indonesia without delays or compliance issues. Wise (formerly TransferWise) Wise is fast and transparent, but it has limits for Indonesian recipients. Wise can transfer to Indonesian bank accounts, but the recipient must have passed KYC (Know Your Customer) verification with Wise, and the transfer amount is capped based on their profile. For contractor payments under 20 million Rupiah, this usually works. Beyond that, Wise often requires additional documentation or flags the transfer for review. Timeline: 1–3 business days. Fees: Around 40–80k Rupiah for a transfer of this size. Local bank transfer (most reliable) A wire from your bank account to their Indonesian bank account is the safest method. It's fast (same-day or next-day), and there's a clear audit trail. You'll need their bank name, account number, and account holder name (which must match their NPWP registration). Your b