Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Localizations
  3. Indonesia Withholding Tax (PPh 21/23/4(2)) v 18.0
  4. Sales Conditions FAQ

Indonesia Withholding Tax (PPh 21/23/4(2))

by Lema Core Technologies https://lemacore.com
Odoo

$ 14.85

v 18.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Lines of code 1667
Technical Name lm_id_withholding
LicenseOPL-1
Websitehttps://lemacore.com
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Lines of code 1667
Technical Name lm_id_withholding
LicenseOPL-1
Websitehttps://lemacore.com
  • Description
  • Documentation
  • License
Indonesia Withholding Tax

Lema Core Technologies

Indonesia Withholding Tax — PPh 21 / 23 / 4(2)

Production-ready Indonesian withholding tax module for Odoo 18. Adds the three most common PPh types to invoice and payment workflows, generates official Bukti Potong documents, and exports SPT Masa data in DJP-compatible CSV or Coretax XML.

Odoo 18 OPL-1 Indonesian Localization
Email Us
Community
Enterprise
Odoo.sh
On-Premise
Lema Core Technologies

Lema Core Technologies is a provider of business software solutions specializing in custom Odoo development. We help businesses unlock the full potential of their Odoo instances through reliable, well-tested modules.

Demo Preview

See Indonesia Withholding Tax in Action

Demo preview

Screenshots

Visual Walkthrough

17 Pre-Configured PPh Tax Records

Statutory tax rates for PPh 23 jasa, dividen / bunga / royalti, PPh 4(2) sewa tanah bangunan, jasa konstruksi, bunga deposito, hadiah, and PPh 21 final — ready to use after install.

PPh tax configuration

Vendor Bill with Auto Withholding

Add a PPh tax to any vendor bill line and the withheld amount is computed automatically. The PPh Withheld field on the form summarises the total.

Vendor bill with PPh withholding

Create Bukti Potong

Generate a bukti potong document for any posted bill with PPh lines. The document aggregates all PPh lines from the bill and formats them according to DJP requirements.

Create Bukti Potong document

Bukti Potong Document Workflow

Draft to Issued workflow with automatic numbering (BP-YYYY/NNNNN) and a QWeb PDF that matches the DJP layout. Cancellation is guarded against issued documents.

Bukti potong document

PDF includes company and partner NPWP, base amount, rate, withheld amount, and signature block. The layout is designed to comply with DJP's official bukti potong format for easy acceptance during tax reporting.

Bukti potong document

Register Payment Bukti Potong Generation

Pay multiple vendor bills in one journal entry; PPh withholding aggregates automatically. Generate every bukti potong for the payment from one smart button.

Register payment workflow

SPT Masa Export CSV & Coretax XML

Period-based export wizard generates files ready for upload to DJP Online (CSV) or Coretax (XML). Filter by PPh type and date range; each line maps to a DJP column.

SPT Masa export wizard

Example CSV output with all PPh types selected for a given month.

SPT Masa export wizard

Features

What You Get

Core Tax Engine

PPh 23 Withholding

Jasa 2% (NPWP) / 4% (non-NPWP), dividen / bunga / royalti 15% / 30%, with automatic rate selection based on partner NPWP status.

PPh 4(2) Final Tax

Sewa tanah-bangunan 10%, jasa konstruksi 2 / 3 / 4 / 6%, bunga deposito 20%, hadiah undian 25% — all final-tax categories pre-configured.

PPh 21 Non-Employee

PPh 21 final for tenaga ahli, honorarium dewan komisaris non-pegawai, and bonus to former employees. Payroll PPh 21 stays in HR modules.

Documents & Reporting

Bukti Potong PDF

QWeb report matching the DJP bukti potong layout, with company NPWP, partner NPWP, base amount, rate, withheld amount, and signature block.

SPT Masa CSV / XML

Export period-based bukti potong to DJP eSPT CSV or Coretax XML. Columns follow the official DJP layout.

NPWP Validation

Format checker accepting both legacy 15-digit and new 16-digit NIK-NPWP. Validation runs as an ORM constraint on partner save.

