Professional bookkeeping, financial statements, payroll and internal audit — keeping your business finances accurate, compliant and ready for audit whenever it comes.
Credentials
Three core concepts every business owner should understand before handing books to anyone — including me. Clear bookkeeping today means a clean SPT tomorrow, no tax surprises, and financial statements investors can actually trust.
Every transaction keeps this balanced. If your books don't balance, something is wrong — not the math. When business starts running, we extend it to: Assets = Liabilities + Equity + Revenue − Expenses.
Every transaction flows through these eight steps — from receipt to financial statement. Skip a step, and your reports can't be trusted.
The one table you'll reference forever. It tells you which side an account normally sits on — and which side to record an increase.
| Account | Normal |
|---|---|
| Assets | D |
| Expenses | D |
| Liabilities | K |
| Equity | K |
| Revenue | K |
An illustrative service-firm example (not real client data) showing how a year of transactions moves through the accounting cycle into a clean Income Statement — the same process applied to live client books.
| Date | Description | Account (Dr / Cr) | Debit (Rp) | Credit (Rp) |
|---|---|---|---|---|
| 01 Jan | Owner capital deposit | Bank / Equity | 500.000.000 | 500.000.000 |
| 03 Jan | Buy vehicle, cash | Vehicle / Bank | 200.000.000 | 200.000.000 |
| 10 Jan | Buy office supplies on credit | Supplies Exp / A/P | 5.000.000 | 5.000.000 |
| 10 Mar | Service revenue, cash | Bank / Revenue | 50.000.000 | 50.000.000 |
| 30 Mar | Pay salary | Salary Exp / Bank | 5.000.000 | 5.000.000 |
| 10 Apr | Service Rp 300M, DP Rp 50M | Bank + A/R / Revenue | 300.000.000 | 300.000.000 |
| 31 Dec | Depreciation, vehicle | Deprec Exp / Accum Deprec | 25.000.000 | 25.000.000 |
Five representative businesses from Palu — from a UMKM café to a construction PT — each sitting in a different corner of Indonesia's tax landscape. Browse the bookkeeping below, then follow the View tax analysis → link on any case to see the full tax compliance analysis on the Tax page. The same data, two professional lenses.
A small café in Palu owned by Pak Hasan, serving espresso-based drinks, teas, and snacks. Monthly revenue of Rp 32.9M places it well within the UMKM threshold — single-entry bookkeeping is sufficient, no PPN to collect, and employee payroll sits below PTKP. A textbook Non-PKP case.
Every cash in and cash out, recorded chronologically. Since Kopi Tadulako is Non-PKP and owner-managed, a simple single-entry cash book is compliant under Article 28(7) UU KUP (pencatatan instead of pembukuan lengkap).
| Date | Description | Debit (Rp) | Credit (Rp) | Account | Cash Balance |
|---|---|---|---|---|---|
| 01 Jan | Owner capital deposit | 50.000.000 | — | Kas / Modal | 50.000.000 |
| 01 Jan | Rent — January | — | 3.500.000 | B. Sewa / Kas | 46.500.000 |
| 01 Jan | Café equipment (tables, chairs, coffee machine) | — | 12.000.000 | Peralatan / Kas | 34.500.000 |
| 02 Jan | Initial raw material stock | — | 4.000.000 | Persediaan / Kas | 30.500.000 |
| 03 Jan | Cash sales day 1 | 1.250.000 | — | Kas / Pendapatan | 31.750.000 |
| 04 Jan | Cash sales day 2 | 980.000 | — | Kas / Pendapatan | 32.730.000 |
| 05 Jan | Cash sales day 3 | 1.100.000 | — | Kas / Pendapatan | 33.830.000 |
| 06 Jan | Pay salary (2 baristas) | — | 4.000.000 | B. Gaji / Kas | 29.830.000 |
| 07 Jan | Cash sales day 5–6 | 2.150.000 | — | Kas / Pendapatan | 31.980.000 |
| 08 Jan | Weekly restock | — | 2.500.000 | Persediaan / Kas | 29.480.000 |
| 10 Jan | Cash sales (8–10 Jan) | 3.450.000 | — | Kas / Pendapatan | 32.930.000 |
| 12 Jan | Cash sales (11–12 Jan) | 2.200.000 | — | Kas / Pendapatan | 35.130.000 |
| 13 Jan | Electricity & water | — | 850.000 | B. Utilitas / Kas | 34.280.000 |
| 14 Jan | Cash sales (13–14 Jan) | 2.400.000 | — | Kas / Pendapatan | 36.680.000 |
| 15 Jan | Weekly restock | — | 2.500.000 | Persediaan / Kas | 34.180.000 |
| 17 Jan | Cash sales (15–17 Jan) | 3.600.000 | — | Kas / Pendapatan | 37.780.000 |
| 19 Jan | Cash sales (18–19 Jan) | 2.300.000 | — | Kas / Pendapatan | 40.080.000 |
| 20 Jan | Pay salary (2 baristas) | — | 4.000.000 | B. Gaji / Kas | 36.080.000 |
| 21 Jan | Restock + packaging | — | 3.000.000 | Persediaan / Kas | 33.080.000 |
| 21 Jan | Cash sales (20–21 Jan) | 2.500.000 | — | Kas / Pendapatan | 35.580.000 |
| 24 Jan | Cash sales (22–24 Jan) | 3.800.000 | — | Kas / Pendapatan | 39.380.000 |
| 26 Jan | Cash sales (25–26 Jan) | 2.600.000 | — | Kas / Pendapatan | 41.980.000 |
| 27 Jan | Marketing (IG ads + flyer) | — | 500.000 | B. Pemasaran / Kas | 41.480.000 |
| 28 Jan | Cash sales (27–28 Jan) | 2.700.000 | — | Kas / Pendapatan | 44.180.000 |
| 29 Jan | End-of-month restock | — | 2.000.000 | Persediaan / Kas | 42.180.000 |
| 31 Jan | Cash sales (29–31 Jan) | 3.900.000 | — | Kas / Pendapatan | 46.080.000 |
| 31 Jan | Equipment depreciation (Rp12M / 36 mo) | — | 333.333 | B. Penyusutan / Akm. Penyusutan | 45.746.667 |
| TOTAL | 84.930.000 | 39.183.333 | 45.746.667 | ||
Two views of COGS: (A) raw material movement by date, (B) breakdown by menu category. Compared against gross margin targets to flag pricing issues early.
| Date | Description | Purchased (Rp) | Used (Rp) | Stock balance |
|---|---|---|---|---|
| 02 Jan | Initial raw stock | 4.000.000 | — | 4.000.000 |
| 08 Jan | Weekly restock | 2.500.000 | — | 6.500.000 |
| 08 Jan | Estimated usage (1–8 Jan) | — | 3.200.000 | 3.300.000 |
| 15 Jan | Weekly restock | 2.500.000 | — | 5.800.000 |
| 15 Jan | Estimated usage (9–15 Jan) | — | 3.100.000 | 2.700.000 |
| 21 Jan | Restock + packaging | 3.000.000 | — | 5.700.000 |
| 21 Jan | Estimated usage (16–21 Jan) | — | 2.800.000 | 2.900.000 |
| 29 Jan | End-of-month restock | 2.000.000 | — | 4.900.000 |
| 31 Jan | Estimated usage (22–31 Jan) | — | 2.900.000 | 2.000.000 |
| TOTAL | 14.000.000 | 12.000.000 | 2.000.000 | |
| Menu category | Main ingredients | Cost/unit | Portions | Total COGS | Price/unit | GM % |
|---|---|---|---|---|---|---|
| Coffee (espresso) | Beans, milk, sugar | 8.000 | 820 | 6.560.000 | 12.000 | 33,3% |
| Non-coffee drinks | Tea, milk, syrup, fruit | 5.000 | 410 | 2.050.000 | 9.000 | 44,4% |
| Snacks | Flour, eggs, oil, packaging | 6.000 | 380 | 2.280.000 | 12.000 | 50,0% |
| Bottled resale | Direct supplier purchase | 7.000 | 210 | 1.470.000 | 12.000 | 41,7% |
| TOTAL COGS — JANUARY | 12.360.000 | |||||
The core monthly performance statement — revenue, gross profit after COGS, operating expenses, and net profit after final tax.
| REVENUE | |
| Food & beverage sales | 32.930.000 |
| TOTAL REVENUE | 32.930.000 |
| COST OF GOODS SOLD | |
| Raw materials consumed (per source sheet) | 14.000.000 |
| GROSS PROFIT | 18.930.000 |
| Gross margin % | 57,5% |
| OPERATING EXPENSES | |
| Salary (2 baristas) | 8.000.000 |
| Rent | 3.500.000 |
| Utilities | 850.000 |
| Marketing | 500.000 |
| Depreciation | 333.333 |
| TOTAL OPEX | 13.183.333 |
| PRE-TAX PROFIT (EBIT) | 5.746.667 |
| PPh Final UMKM (0.5% × revenue) | (164.650) |
| NET PROFIT AFTER TAX | 5.582.017 |
Three people on the books. Both baristas fall below the PTKP (non-taxable income threshold), so no PPh 21 withholding applies — but compensation structure means even a small raise could change that.
| # | Name | Role | PTKP | Gross/mo | PPh 21/mo | Note |
|---|---|---|---|---|---|---|
| 1 | Rina Marlina | Barista / Cashier | TK/0 | 4.000.000 | 0 | Annual gross < PTKP |
| 2 | Dedy Kurniawan | Barista / Server | TK/0 | 4.000.000 | 0 | Annual gross < PTKP |
| 3 | Pak Hasan | Owner / Manager | K/1 | — | — | Takes profit, not salary · files SPT 1770 |
| TOTAL | 8.000.000 | 0 | ||||
A sembako retailer in Palu owned by Bapak Rahmat, selling rice, cooking oil, sugar, and mixed grocery to walk-in customers. Already registered as PKP, so every purchase and sale carries PPN 11%. Three employees — one kepala toko above PTKP, two below. Where Kopi Tadulako kept things simple, Toko Makmur operates at the next tier of tax complexity.
As a PKP, Toko Makmur is required to use full double-entry bookkeeping under Article 28(1) UU KUP — not just pencatatan. Every sale is split into DPP + PPN Keluaran; every purchase into Persediaan + PPN Masukan. This separation is what makes the monthly PPN reconciliation possible.
| Date | Description | Debit (Rp) | Credit (Rp) | Account (D / K) |
|---|---|---|---|---|
| 01 Jan | Owner capital deposit | 150.000.000 | — | Kas / Modal |
| 01 Jan | Rent — Januari | — | 5.000.000 | B. Sewa / Kas |
| 03 Jan | Buy rice 200kg — DPP | — | 2.400.000 | Persediaan / Kas |
| 03 Jan | ↳ VAT In (11%) | — | 264.000 | PPN Masukan / Kas |
| 05 Jan | Sale rice — DPP | 2.160.000 | — | Kas / Penjualan |
| 05 Jan | ↳ VAT Out (11%) | 237.600 | — | Kas / PPN Keluaran |
| 07 Jan | Buy cooking oil — DPP | — | 1.850.000 | Persediaan / Kas |
| 07 Jan | ↳ VAT In (11%) | — | 203.500 | PPN Masukan / Kas |
| 08 Jan | Sale cooking oil — DPP | 2.160.000 | — | Kas / Penjualan |
| 08 Jan | ↳ VAT Out (11%) | 237.600 | — | Kas / PPN Keluaran |
| 10 Jan | Buy sugar 150kg — DPP | — | 2.175.000 | Persediaan / Kas |
| 10 Jan | ↳ VAT In (11%) | — | 239.250 | PPN Masukan / Kas |
| 12 Jan | Sale sugar — DPP | 2.800.000 | — | Kas / Penjualan |
| 12 Jan | ↳ VAT Out (11%) | 308.000 | — | Kas / PPN Keluaran |
| 14 Jan | Buy mixed sembako — DPP | — | 4.500.000 | Persediaan / Kas |
| 14 Jan | ↳ VAT In (11%) | — | 495.000 | PPN Masukan / Kas |
| 16 Jan | Sale rice — DPP | 3.000.000 | — | Kas / Penjualan |
| 16 Jan | ↳ VAT Out (11%) | 330.000 | — | Kas / PPN Keluaran |
| 18 Jan | Sale mixed sembako — DPP | 3.300.000 | — | Kas / Penjualan |
| 18 Jan | ↳ VAT Out (11%) | 363.000 | — | Kas / PPN Keluaran |
| 20 Jan | Buy rice 300kg — DPP | — | 3.660.000 | Persediaan / Kas |
| 20 Jan | ↳ VAT In (11%) | — | 402.600 | PPN Masukan / Kas |
| 22 Jan | Sale cooking oil — DPP | 1.480.000 | — | Kas / Penjualan |
| 22 Jan | ↳ VAT Out (11%) | 162.800 | — | Kas / PPN Keluaran |
| 24 Jan | Sale rice — DPP | 3.360.000 | — | Kas / Penjualan |
| 24 Jan | ↳ VAT Out (11%) | 369.600 | — | Kas / PPN Keluaran |
| 26 Jan | Buy sugar & sembako — DPP | — | 3.700.000 | Persediaan / Kas |
| 26 Jan | ↳ VAT In (11%) | — | 407.000 | PPN Masukan / Kas |
| 28 Jan | Sale mixed sembako — DPP | 4.500.000 | — | Kas / Penjualan |
| 28 Jan | ↳ VAT Out (11%) | 495.000 | — | Kas / PPN Keluaran |
| 29 Jan | Pay salary (3 staff) | — | 7.500.000 | B. Gaji / Kas |
| 30 Jan | Sale rice & sugar — DPP | 2.600.000 | — | Kas / Penjualan |
| 30 Jan | ↳ VAT Out (11%) | 286.000 | — | Kas / PPN Keluaran |
| 31 Jan | End-of-month sales — DPP | 2.100.000 | — | Kas / Penjualan |
| 31 Jan | ↳ VAT Out (11%) | 231.000 | — | Kas / PPN Keluaran |
| 31 Jan | Electricity & internet | — | 1.200.000 | B. Utilitas / Kas |
| TOTAL DEBIT / KREDIT | 180.480.600 | 33.996.350 | ||
FIFO (First-In, First-Out) tracks which physical stock gets sold first — the oldest purchases. Purchases are recorded at DPP (excluding PPN, which flows separately). Outflows should be valued at FIFO cost, not selling price.
| Date | Description | Qty In | Unit Cost (Rp) | Value In (Rp) | Qty Out | Outflow Value (Rp) |
|---|---|---|---|---|---|---|
| 01 Jan | Opening: rice | 500 | 12.000 | 6.000.000 | — | — |
| 01 Jan | Opening: cooking oil | 200 | 18.000 | 3.600.000 | — | — |
| 01 Jan | Opening: sugar | 300 | 14.000 | 4.200.000 | — | — |
| 03 Jan | Buy rice 200kg + PPN | 200 | 12.000 | 2.400.000 | — | — |
| 05 Jan | Sale rice | — | — | — | 180 | 2.160.000 |
| 07 Jan | Buy cooking oil 100L + PPN | 100 | 18.500 | 1.850.000 | — | — |
| 08 Jan | Sale cooking oil | — | — | — | 120 | 2.160.000 |
| 10 Jan | Buy sugar 150kg + PPN | 150 | 14.500 | 2.175.000 | — | — |
| 12 Jan | Sale sugar | — | — | — | 200 | 2.800.000 |
| 14 Jan | Buy mixed sembako + PPN | 300 | 15.000 | 4.500.000 | — | — |
| 16 Jan | Sale rice | — | — | — | 250 | 3.000.000 |
| 18 Jan | Sale mixed sembako | — | — | — | 220 | 3.300.000 |
| 20 Jan | Buy rice 300kg + PPN | 300 | 12.200 | 3.660.000 | — | — |
| 22 Jan | Sale cooking oil | — | — | — | 80 | 1.480.000 |
| 24 Jan | Sale rice | — | — | — | 280 | 3.360.000 |
| 26 Jan | Buy sugar & sembako + PPN | 250 | 14.800 | 3.700.000 | — | — |
| 28 Jan | Sale mixed sembako | — | — | — | 300 | 4.500.000 |
| 30 Jan | Sale rice & sugar | — | — | — | 200 | 2.600.000 |
| 31 Jan | End-of-month sale | — | — | — | 150 | 2.100.000 |
| TOTAL | 2.000 | 32.085.000 | 1.980 | 27.460.000 | ||
Every month, Toko Makmur files SPT Masa PPN. It adds up all PPN collected from customers (Keluaran) and subtracts PPN paid to suppliers (Masukan). The difference is either remitted to DJP (kurang bayar) or carried forward as credit / refunded (lebih bayar).
| Date | Purchase | DPP (Rp) | VAT 11% (Rp) | Total paid | FP No. |
|---|---|---|---|---|---|
| 03 Jan | Buy rice 200kg | 2.400.000 | 264.000 | 2.664.000 | FP-TM-2501-001 |
| 07 Jan | Buy cooking oil 100L | 1.850.000 | 203.500 | 2.053.500 | FP-TM-2501-002 |
| 10 Jan | Buy sugar 150kg | 2.175.000 | 239.250 | 2.414.250 | FP-TM-2501-003 |
| 14 Jan | Buy mixed sembako | 4.500.000 | 495.000 | 4.995.000 | FP-TM-2501-004 |
| 20 Jan | Buy rice 300kg | 3.660.000 | 402.600 | 4.062.600 | FP-TM-2501-005 |
| 26 Jan | Buy sugar & sembako | 3.700.000 | 407.000 | 4.107.000 | FP-TM-2501-006 |
| TOTAL PPN MASUKAN | 18.285.000 | 2.011.350 | 20.296.350 | ||
| Date | Sale | DPP (Rp) | VAT 11% (Rp) | Total received | FK No. |
|---|---|---|---|---|---|
| 05 Jan | Sale rice to customer | 2.160.000 | 237.600 | 2.397.600 | FK-TM-2501-001 |
| 08 Jan | Sale cooking oil | 2.160.000 | 237.600 | 2.397.600 | FK-TM-2501-002 |
| 12 Jan | Sale sugar | 2.800.000 | 308.000 | 3.108.000 | FK-TM-2501-003 |
| 16 Jan | Sale rice | 3.000.000 | 330.000 | 3.330.000 | FK-TM-2501-004 |
| 18 Jan | Sale mixed sembako | 3.300.000 | 363.000 | 3.663.000 | FK-TM-2501-005 |
| 22 Jan | Sale cooking oil | 1.480.000 | 162.800 | 1.642.800 | FK-TM-2501-006 |
| 24 Jan | Sale rice | 3.360.000 | 369.600 | 3.729.600 | FK-TM-2501-007 |
| 28 Jan | Sale mixed sembako | 4.500.000 | 495.000 | 4.995.000 | FK-TM-2501-008 |
| 30 Jan | Sale rice & sugar | 2.600.000 | 286.000 | 2.886.000 | FK-TM-2501-009 |
| 31 Jan | End-of-month sale | 2.100.000 | 231.000 | 2.331.000 | FK-TM-2501-010 |
| TOTAL PPN KELUARAN | 27.460.000 | 3.020.600 | 30.480.600 | ||
| PPN Keluaran (collected from customers) | 3.020.600 |
| PPN Masukan (credited from purchases) | (2.011.350) |
| PPN KURANG BAYAR — to remit to DJP | 1.009.250 |
📌 Tax note: PPN Kurang Bayar (positive) = remit to state treasury by end of following month (28 Feb 2025 for Jan period). PPN Lebih Bayar (negative) = can be compensated against future months or requested as refund (restitusi).
DPP only — VAT flows separately through PPN Masukan/Keluaran accounts on the balance sheet side. HPP is estimated at 58% gross margin (see reconciliation finding on the Persediaan tab). PPh is zero because Bapak Rahmat’s annualized PKP falls below PTKP K/2.
| REVENUE | |
| Sembako retail sales (DPP only) | 27.460.000 |
| TOTAL REVENUE | 27.460.000 |
| COST OF GOODS SOLD | |
| COGS (imputed at 58% GM) | 11.533.200 |
| GROSS PROFIT | 15.926.800 |
| Gross margin % | 58,0% |
| OPERATING EXPENSES | |
| Salary (3 staff) | 7.500.000 |
| Rent (ruko) | 5.000.000 |
| Utilities (electricity + internet) | 1.200.000 |
| TOTAL OPEX | 13.700.000 |
| PRE-TAX PROFIT (EBIT) | 2.226.800 |
| Net margin % | 8,1% |
| PPh OP (annualized EBIT < PTKP K/2) | 0 |
| NET PROFIT AFTER TAX | 2.226.800 |
Four people on the books — including the owner. Only one (Tono, kepala toko) exceeds PTKP and triggers actual PPh 21 withholding. Kasir and pramuniaga sit comfortably below.
| # | Name | Role | PTKP | Gross/mo | PPh 21/mo | Note |
|---|---|---|---|---|---|---|
| 1 | Bapak Rahmat | Owner / Director | K/2 | — | — | Takes profit distribution · files SPT 1770 |
| 2 | Desi Ratnasari | Cashier / Admin | TK/0 | 3.700.000 | 0 | Annual gross < PTKP TK/0 |
| 3 | Tono Wibowo | Store Manager | K/1 | 8.000.000 | 117.500 | PKP Rp 28,2jt × 5% = Rp 1,41jt/yr |
| 4 | Sari Dewi | Sales clerk | TK/0 | 3.000.000 | 0 | Annual gross < PTKP TK/0 |
| TOTAL | 14.700.000 | 117.500 | ||||
An IT services firm in Palu, registered as PKP with annual revenue above Rp 4.8B. CV Solusi Digital issues invoices to corporate clients who withhold PPh 23, collects PPN 11% on every service, and runs payroll for 5 employees — two of whom have no NPWP yet. A three-tax-obligation case.
CV Solusi Digital is a registered PKP — every invoice must include PPN 11% and be accompanied by a Faktur Pajak. Corporate clients (PT, CV, government) withhold PPh 23 at 2% of the service fee (DPP) before remitting payment. Three invoices remain unpaid — but PPN is already owed to DJP from the invoice date.
| Invoice | Client | Date | DPP (Rp) | PPN 11% | Total (Rp) | Status |
|---|---|---|---|---|---|---|
| INV-2501-001 | PT Harapan Maju | 05 Jan | 15.000.000 | 1.650.000 | 16.650.000 | PAID |
| INV-2501-002 | CV Berkah Abadi | 08 Jan | 8.500.000 | 935.000 | 9.435.000 | PAID |
| INV-2501-003 | UD Sejahtera Palu | 10 Jan | 22.000.000 | 2.420.000 | 24.420.000 | UNPAID |
| INV-2501-004 | PT Sulawesi Niaga | 12 Jan | 18.000.000 | 1.980.000 | 19.980.000 | SEBAGIAN |
| INV-2501-005 | Dinas Pertanian Sulteng | 15 Jan | 45.000.000 | 4.950.000 | 49.950.000 | PAID |
| INV-2501-006 | CV Mitra Teknologi | 18 Jan | 12.000.000 | 1.320.000 | 13.320.000 | UNPAID |
| INV-2501-007 | PT Alam Sulawesi | 20 Jan | 9.500.000 | 1.045.000 | 10.545.000 | PAID |
| INV-2501-008 | Koperasi Nelayan Palu | 22 Jan | 6.000.000 | 660.000 | 6.660.000 | UNPAID |
| INV-2501-009 | PT Konstruksi Prima | 25 Jan | 33.000.000 | 3.630.000 | 36.630.000 | SEBAGIAN |
| INV-2501-010 | UD Karya Mandiri | 28 Jan | 11.000.000 | 1.210.000 | 12.210.000 | PAID |
| TOTAL | 180.000.000 | 19.800.000 | 199.800.000 | |||
| Status | Invoices | DPP (Rp) | PPN (Rp) | Total Tagihan (Rp) |
|---|---|---|---|---|
| PAID | 5 | 89.000.000 | 9.790.000 | 98.790.000 |
| SEBAGIAN | 2 | 51.000.000 | 5.610.000 | 56.610.000 |
| UNPAID | 3 | 40.000.000 | 4.400.000 | 44.400.000 |
| TOTAL | 10 | 180.000.000 | 19.800.000 | 199.800.000 |
Direct method: cash in and out by activity. Three sections — Operating, Investing, Financing. Note that PPN and PPh 23 collected/withheld appear as operating items, not income.
| Description | Notes | Cash In (Rp) | Cash Out (Rp) | Net (Rp) |
|---|---|---|---|---|
| I. AKTIVITAS OPERASI | ||||
| Collections from clients (5 paid invoices) | INV-001,002,005,007,010 | 99.500.000 | — | — |
| Partial collection INV-004 (50%) | 50% × Rp 19,98jt | 9.990.000 | — | — |
| Partial collection INV-009 (30%) | 30% × Rp 36,63jt | 10.989.000 | — | — |
| Pay salaries (5 employees) | See Employees tab | — | 22.500.000 | — |
| Office rent | Januari 2025 | — | 8.000.000 | — |
| Operational costs (stationery, internet, etc) | — | — | 3.500.000 | — |
| PPN remittance (prior month SPT) | SPT Masa PPN Des 2024 | — | 12.650.000 | — |
| PPh 21 employee withholding | See Employees tab | — | 4.250.000 | — |
| NET CASH FROM OPERATING ACTIVITIES | 69.579.000 | |||
| II. AKTIVITAS INVESTASI | ||||
| Purchase 2 new laptops (fixed assets) | Aset tetap | — | 24.000.000 | — |
| Server upgrade & annual hosting | Infrastruktur IT | — | 6.500.000 | — |
| NET CASH FROM INVESTING ACTIVITIES | (30.500.000) | |||
| III. AKTIVITAS PENDANAAN | ||||
| Working capital loan | Bank Sulutgo | 50.000.000 | — | — |
| Loan principal repayment | Angsuran rutin | — | 5.000.000 | — |
| NET CASH FROM FINANCING ACTIVITIES | 45.000.000 | |||
| OPENING CASH BALANCE (1 Jan 2025) | 35.000.000 | |||
| CLOSING CASH BALANCE (31 Jan 2025) | 119.079.000 | |||
5 permanent employees. Arif (Director) and Novia (Senior Dev) are in the 15% progressive bracket. Dewi and Bagas have no NPWP — DJP requires a 20% PPh 21 surcharge on their monthly withholding until they register.
| Name | Position | PTKP | Gross/mo (Rp) | PPh 21/mo (Rp) | Net (Rp) | Notes |
|---|---|---|---|---|---|---|
| Arif Hidayatullah | Direktur | K/2 | 18.000.000 | 1.281.250 | 16.718.750 | PKP Rp 142,5jt — lapis 5%+15% |
| Novia Rahmawati | Senior Dev | TK/0 | 11.500.000 | 475.000 | 11.025.000 | PKP Rp 78jt — lapis 5%+15% |
| Rizky Firmansyah | Backend Dev | K/1 | 9.500.000 | 188.750 | 9.311.250 | PKP Rp 45,3jt × 5% |
| Dewi Anggraini ⚠ | UI/UX Designer | TK/0 | 7.750.000 | 143.125 | 7.606.875 | No NPWP yet — subject to the 20% surcharge |
| Bagas Setiawan ⚠ | Junior Dev | TK/0 | 6.000.000 | 60.000 | 5.940.000 | No NPWP yet — subject to the 20% surcharge |
| TOTAL | 52.750.000 | 2.148.125 | 50.601.875 | |||
Prepared under PSAK (SAK Umum) presentation. As a CV without public accountability, this entity may formally use SAK EP; the full PSAK format below demonstrates full-standard capability.
| Description | Amount (Rp) |
|---|---|
| Service revenue | 180.000.000 |
| Direct project cost | (90.000.000) |
| GROSS PROFIT | 90.000.000 |
| Salary expense | (22.500.000) |
| Office rent | (8.000.000) |
| Operating expense | (3.500.000) |
| Depreciation | (1.000.000) |
| NET PROFIT | 55.000.000 |
| Item | Amount (Rp) |
|---|---|
| CURRENT ASSETS | |
| Cash & equivalents | 119.079.000 |
| Trade receivables | 72.100.000 |
| Prepaid tax (PPh 23) | 3.600.000 |
| Total current assets | 194.779.000 |
| NON-CURRENT ASSETS | |
| Fixed assets (net) | 29.500.000 |
| TOTAL ASSETS | 224.279.000 |
| LIABILITIES | |
| Bank loan (short-term) | 45.000.000 |
| Tax payable (VAT) | 4.279.000 |
| Total liabilities | 49.279.000 |
| EQUITY | |
| Paid-in capital | 120.000.000 |
| Current-year profit | 55.000.000 |
| Total equity | 175.000.000 |
| TOTAL LIABILITIES & EQUITY | 224.279.000 |
A construction company in Palu contracted for a 3-month government office building project worth Rp 2.8B. PT Bangun Sulawesi manages project costing with budget vs actuals variance, progress billing in three termins, and a mixed workforce of 5 permanent staff plus 15 daily laborers — each with different tax treatment.
Gedung Kantor Dinas project — Rp 2.8B contract over 3 months. This sheet tracks budget vs actual spending in January across 4 cost categories: Materials, Labor, Equipment, Overhead. Variance analysis shows where the project is running over or under budget.
| Code | Work Item | Budget Jan (Rp) | Actual Jan (Rp) | Variance (Rp) | % |
|---|---|---|---|---|---|
| MATERIAL | |||||
| MAT-01 | Cement & foundation materials | 180.000.000 | 175.000.000 | 5.000.000 | 97,2% |
| MAT-02 | Besi beton & tulangan | 220.000.000 | 215.000.000 | 5.000.000 | 97,7% |
| MAT-03 | Bata, pasir & kerikil | 95.000.000 | 92.000.000 | 3.000.000 | 96,8% |
| MAT-04 | Kayu bekisting | 60.000.000 | 58.000.000 | 2.000.000 | 96,7% |
| MAT-05 | Cat, keramik & finishing | 20.000.000 | 0 | 20.000.000 | 0% — not yet scheduled |
| TENAGA KERJA | |||||
| LAB-01 | Foreman wages (1 person) | 8.000.000 | 8.000.000 | 0 | 100% |
| LAB-02 | Tradesmen wages (10 people) | 50.000.000 | 50.000.000 | 0 | 100% |
| LAB-03 | Labourer wages (15 people) | 45.000.000 | 45.000.000 | 0 | 100% |
| LAB-04 | Lembur & tunjangan lapangan | 12.000.000 | 11.500.000 | 500.000 | 95,8% |
| PERALATAN | |||||
| EQP-01 | Heavy equipment rental (excavator) | 35.000.000 | 33.000.000 | 2.000.000 | 94,3% |
| EQP-02 | Scaffolding rental | 8.000.000 | 8.000.000 | 0 | 100% |
| OVERHEAD | |||||
| OVH-01 | Occupational health & safety costs | 5.000.000 | 4.800.000 | 200.000 | 96,0% |
| OVH-02 | Transportasi & logistik | 15.000.000 | 14.500.000 | 500.000 | 96,7% |
| OVH-03 | Project office overhead | 10.000.000 | 10.000.000 | 0 | 100% |
| TOTAL JANUARI | 763.000.000 | 724.800.000 | 38.200.000 | 94,9% | |
Construction contracts in Indonesia typically use termin billing — payment is triggered by physical progress milestones, not calendar dates. Each termin is subject to PPN 11% and PPh 4(2) Final 2.65%. The government client withholds PPh 4(2) before remitting payment.
| Termin | Milestone | % | DPP (Rp) | PPN 11% (Rp) | PPh 4(2) 2.65% (Rp) | Net Received (Rp) | Status |
|---|---|---|---|---|---|---|---|
| Termin I | Pondasi & struktur bawah (Jan) | 30% | 840.000.000 | 92.400.000 | 22.260.000 | 817.740.000 | PAID |
| Termin II | Struktur atas & dinding (Feb) | 35% | 980.000.000 | 107.800.000 | 25.970.000 | 954.030.000 | PENDING |
| Termin III | Finishing & serah terima (Mar) | 35% | 980.000.000 | 107.800.000 | 25.970.000 | 954.030.000 | PENDING |
| TOTAL CONTRACT | 2.800.000.000 | 308.000.000 | 74.200.000 | 2.725.800.000 | |||
PT Bangun Sulawesi has two workforce tiers: permanent staff (PPh 21 withheld monthly) and daily laborers (PPh 21 = 0 because daily wages are below the PTKP threshold). This is a common structure in Indonesian construction — and a common source of PPh 21 miscalculation.
| Name / Position | PTKP | Gross/mo (Rp) | BPJS TK 2% (Rp) | BPJS Kes 1% (Rp) | PPh 21/mo (Rp) | Net (Rp) |
|---|---|---|---|---|---|---|
| Ir. Slamet Riyadi / Project Director | K/2 | 23.000.000 | 460.000 | 230.000 | 2.031.250 | 20.278.750 |
| Hendra Kusuma / Site Manager | K/1 | 14.000.000 | 280.000 | 140.000 | 737.500 | 12.842.500 |
| Fitri Handayani / Project Admin | TK/0 | 5.750.000 | 115.000 | 57.500 | 48.125 | 5.529.375 |
| Budi Santoso / Mandor | K/1 | 10.000.000 | 200.000 | 100.000 | 212.500 | 9.487.500 |
| Ahmad Yani / Tukang Senior | K/0 | 6.300.000 | 126.000 | 63.000 | 55.500 | 6.055.500 |
| TOTAL PERMANENT EMPLOYEES | 59.050.000 | 1.181.000 | 590.500 | 3.084.875 | 54.193.625 | |
| Name / Position | Gross/mo (Rp) | PPh 21 (Rp) | Reason |
|---|---|---|---|
| Rizal Hidayat / Tukang | 5.600.000 | 41.000 | Annual gross Rp 67,2jt > PTKP TK/0 |
| Faisal Ibrahim / Tukang | 5.700.000 | 45.750 | Annual gross Rp 68,4jt > PTKP TK/0 |
| Yusuf Karim / Tukang | 5.500.000 | 36.250 | Annual gross Rp 66jt > PTKP TK/0 |
| Hasrul Bakri / Tukang | 5.600.000 | 22.250 | PTKP K/0 Rp 58,5jt — just above |
| Doni Pratama / Tukang ✓ | 4.700.000 | 0 | Annual gross Rp 56,4jt < PTKP TK/0 Rp 54jt — just below |
| Supriadi / Tukang | 5.100.000 | 17.250 | Annual gross Rp 61,2jt > PTKP TK/0 |
| Hamid Lako / Tukang ✓ | 5.000.000 | 0 | Annual gross Rp 60jt — assumed K/0, PTKP Rp 58,5jt |
| Wahyu Saputra / Tukang | 5.200.000 | 22.000 | Annual gross Rp 62,4jt > PTKP TK/0 |
| Amir Saad / Tukang ✓ | 4.400.000 | 0 | Annual gross Rp 52,8jt < PTKP TK/0 Rp 54jt |
| Casual Day Labourers (15 people) ✓ | 3.000.000 | 0 | Daily wage < Rp 450rb/day → PPh 21 = 0 |
| TOTAL TRADESMEN + DAY LABOURERS | 49.800.000 | 184.500 |
Prepared under PSAK — including PSAK 72 (revenue recognised over time, percentage-of-completion) and the presentation of contract assets and liabilities.
| Description | Amount (Rp) |
|---|---|
| Contract revenue (38.8% complete) | 1.085.262.000 |
| Contract cost | (724.800.000) |
| GROSS PROFIT | 360.462.000 |
| General & admin expense | (30.000.000) |
| OPERATING PROFIT | 330.462.000 |
| Memo: Final PPh 4(2) on billing | 22.260.000 |
| Item | Amount (Rp) |
|---|---|
| CURRENT ASSETS | |
| Cash & bank | 415.600.000 |
| Contract asset (unbilled) | 245.262.000 |
| TOTAL ASSETS | 660.862.000 |
| LIABILITIES | |
| Trade payables (materials) | 38.000.000 |
| Output VAT payable | 92.400.000 |
| Total liabilities | 130.400.000 |
| EQUITY | |
| Paid-in capital | 200.000.000 |
| Current-year profit | 330.462.000 |
| Total equity | 530.462.000 |
| TOTAL LIABILITIES & EQUITY | 660.862.000 |
A 20-room boarding house in Palu owned by Pak Haris — registered as PKP due to annual revenue above Rp 4.8B, yet rental income is VAT-exempt under PMK 70/2022. PPh 4(2) Final 10% applies and is self-assessed by Pak Haris directly. One employee (penjaga kos) earns well below PTKP. The simplest operations in this series — but the most counterintuitive tax treatment.
20 rooms across 3 tiers: AC Deluxe (Rp 1.2M), AC Standard (Rp 900K), Non-AC (Rp 650K). January occupancy: 17 of 20 rooms (85%). One room unpaid, one vacant. PPh 4(2) Final 10% is calculated on actual rental income received — Rp 15.45M this month.
| Room No. | Penghuni | Tipe | Tarif/bln (Rp) | Status | Payment Date | Paid (Rp) |
|---|---|---|---|---|---|---|
| K-01 | Andi Kurniawan | AC Deluxe | 1.200.000 | PAID | 02 Jan | 1.200.000 |
| K-02 | Siti Rahmawati | AC Deluxe | 1.200.000 | PAID | 03 Jan | 1.200.000 |
| K-03 | Budi Setiawan | AC Deluxe | 1.200.000 | PAID | 01 Jan | 1.200.000 |
| K-04 | Nurul Hidayah | AC Deluxe | 1.200.000 | PAID | 04 Jan | 1.200.000 |
| K-05 | Fajar Ramadan | AC Deluxe | 1.200.000 | LATE | 18 Jan (H+17) | 1.200.000 |
| K-06 | Rini Susanti | AC Standard | 900.000 | PAID | 02 Jan | 900.000 |
| K-07 | Hendra Wijaya | AC Standard | 900.000 | PAID | 05 Jan | 900.000 |
| K-08 | Dewi Lestari | AC Standard | 900.000 | PAID | 03 Jan | 900.000 |
| K-09 | Irwan Saputra | AC Standard | 900.000 | UNPAID | — | 0 |
| K-10 | Megawati | AC Standard | 900.000 | PAID | 06 Jan | 900.000 |
| K-11 | Rizky Pratama | Non-AC | 650.000 | PAID | 02 Jan | 650.000 |
| K-12 | Hamid Basri | Non-AC | 650.000 | PAID | 03 Jan | 650.000 |
| K-13 | Yuliana | Non-AC | 650.000 | PAID | 04 Jan | 650.000 |
| K-14 | Darmawan | Non-AC | 650.000 | PAID | 01 Jan | 650.000 |
| K-15 | — VACANT — | Non-AC | 650.000 | VACANT | — | 0 |
| K-16 | Ahmad Fauzi | Non-AC | 650.000 | PAID | 05 Jan | 650.000 |
| K-17 | Sri Wahyuni | Non-AC | 650.000 | PAID | 07 Jan | 650.000 |
| K-18 | Baharuddin | Non-AC | 650.000 | PAID | 02 Jan | 650.000 |
| K-19 | Linda Sari | Non-AC | 650.000 | LATE | 20 Jan (H+19) | 650.000 |
| K-20 | Supriyadi | Non-AC | 650.000 | PAID | 03 Jan | 650.000 |
| TOTAL | 17.000.000 | 15.450.000 | ||||
| Room Type | Unit | Tarif (Rp) | Occupied | Vacant | Potential Revenue (Rp) | Actual Revenue (Rp) | Occupancy |
|---|---|---|---|---|---|---|---|
| AC Deluxe | 5 | 1.200.000 | 5 | 0 | 6.000.000 | 6.000.000 | 100% |
| AC Standard | 5 | 900.000 | 4 | 1 | 4.500.000 | 3.600.000 | 80% |
| Non-AC | 10 | 650.000 | 8 | 2 | 6.500.000 | 5.200.000 | 80% |
| TOTAL | 20 | 17 | 3 | 17.000.000 | 14.800.000 | 85% |
Simple single-entry cash flow — rental income minus operating expenses minus PPh Final 10%. Note that PPh 4(2) is calculated on gross rental income received (Rp 15.45M), not on net profit. This is the defining characteristic of a Final Tax regime.
| Description | Notes | Amount (Rp) |
|---|---|---|
| RENTAL INCOME | ||
| Total rent received (18 rooms paid) | See Occupancy tab | 15.450.000 |
| OPERATING EXPENSES | ||
| Electricity & water (paid by owner) | 20 rooms | (3.200.000) |
| Caretaker salary (Pak Roslan) | 1 employee | (1.800.000) |
| Cleaning & routine maintenance | Monthly | (800.000) |
| Cicilan KPR — pokok + bunga | Bank BRI | (4.500.000) |
| Internet for the boarding house (shared WiFi) | IndiHome 50 Mbps | (500.000) |
| Repair reserve (2% of revenue) | Estimasi | (309.000) |
| TOTAL EXPENSES | (11.109.000) | |
| PROFIT BEFORE TAX | 4.341.000 | |
| PPh Final Art. 4(2) — 10% × gross rent | 10% × Rp 15.450.000 | (1.545.000) |
| NET PROFIT AFTER TAX | 2.796.000 | |
One employee: Pak Roslan, the boarding house caretaker, earning Rp 1.8M/month. Annualized gross of Rp 21.6M is far below the TK/0 PTKP of Rp 54M/year — PPh 21 = Rp 0. Pak Haris still needs to record Pak Roslan in his payroll records and report him in SPT Tahunan as a non-taxable employee.
| Name | Jabatan | PTKP | Salary/mo (Rp) | Bruto/thn (Rp) | PTKP (Rp) | PPh 21 (Rp) | Status |
|---|---|---|---|---|---|---|---|
| Pak Roslan ✓ | Caretaker | TK/0 | 1.800.000 | 21.600.000 | 54.000.000 | 0 | Gross < PTKP → exempt from PPh 21 |
Under Article 28 of the Indonesian General Tax Provisions Law (UU KUP), taxpayers are required to maintain accurate books in good faith, using Rupiah, closed annually with a Balance Sheet and Income Statement. Records must cover assets, liabilities, equity, revenue, expenses, sales, and purchases — and be retained for 10 years. Non-compliance carries serious consequences.
Start
Let's keep your books clean, your statements accurate, and your business finances in order. The first consultation is free, answered within 24 hours, directly by me.
Get in Touch →