Automation & Integration

Auto Rate by NPWP

When the partner has no NPWP, the higher rate is applied automatically. No manual switching of tax records.

Batch Payment Support

Pay multiple bills at once; PPh aggregates per payment and bukti potong can be generated for all reconciled bills in one click.

Multi-Company Safe

Record rules isolate bukti potong per company. SPT export and sequences are scoped to the active company context.

System Architecture

From Invoice to SPT Masa

PPh data flows automatically from invoice line to bukti potong to monthly SPT export.

Invoice / Bill
PPh tax attached to a line. Withheld amount computed at posting.
Payment
Withholding line auto-injected into payment journal entry for reconciled bills.
Bukti Potong
DJP-format document with auto-sequence and QWeb PDF report.
SPT Masa Export
Monthly CSV / XML ready for DJP Online or Coretax upload.

Technical Specifications

Built on Odoo 18 Standards

Dependencies
  • account (core)
  • l10n_id (Indonesian COA)
  • No enterprise-only dependencies
Deployment
  • Odoo Community & Enterprise
  • Odoo.sh (PaaS)
  • On-Premise multi-worker
Performance
  • Batched search and create — no N+1 queries
  • Stored computed for withholding total
  • Indexed NPWP field for fast lookups
Security
  • Per-model access control list
  • Company isolation record rules
  • Issued bukti potong cannot be modified

Version History

What's New

LATEST v18.0.2.0.0 May 2026
NPWP Aliased to VAT Field Header Button for Create Bukti Potong Smart Auto-Hide When Nothing to Create English Source + Indonesian Translation
v18.0.1.0.0 May 2026 Initial Release
PPh 23 / 4(2) / 21 Final Bukti Potong PDF SPT Masa CSV / XML Batch Payment Integration

Frequently Asked Questions

Got Questions?

Which PPh types are supported?
PPh 23 (jasa, sewa non-bangunan, dividen, bunga, royalti), PPh 4(2) final (sewa tanah-bangunan, jasa konstruksi, bunga deposito, hadiah), and PPh 21 final for non-employees (tenaga ahli, honorarium komisaris non-pegawai). Statutory rates are pre-configured.
Does it integrate with payroll for PPh 21?
PPh 21 for permanent employees is handled by the payroll module (l10n_id_hr_payroll on enterprise). This module covers PPh 21 final for non-employees such as tenaga ahli, mantan pegawai bonuses, and dewan komisaris honorarium that are paid through vendor bills.
How does the auto NPWP rate switching work?
Each PPh tax has a primary rate (NPWP holder) and an alternate rate field for non-NPWP partners. At posting time, the partner's NPWP field is checked; if empty, the alternate rate is applied automatically. For PPh 23 jasa this means 2% with NPWP versus 4% without.
Can I generate bukti potong for multiple bills paid together?
Yes. After the batch payment settles, open the payment record and click the Create Bukti Potong smart button. The module creates one bukti potong per (bill, tax) pair across every reconciled bill in a single batched operation. Duplicates are skipped automatically.
Is this available for Odoo Community and Enterprise?
Yes. The module depends only on the core account module and l10n_id, both of which exist on Community and Enterprise editions. Odoo.sh and on-premise deployments are supported.
Do purchases include future version upgrades?
Each purchase covers the specific Odoo version purchased. Upgrades to newer major versions are available at a reduced upgrade price. Bug fixes and minor updates within the same version are provided free of charge.

Related Products

Indonesia Bank Statement Import

SQL Query Executor

Lema AI Summary

Lema MCP Server

Lema RFQ Sequence

Lema Sale Quotation Sequence

Lema Core Technologies Indonesia Withholding Tax v18.0.2.0.0  ·  OPL-1 License  ·  © 2026 Lema Core Technologies
info@lemacore.com

Indonesia Withholding Tax (PPh 21/23/4(2))

Production-ready withholding tax module for Indonesian businesses running Odoo 18. Adds the three most common PPh (Pajak Penghasilan) types to invoice and payment workflows, generates official Bukti Potong documents, and exports SPT Masa data in DJP-compatible CSV or Coretax XML.

Works on Odoo 18 Community and Enterprise. Hard dependencies: account, l10n_id.

What This Module Solves

Stock Odoo 18 has no native support for:

  • PPh 23 withholding (jasa / sewa non-bangunan / dividen)
  • PPh 4(2) final tax (sewa tanah-bangunan, jasa konstruksi, bunga, hadiah)
  • PPh 21 final for non-employees (tenaga ahli, honorarium komisaris)
  • Bukti Potong document generation
  • SPT Masa export to DJP

This module fills those gaps without overriding any community or enterprise behavior.

Installation

odoo-bin -c odoo.conf -d <database> -i lm_id_withholding --stop-after-init

Or from the UI: Apps → search "PPh" → Install.

Post-Install Configuration

The module ships 17 pre-configured tax records based on statutory rates (PMK / UU HPP). Configure these once after install:

  1. Map tax repartition accounts — open Accounting → Configuration → Taxes, filter by "PPh", and assign the correct liability account on each tax repartition line.
  2. Set NPWP on partners — on each vendor/customer subject to PPh, open the partner record, go to the Accounting tab, and fill the NPWP field. Partners without NPWP are charged the higher rate automatically (e.g. 4% instead of 2% for PPh 23 jasa).
  3. Verify pre-configured tax rates — the data file provides taxes for PPh 23 jasa (2% / 4%), PPh 23 dividen-bunga-royalti (15%), PPh 4(2) sewa tanah-bangunan (10%), PPh 4(2) konstruksi (2%-6%), PPh 4(2) bunga deposito (20%), and PPh 21 final tenaga ahli (2.5%).

Usage

Create a vendor bill with PPh withholding

  1. Open Accounting → Vendors → Bills → New.
  2. Select the vendor (whose NPWP you configured).
  3. Add invoice line with a "PPh" tax in the Taxes column.
  4. Confirm the bill. The PPh Withheld field shows the deducted amount.

Generate bukti potong

  • From a single bill: open the bill, click Action → Create Bukti Potong.
  • From multiple bills: tick bills in the list view, then Action → Create Bukti Potong.
  • From a payment (after settlement): click the Create Bukti Potong smart button on the payment form.

Issue and print bukti potong

  1. Accounting → Reporting → Indonesia (PPh) → Bukti Potong.
  2. Open the draft record, click Issue (assigns sequence BP-YYYY/NNNNN).
  3. Click Print to download the official QWeb PDF.

Export SPT Masa

  1. Accounting → Reporting → Indonesia (PPh) → Export SPT Masa.
  2. Pick the period (date range), PPh type, and format (CSV or XML).
  3. Click Export to download the file ready for upload to DJP Online or Coretax.

Batch Payment / Multi-Bill Payment

Pay multiple vendor bills in one journal entry while keeping PPh withholding correct for each. Pick the bills in the list view, click Action → Register Payment — the resulting payment auto-aggregates the withholding from every reconciled bill. account.batch.payment (Odoo Enterprise) is also supported because withholding works at the individual payment level.

Smart Buttons and Indicators

Where Field / Button Purpose
Bill / Invoice form PPh Withheld Sum of all PPh
Bill / Invoice form Bukti Potong button Opens linked documents
Payment form PPh Withholding Aggregated from bills
Payment form Bukti Potong button Opens linked documents
Payment form Create Bukti Potong Batch-create action
Partner form, Accounting tab NPWP field Drives auto rate

Common Issues

  • "Tax repartition account is missing" on post — assign a tax account on each PPh tax's repartition lines.
  • Partner shows non-NPWP rate but you entered NPWP — verify NPWP is 15 or 16 digits (dashes/dots are optional).
  • SPT export returns zero rows — bukti potong must be in issued state and within the requested date range.

License

OPL-1. Copyright Lema Core Technologies — https://lemacore.com

Changelog

  • 1.0.0 — Initial release: PPh 21/23/4(2) support, bukti potong, SPT Masa CSV/XML export, batch payment integration.
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with