Lewati ke konten utama

Pajak & Tunjangan

Tax & Benefits menentukan dua hal: berapa pajak penghasilan yang dipotong dari setiap Salary Slip (slip gaji), dan bagaimana fasilitas di luar gaji — jatah tunjangan tahunan, imbalan akhir masa kerja — dianggarkan, dikumpulkan, dan dibayarkan. Staf HR dan penggajian yang menjalankannya. Karyawan sendiri hanya menyentuh sebagian kecilnya, yaitu untuk mendeklarasikan pembebasan pajak yang hendak mereka klaim dan untuk membelanjakan jatah tunjangan mereka.

Bukalah dengan mengetik "Tax & Benefits" pada sidebar atau kolom pencarian. Namanya mengandung tanda ampersand, jadi jangan mencoba menebak alamat webnya. Setiap record punya alamat web biasa, yang dicantumkan di sepanjang halaman ini.

Yang mungkin Anda cari di halaman ini​

Yang harus Anda bangun sendiri​

Bacalah bagian ini sebelum Anda merencanakan pekerjaannya. GARP HR menyediakan mesin pajak penghasilan yang generik dan bekerja dengan lapisan tarif, atau slab. Produk ini tidak menyediakan PPh 21, PTKP, BPJS Kesehatan, maupun BPJS Ketenagakerjaan sebagai objek siap pakai.

  • Hanya dua negara yang memiliki aturan pajak bawaan: India dan Uni Emirat Arab.
  • Tambahan khusus negara — pembebasan house rent allowance, marginal tax relief — hanya berjalan untuk India.
  • Perhitungan marginal tax relief yang dipakai bersama hanyalah kerangka kosong. Ia sama sekali tidak mengembalikan nilai apa pun, dan catatannya sendiri menyebutkan bahwa ia ada semata-mata agar sebuah paket negara dapat menggantinya.
  • Tidak ada satu pun bagian produk ini yang menghitung angka yang diwajibkan peraturan Indonesia.

Yang benar-benar Anda peroleh, pada hari sebuah perusahaan dibuat atau pada hari field Country-nya diubah, adalah empat Salary Component:

  • Income Tax — bertipe Deduction, dengan Is Income Tax Component dicentang
  • Basic
  • Arrear
  • Leave Encashment

Selain itu, India memuat House Rent Allowance, Provident Fund, dan Professional Tax. Indonesia tidak punya berkas semacam itu, jadi hanya keempat komponen itulah yang Anda dapatkan. Tidak ada Income Tax Slab, tidak ada kategori pembebasan pajak, tidak ada Gratuity Rule, dan tidak ada komponen tunjangan fleksibel yang dibuatkan untuk Anda.

peringatan

Komponen Income Tax bawaan memiliki Is Income Tax Component dicentang, tetapi Variable Based On Taxable Salary tidak dicentang. Dalam keadaan itu ia tidak menghitung apa pun — ia hanya sebuah label, bukan mesin hitung. Centang Variable Based On Taxable Salary, biarkan Amount dan Formula kosong, lalu hilangkan centang Depends on Payment Days.

Bagi PT Maju Jaya, artinya:

  • PPh 21 dimodelkan sebagai sebuah Income Tax Slab yang memuat tarif Anda, ditambah Salary Component bertipe deduction dengan Variable Based On Taxable Salary dicentang.
  • PTKP dimodelkan sebagai Standard Tax Exemption Amount pada slab tersebut, atau sebagai Employee Tax Exemption Category yang dideklarasikan sendiri oleh karyawan.
  • Biaya jabatan tidak punya tempat khusus. Modelkan sebagai Salary Component bertipe deduction dengan Exempted from Income Tax dicentang, agar ia terpotong dari penghasilan kena pajak sebelum slab dijalankan.
  • Iuran BPJS adalah Salary Component biasa dengan sebuah Formula — earning untuk porsi pemberi kerja, deduction untuk porsi karyawan — yang ditulis oleh siapa pun yang mengonfigurasi penggajian Anda.
  • THR bisa berupa Additional Salary, yang dibahas di Penggajian, atau komponen akrual seperti diuraikan pada Mengakru tanpa membayar.

Tidak ada yang keliru dengan semua ini; hanya saja semuanya harus Anda kerjakan sendiri. Sediakan waktu bersama konsultan penggajian dan validasi siklus pertama secara manual.

Daftar periksa penyiapan​

Semua yang tercantum di bawah ini harus sudah ada sebelum pajak dan tunjangan berperilaku sebagaimana mestinya.

  • Sebuah Payroll Period yang mencakup tahun pajak, untuk setiap perusahaan. Periode tidak boleh saling tumpang tindih pada perusahaan yang sama.
  • Satu Income Tax Slab yang sudah disubmit dengan Company terisi, dan dirujuk dari setiap Salary Structure Assignment.
  • Sebuah Salary Component bertipe deduction dengan Variable Based On Taxable Salary dicentang, di dalam salary structure. Biarkan Amount dan Formula-nya kosong agar mesin hitung yang mengisinya, hilangkan centang Depends on Payment Days agar angka tahunannya tidak diprorata untuk kedua kalinya, centang Round to the Nearest Integer, dan centang Is Income Tax Component agar komponen itu sampai ke laporan.
  • Deduction yang seharusnya mengurangi penghasilan kena pajak — biaya jabatan, porsi BPJS karyawan — ditandai Exempted from Income Tax, dengan Allow Tax Exemption dicentang pada slab.
  • Kategori dan sub kategori pembebasan pajak, bila Anda memakai deklarasi.
  • Komponen tunjangan fleksibel dengan sebuah Payout Method dan Accrual Component yang berpasangan benar, ditambah tabel Flexible Benefits dan Maximum Benefit Amount pada setiap assignment, bila Anda menyediakan tunjangan.
  • Opening Balances pada assignment bagi siapa pun yang bergabung di tengah periode dari pemberi kerja lain.
  • Sebuah Gratuity Rule, dan izin Submit pada Gratuity, hanya bila Anda membayarkan imbalan akhir masa kerja.

Ketersediaan modul mengikuti paket langganan Anda — lihat Paket dan batasan.

Menyusun income tax slab​

  1. Di /app/income-tax-slab, buat sebuah record lalu ketik namanya — tidak ada penomoran otomatis. Isi Effective from dengan hari pertama periode penggajian, ditambah Company dan Currency (IDR).
  2. Tambahkan baris Taxable Salary Slabs berurutan menaik: From Amount, To Amount, Percent Deduction. Kosongkan To Amount pada baris terakhir agar lapisan teratas terbuka tanpa batas.
  3. Centang Allow Tax Exemption bila karyawan akan mengajukan deklarasi, atau bila ada komponen deduction yang ditandai Exempted from Income Tax — satu tanda ini mengatur keduanya sekaligus. Isi Standard Tax Exemption Amount untuk pengurang tetap yang diterima semua orang tanpa perlu dokumen.
  4. Gunakan Condition pada sebuah baris hanya bila lapisan itu berlaku untuk sebagian orang saja. Isinya rumus kecil, dan rumus itu dapat membaca setiap field Employee, base dan variable dari assignment, field milik slip itu sendiri, setiap singkatan Salary Component (masing-masing dimulai dari nol), serta annual_taxable_earning — misalnya gender == "Female" atau base > 20000000. Ekspresi yang keliru akan menghentikan proses penggajian, dan Anda akan melihat Name error atau pesan "Syntax error in condition: … in Income Tax Slab".
  5. Simpan lalu Submit, kemudian isi field Income Tax Slab pada setiap Salary Structure Assignment. Slip yang punya komponen pajak tetapi tanpa slab akan berhenti dengan Missing Tax Slab: "Income Tax Slab not set in Salary Structure Assignment".

Rincian apa yang dilakukan setiap pengaturan pada slab, field demi field, ada di Referensi field Income Tax Slab.

peringatan

Slab harus berlaku efektif pada atau sebelum tanggal mulai periode penggajian, dan tidak boleh berstatus Disabled. Keduanya memunculkan error keras di tengah proses, bukan sekadar peringatan. Perhatikan apa yang tidak diperiksa: apakah slab itu sudah dibatalkan. Slab yang dibatalkan tetap menghitung pajak seperti biasa. Untuk memensiunkan sebuah slab, centang Disabled — yang tetap bisa diubah setelah disubmit — jangan membatalkannya.

catatan

Ketika salary structure tidak memiliki komponen pajak, slip yang baru akan menariknya langsung dari master Salary Component — mencocokkan perusahaan yang disebut pada baris Accounts komponen tersebut, lalu jatuh kembali ke komponen tanpa perusahaan — dan menampilkan pesan "Added tax components from the Salary Component master as the salary structure didn't have any tax component." Centang Variable Based On Taxable Salary pada komponen Income Tax bawaan dan biarkan accounts-nya kosong, maka komponen itu akan menempel sendiri pada setiap slip baru di semua perusahaan.

Karyawan yang bergabung di tengah tahun​

Bila seorang karyawan bergabung di tengah periode dari pemberi kerja lain, isi Taxable Earnings Till Date dan Tax Deducted Till Date pada bagian Opening Balances di Salary Structure Assignment miliknya.

Kedua field itu hanya dibaca bila From Date pada assignment jatuh pada atau setelah tanggal mulai periode penggajian. Bila Anda biarkan kosong, akan muncul pesan oranye Missing Opening Entries, tetapi bukan error.

Mengumpulkan deklarasi dan bukti pembebasan pajak​

  1. Di /app/employee-tax-exemption-category, buat kategorinya beserta plafon masing-masing, lalu buat sub kategori di bawahnya. Sub kategori mewarisi Max Exemption Amount dari kategorinya bila dibiarkan kosong. Hanya baris dengan Is Active yang muncul di daftar pilihan.
  2. Karyawan — role Employee dapat membuat sekaligus men-submit dokumen ini — membuka /app/employee-tax-exemption-declaration, memilih Payroll Period, lalu menambahkan satu baris per sub kategori dengan Declared Amount. Daftar Employee disaring hanya untuk yang berstatus Active; daftar Payroll Period disaring sesuai perusahaan karyawan tersebut.
  3. Submit. Tombol Submit Proof akan muncul pada deklarasi yang sudah disubmit, dan membawa serta baris-barisnya.
  4. Pada Employee Tax Exemption Proof Submission, isi Actual Amount, Type of Proof, dan Attach Proof di setiap baris, lalu submit. Dari proof submission yang masih kosong, Anda juga bisa menarik barisnya dengan Get Details From Declaration.

Bagaimana nominalnya dibatasi​

Kedua dokumen membatasi nominal dengan cara yang sama, dalam dua tahap:

  1. Setiap baris dibatasi oleh plafon sub kategorinya — diberi label Maximum Exempted Amount pada deklarasi dan Maximum Exemption Amount pada proof submission.
  2. Total berjalan setiap kategori kemudian dibatasi oleh Max Exemption Amount milik kategori itu sendiri.

Angka yang dideklarasikan tetap terlihat pada barisnya. Total Exemption Amount adalah angka yang sudah dibatasi.

Bila dokumen menolak disimpan​

PesanPenyebab
"Transactions cannot be created for an Inactive Employee …"Status karyawan adalah Inactive. Suspended dan Left tidak diblokir
"More than one selection for … not allowed"Sub kategori yang sama muncul pada dua baris
"Employee Tax Exemption Declaration already exists for employee … and period …"Sudah ada record lain untuk karyawan dan periode tersebut, termasuk draf yang telantar

Kedua formulir mengambil Currency dari salary structure assignment karyawan begitu Anda memilih karyawannya. Karena itu, karyawan yang sama sekali tidak punya Salary Structure Assignment tidak dapat mengajukan satu pun dari kedua dokumen tersebut, dan Anda akan melihat pesan "There is no Salary Structure assigned to …. First assign a Salary Structure." Assignment yang masih berupa draf pun sudah cukup untuk memenuhi pencarian ini — ia tidak harus disubmit. Pengambilan yang sama juga berjalan pada Employee Benefit Claim.

Type of Proof adalah field teks bebas yang wajib diisi pada setiap baris bukti. Tidak ada daftar pilihan yang bisa dikonfigurasi, jadi sepakati konvensinya sebelum peluncuran. Field Attachments pada dokumen induk disembunyikan pada formulir baru, digantikan oleh Attach Proof di tiap baris.

Mencatat penghasilan dari sumber lain​

Di /app/employee-other-income, isi Employee, Payroll Period, Company, Source yang opsional, serta Amount, lalu submit.

Setiap record yang sudah disubmit untuk karyawan, periode, dan perusahaan tersebut dijumlahkan ke dalam penghasilan kena pajak setahun pada slip-slip berikutnya. Tidak ada plafon dan tidak ada kategori.

Izin pada record ini diberikan kepada HR Manager, HR User, dan Employee — tetapi tidak kepada System Manager, sehingga pengguna yang hanya ber-role System Manager tidak melihat apa pun di alamat web tersebut.

Memberi karyawan anggaran tunjangan fleksibel​

  1. Di /app/salary-component, buat komponen earning lalu centang Is Flexible Benefit. Isi Max Benefit Amount (Yearly) dan sebuah Payout Method, kemudian setel Accrual Component agar sesuai dengan metode tersebut.
  2. Pada setiap Salary Structure Assignment, isi tabel Flexible Benefits dengan komponen-komponen tadi dan tetapkan Maximum Benefit Amount — pagu tahunan karyawan yang bersangkutan.
  3. Karyawan membuka /app/employee-benefit-application lalu memilih Payroll Period dan sebuah Date. Komponennya dimuat dari Salary Structure Assignment yang berlaku pada Date tersebut, dan dimuat ulang setiap kali Employee atau Date diubah. Hanya satu pengajuan yang disubmit per karyawan per periode penggajian. Nominal tiap baris tidak boleh melebihi maksimum per baris, dan totalnya tidak boleh melebihi pagu.
  4. Di Payroll Settings (/app/payroll-settings), Mandatory Benefit Application menentukan apa yang terjadi bila tidak ada yang mengajukan: bila aktif, tunjangan diabaikan tanpa adanya pengajuan; bila nonaktif — dan ini bawaannya — slip kembali memakai nominal yang tercantum pada Salary Structure Assignment.

Memilih payout method​

Ketiga payout method berperilaku cukup berbeda sehingga layak ditabelkan.

Payout MethodAccrual ComponentMengakru ke ledgerSampai ke slip gajiMuncul di daftar pilihan klaim
Accrue and payout at end of payroll periodHarus dicentangSetiap siklusSebagai earning pada siklus terakhir, sebesar saldo akrual dikurangi apa pun yang sudah dibayarkan pada komponen ituTidak
Accrue per cycle, pay only on claimHarus dicentangSetiap siklusHanya lewat Employee Benefit Claim, ditambah saldo yang belum diklaim pada siklus terakhir bila Payout Unclaimed Amount in Final Payroll Cycle dicentangYa
Allow claim for full benefit amountHarus nonaktifTidak pernahHanya lewat Employee Benefit ClaimYa
KosongHarus nonaktifTidak pernahTidak pernahTidak

Komponen menolak disimpan bila pasangannya salah. Anda akan melihat "Accrual Component must be set for Flexible Benefit Salary Components with accrual payout methods.", atau sebaliknya, "Accrual Component can only be set for Flexible Benefit Salary Components with accrual payout methods."

Setiap salary slip yang disubmit menuliskan baris Accrual atau Payout ke Employee Benefit Ledger, dan menampilkan akrualnya pada tabel read-only Accrued Benefits di slip tersebut. Membatalkan atau menghapus slip akan menghapus baris ledger miliknya.

peringatan

Nilai Max Benefit Amount per baris pada sebuah benefit application berasal dari baris Salary Structure Assignment, bukan dari Max Benefit Amount (Yearly) milik komponen. Plafon komponen hanya ditegakkan saat assignment disimpan. Ubah plafon komponen di kemudian hari, dan assignment yang sudah ada tetap memakai angka lama.

Mengakru tanpa membayar​

Salary Component dengan Accrual Component dicentang dan Is Flexible Benefit nonaktif, yang ditempatkan pada tabel Earnings di salary structure, dihitung setiap siklus tetapi tidak dimunculkan pada slip gaji.

  • Nominalnya masuk ke tabel read-only Accrued Benefits.
  • Ia menuliskan baris Accrual ke ledger dengan keterangan "Accrual Component assigned via salary structure".
  • Nominal itu tidak termasuk gross pay, jadi tidak dikenai pajak dan tidak dibayarkan.
  • Untuk mencairkannya, buat Additional Salary pada komponen yang sama. Slip akan menuliskan baris Payout dengan keterangan "Accrual Component payout via Additional Salary", dan tidak memprorata baris itu menurut hari pembayaran karena uangnya menutup siklus-siklus sebelumnya.

Itulah yang paling mendekati akrual THR di produk ini, dan Anda membangunnya sendiri: tidak ada penetapan waktu gaji bulan ke-13, aturan pro rata, maupun tenggat pembayaran yang tertanam di mana pun.

Membayarkan klaim tunjangan​

  1. Buka /app/employee-benefit-claim, pilih karyawannya, komponen pada Claim Benefit For, dan sebuah Payroll Date. Di daftar pilihan hanya muncul komponen pada benefit application atau assignment karyawan tersebut yang Payout Method-nya termasuk salah satu dari dua metode yang dapat diklaim.
  2. Yearly Amount diambil dari benefit application karyawan untuk periode tersebut — atau, bila tidak ada pengajuan, dari Salary Structure Assignment miliknya. Max Amount Eligible For Claim dihitung dari Employee Benefit Ledger: untuk Accrue per cycle, akrual (termasuk pratinjau akrual siklus berjalan) dikurangi yang sudah dibayarkan; untuk Allow claim for full benefit amount, jumlah tahunan dikurangi yang sudah dibayarkan.
  3. Isi Claimed Amount, lampirkan buktinya, lalu submit. Submit akan membuat sekaligus men-submit sebuah Additional Salary dengan Overwrite Salary Structure Amount nonaktif, yang masuk ke slip berikutnya dan dikenai pajak kecuali komponennya tidak mencentang Is Tax Applicable.

Ada dua aturan yang akan menghentikan Anda:

  • Payroll Date tidak boleh berada di masa lalu. Anda akan melihat "Payroll date cannot be in the past. This is to ensure that claims are made for the current or future payroll cycles."
  • Hanya satu klaim per komponen per bulan kalender yang diizinkan, dengan error Duplicate Claim Detected.

Kedua aturan itu ada karena baris ledger baru ditulis saat sebuah slip disubmit, sehingga klaim kedua dalam siklus yang sama berpotensi menimbulkan kelebihan bayar.

Contoh perhitungan: Tunjangan Kesehatan milik Sari Dewi​

Komponen Tunjangan Kesehatan: Earning, Is Flexible Benefit dicentang, Payout Method Accrue per cycle, pay only on claim, Accrual Component dicentang, Max Benefit Amount (Yearly) 12.000.000. Assignment Sari memberinya Maximum Benefit Amount 15.000.000 dengan baris Tunjangan Kesehatan 12.000.000; benefit application-nya memilih 9.000.000.

monthly accrual 9,000,000 ÷ 12 cycles = 750,000
Jan, Feb, Mar Accrual 750,000 each → ledger accrued 2,250,000, paid 0
April claim Max Amount Eligible = 2,250,000 accrued + 750,000 previewed
= 3,000,000

Bila ia mengklaim seluruh 3.000.000, slip April membayarkannya sebagai earning dan menuliskan baris Payout sebesar 3.000.000. Namun ketika slip yang sama menghitung akrual April, jumlah yang sudah dibayarkan (3.000.000) melampaui akrual (2.250.000) sebesar 750.000, sehingga selisih itu dikurangkan dari akrual April yang 750.000, hasilnya nol, dan tidak ada baris Accrual yang ditulis. Ledger pun selamanya kurang 750.000, dan pengurangan yang sama berulang pada setiap siklus tersisa — akrual berhenti, dan pembayaran sisa yang belum diklaim pada Desember menjadi nol.

peringatan

Klaimlah hanya sebesar yang sudah tercatat di ledger. Max Amount Eligible For Claim memasukkan akrual siklus berjalan yang sebenarnya belum ditulis; mengklaim seluruhnya akan memacetkan akrual untuk sisa periode penggajian. Periksa baris Accrual di /app/employee-benefit-ledger dan klaim paling banyak sebesar total itu.

Mencatat pembayaran gratuity​

  1. Di /app/gratuity-rule, buat sebuah rule lalu ketik namanya. Pilih Calculate Gratuity Amount Based On (Current Slab atau Sum of all previous slabs), pilih baris Applicable Earnings Component, isi Total working Days Per Year (bawaan 365) dan Minimum Year for Gratuity, lalu tambahkan slab dengan From(Year), To(Year), dan Fraction of Applicable Earnings. From(Year) bersifat read-only dan terisi sendiri dari To(Year) baris sebelumnya; To(Year) bernilai 0 berarti terbuka tanpa batas.
  2. Isi Relieving Date karyawan tersebut. Gratuity tidak dapat dihitung tanpa tanggal itu, dan Anda akan melihat "Please set Relieving Date for employee: …".
  3. Buka /app/gratuity lalu pilih karyawan dan rule-nya. Masa kerja adalah jumlah hari kalender antara tanggal bergabung dan tanggal berhenti, dikurangi hari tidak bekerja, dibagi Total working Days Per Year, lalu disesuaikan menurut Work Experience Calculation Method — Round off Work Experience (bawaan), Take Exact Completed Years, atau Manual untuk mengetik sendiri angkanya. Nominalnya memakai komponen yang berlaku dari salary slip terakhir yang disubmit milik karyawan tersebut, diambil pada nominal bawaannya tanpa diprorata.
  4. Centang Pay via Salary Slip dengan Salary Component dan Payroll Date, yang akan membuat sebuah Additional Salary; atau biarkan tidak dicentang, isi Expense Account dan Payable Account, submit untuk membukukan jurnalnya, lalu gunakan Create Payment Entry.

Ada dua detail penghitungan hari yang penting.

  • "Hari tidak bekerja" adalah record Attendance, bukan leave application. Dengan Calculate Payroll Working Days Based On di Payroll Settings disetel ke Leave, yang dihitung adalah baris Attendance berstatus On Leave yang jenis cutinya mencentang Is Leave Without Pay; disetel ke Attendance, yang dihitung adalah baris berstatus Absent. Jadi cuti tanpa bayar yang tidak pernah menghasilkan record Attendance tidak mengurangi angkanya.
  • Round off Work Experience membulatkan angka ,5 ke bilangan genap terdekat: 4,5 menjadi 4, sedangkan 5,5 menjadi 6.
peringatan

Gratuity dan Gratuity Rule hanya memberikan izin kepada HR Manager dan HR User, dan izin itu mencakup create, read, write, serta delete, tetapi bukan submit, cancel, atau amend. Gratuity adalah dokumen yang harus disubmit, jadi secara bawaan tidak ada satu role pun yang dapat men-submit-nya. Tambahkan Submit, Cancel, dan Amend untuk HR Manager di Role Permissions Manager sebelum Anda mengandalkan gratuity.

Contoh perhitungan: Budi Santoso​

Budi bergabung 1 Sep 2018 dan berhenti 31 Agu 2026 — 2.921 hari kalender, dikurangi 5 hari cuti tanpa bayar yang tercatat di Attendance, jadi 2.916. Dibagi 365 hasilnya 7,99 tahun. Round off Work Experience menghasilkan 8; Take Exact Completed Years menghasilkan 7,989, yang gagal memenuhi Minimum Year for Gratuity sebesar 8 dengan pesan "Employee: … have to complete minimum 8 years for gratuity". Slip terakhirnya memuat Gaji Pokok 15.000.000 dan Tunjangan Jabatan 3.000.000, jadi total applicable earnings adalah 18.000.000.

Pada Current Slab, perhitungannya adalah applicable earnings × total years × fraction — pecahannya dikalikan dengan seluruh tahun masa kerja, bukan dengan tahun yang berada di dalam slab. Untuk menyatakan upah sembilan bulan secara datar pada masa kerja delapan tahun, Anda perlu pecahan 9 ÷ 8 = 1,125, yang kemudian menghasilkan 18.000.000 × 8 × 1,125 = 162.000.000. Begitu jumlah tahunnya berubah, pecahan itu salah.

peringatan

Current Slab tidak dapat menyatakan hak yang datar seperti "upah sembilan bulan pada masa kerja delapan tahun atau lebih" hanya dengan satu baris, karena pecahannya dikalikan dengan lama masa kerja. Tambahkan satu slab per tahun dengan pecahan sebesar jumlah bulan dibagi jumlah tahun, atau beralihlah ke Sum of all previous slabs, yang mengakru per tahun dan cocok untuk tabel bertingkat bergaya UPMK.

Pada Sum of all previous slabs, sebuah rule 0 sampai 3 dengan 0,0, 3 sampai 6 dengan 0,5, 6 sampai 9 dengan 1,0, dan 9 ke atas dengan 1,5 memberi Rina Halim — 7 tahun masa kerja dengan applicable earnings 10.000.000 — hasil: (3 − 0) × 10.000.000 × 0 = 0, ditambah (6 − 3) × 10.000.000 × 0,5 = 15.000.000, ditambah 1 tahun sisanya pada lapisan 6-sampai-9 sebesar 1 × 10.000.000 × 1,0 = 10.000.000 — totalnya 25.000.000. Perhatikan bahwa slab pertama yang pecahannya nol tetap memakan tiga tahun.

Tidak ada satu pun bagian di sini yang sudah disiapkan untuk Indonesia — satu-satunya rule bawaan adalah satu untuk India dan tiga untuk Uni Emirat Arab. Bila Anda memakai gratuity untuk memodelkan pesangon atau UPMK, susun sendiri slab-nya dan mintalah pihak yang kompeten memeriksanya. Gratuity adalah salah satu kewajiban yang ditarik oleh Full and Final Statement — lihat Siklus hidup karyawan.

Laporan​

Dua laporan berada di kartu Reports pada workspace, atau buka dengan Cmd/Ctrl + K lalu ketik nama laporannya. Laporan ketiga, Accrued Earnings Report, tidak ada di kartu tersebut tetapi muncul di bawah Reports pada sidebar Tax & Benefits.

Income Tax Computation​

Laporan ini memproyeksikan posisi setahun penuh setiap karyawan. Filternya: Company dan Payroll Period (keduanya wajib), Employee, Department, Employee Status (bawaan Active), dan Consider Tax Exemption Declaration (nonaktif).

Laporan ini hanya memuat karyawan yang punya Salary Structure Assignment yang sudah disubmit dan memuat baik salary structure maupun income tax slab yang tidak disabled, memakai assignment terbaru menurut From Date. Bila tidak ada, laporan berhenti dengan "No employees found with selected filters and active salary structure".

Kolomnya dibangun sambil berjalan: Other Income, lalu satu kolom per komponen earning yang tidak kena pajak, satu per komponen deduction yang dibebaskan dari pajak, satu per kategori pembebasan yang aktif, kemudian Standard Tax Exemption, Total Exemption, Total Taxable Amount, Income Tax (Slab Based), Other Taxes and Charges, Total Applicable Tax, Total Tax Deducted, dan Payable Tax.

Ada tiga hal yang perlu Anda antisipasi:

  • Laporan ini membangun salary slip pratinjau untuk setiap siklus yang tersisa bagi setiap karyawan, jadi ia lambat pada jumlah karyawan yang besar, dan ia diam-diam berhenti memproyeksikan siapa pun yang pratinjaunya memunculkan error.
  • Laporan hanya menghitung Proof Submission yang sudah disubmit, kecuali Consider Tax Exemption Declaration dicentang.
  • Karena standard exemption dicari berdasarkan perusahaan, slab dengan Company kosong akan menampilkan Standard Tax Exemption nol di sini, meskipun slip tetap menerapkannya.

Income Tax Deductions​

Laporan ini menampilkan potongan yang benar-benar terjadi per bulan. Filternya: Company, Month, dan Year (semuanya wajib), Department, dan Branch.

Laporan hanya mengambil baris dari Salary Component yang mencentang Is Income Tax Component — bukan Variable Based On Taxable Salary. Komponen PPh 21 yang hanya mencentang yang terakhir akan menghasilkan laporan kosong. Kolom PAN Number hanya muncul untuk perusahaan India.

Yang tidak tersedia​

Workspace Payroll juga menautkan Provident Fund Deductions dan Professional Tax Deductions. Keduanya membaca field Component Type yang baru ada setelah negara sebuah perusahaan disetel ke India, jadi pada site Indonesia tidak ada yang bisa dilaporkan keduanya. Tidak ada keluaran wajib versi Indonesia — tidak ada file BPJS, tidak ada 1721-A1 — yang disertakan dalam produk. Lihat Pengaturan dan laporan.

Rincian, batasan, dan kasus khusus​

Anda boleh berhenti di sini, kecuali ada angka yang terlihat keliru atau Anda sedang memutuskan cara memodelkan sesuatu. Semua yang ada di bawah ini bersifat referensi.

Record di area ini​

  • Income Tax Slab (/app/income-tax-slab) — Anda simpan, lalu Anda submit. Namanya Anda ketik sendiri saat dibuat; tidak ada penomoran otomatis. Memuat Effective from, Company, Currency, Allow Tax Exemption, Standard Tax Exemption Amount, Taxable Income Relief Threshold Limit, Disabled, dan tabel Taxable Salary Slabs.
  • Taxable Salary Slab — satu baris pada tabel di dalam formulir tersebut: From Amount, To Amount, Percent Deduction, serta Condition yang opsional.
  • Income Tax Slab Other Charges — jenis baris lain di dalam formulir yang sama, yang menambahkan pungutan Percent atas pajak yang sudah dihitung, secara opsional dibatasi oleh Min Taxable Income dan Max Taxable Income.
  • Employee Tax Exemption Category (/app/employee-tax-exemption-category) dan Sub Category (/app/employee-tax-exemption-sub-category) — katalog hal-hal yang boleh diklaim, masing-masing dengan Max Exemption Amount dan Is Active. Nama keduanya Anda ketik sendiri saat dibuat.
  • Employee Tax Exemption Declaration (/app/employee-tax-exemption-declaration) — disimpan, lalu disubmit; bernomor HR-TAX-DEC-.YYYY.-.#####. Berisi apa yang dinyatakan akan diklaim karyawan pada periode penggajian ini.
  • Employee Tax Exemption Proof Submission (/app/employee-tax-exemption-proof-submission) — disimpan, lalu disubmit; bernomor HR-TAX-PRF-.YYYY.-.#####. Berisi apa yang benar-benar dapat mereka buktikan dengan dokumen, lengkap dengan Type of Proof dan Attach Proof di tiap baris.
  • Employee Other Income (/app/employee-other-income) — disimpan, lalu disubmit; bernomor HR-INCOME-.######. Penghasilan dari luar penggajian yang tetap diperhitungkan dalam total penghasilan kena pajak setahun.
  • Employee Benefit Application (/app/employee-benefit-application) — disimpan, lalu disubmit; bernomor HR-BEN-APP-.YY.-.MM.-.#####. Cara karyawan membagi anggaran tunjangan fleksibel tahunannya ke beberapa komponen.
  • Employee Benefit Claim (/app/employee-benefit-claim) — disimpan, lalu disubmit; bernomor HR-BEN-CLM-.YY.-.MM.-.#####. Permintaan agar sebagian anggaran itu dibayarkan sekarang.
  • Employee Benefit Ledger (/app/employee-benefit-ledger) — read-only untuk semua role. Satu baris untuk setiap Accrual atau Payout, ditulis ketika sebuah salary slip disubmit.
  • Gratuity (/app/gratuity, HR-GRA-PAY-.#####), Gratuity Rule (/app/gratuity-rule), dan Gratuity Rule Slab — imbalan akhir masa kerja yang dihitung dari lama masa kerja.
catatan

Gratuity, Gratuity Rule, Employee Other Income, dan Employee Benefit Ledger tidak memiliki tautan di workspace maupun sidebar mana pun. Aksesnya lewat kolom pencarian atau alamat web di atas.

Bagaimana pajak penghasilan sampai ke salary slip​

Income Tax Slab ──▶ Salary Structure Assignment (Income Tax Slab field)
│
Exemption Declaration ────┐ │
or Proof Submission ├──────▶│
Employee Other Income ────┘ ▼
Salary Slip ──▶ deduction component with
"Variable Based On Taxable Salary"

Slip menghitung setahun penuh lebih dulu, baru kemudian membaginya. Berurutan, slip:

  1. menjumlahkan penghasilan kena pajak dari slip-slip sebelumnya dalam periode itu, ditambah Taxable Earnings Till Date dari assignment;
  2. menghitung siklus berjalan dua kali — sekali dengan hari kerja penuh, sekali dengan hari pembayaran aktual — lalu memproyeksikan angka hari-penuh itu ke seluruh siklus yang masih akan datang;
  3. menambahkan Employee Other Income untuk karyawan, periode, dan perusahaan yang sama;
  4. mengurangi deduction yang ditandai Exempted from Income Tax, total pembebasan, dan Standard Tax Exemption Amount;
  5. menjalankan hasilnya melalui slab;
  6. menerapkan Other Taxes and Charges;
  7. mengurangi pajak yang sudah dipotong pada periode ini;
  8. membagi sisanya dengan jumlah siklus yang tersisa.

Jumlah siklus yang tersisa adalah hitungan bulan penuh dari tanggal mulai slip ini sampai akhir payroll period — atau sampai Relieving Date karyawan bila tanggal itu lebih awal. Untuk karyawan yang berhenti di tengah periode, pajak setahun jatuh dalam cicilan yang lebih sedikit dan lebih besar.

Apa yang ditampilkan tab Income Tax Breakup​

Tab Income Tax Breakup menampilkan setiap angka antara. Tab ini baru muncul setelah CTC bernilai tidak nol.

FieldIsinya
CTCPenghasilan kena pajak sebelum pembebasan untuk seluruh periode, ditambah penghasilan yang tidak kena pajak
Income from Other SourcesJumlah Employee Other Income yang sudah disubmit
Non Taxable EarningsPenghasilan yang komponennya tidak mencentang Is Tax Applicable, baik yang lalu, yang berjalan, maupun yang diproyeksikan
Deductions before tax calculationDeduction yang ditandai Exempted from Income Tax, baik yang lalu, yang berjalan, maupun yang diproyeksikan
Tax Exemption DeclarationTotal pembebasan dikurangi standard amount
Standard Tax Exemption AmountPengurang tetap dari slab
Annual Taxable AmountTotal penghasilan dikurangi empat baris di atas
Income Tax Deducted Till DatePajak pada slip-slip sebelumnya ditambah slip ini
Future Income TaxYang masih akan datang pada periode ini
Current Month Income TaxAngka yang ditulis ke baris deduction
Total Income TaxYang sudah dipotong sampai kini ditambah yang akan datang

Aritmetika slab​

Untuk setiap baris, secara menaik, GARP menambahkan (amount in band + 1) × Percent Deduction ÷ 100. Angka + 1 memang disengaja dan bukan efek pembulatan: lapisan 0 sampai 60.000.000 pada 5% menghasilkan 3.000.000,05, bukan 3.000.000. Centang Round to the Nearest Integer pada komponen pajak, maka sen yang menggantung itu hilang dari slip gaji.

Baris dengan To Amount kosong diperlakukan terbuka tanpa batas dan menangkap seluruh nilai di atas From Amount. Baris yang Condition-nya bernilai salah dilewati sepenuhnya.

Ada tiga perilaku yang mudah terlewat:

  • Bila penghasilan kena pajak setahun tidak melampaui Taxable Income Relief Threshold Limit, pajaknya nol dan tidak ada slab yang diterapkan. Bila dibiarkan kosong, batas ini bernilai nol, sehingga berapa pun penghasilan positif akan dikenai pajak. Ini ambang mutlak, bukan pengurang — lewati satu rupiah saja dan seluruh jumlahnya dikenai pajak.
  • Other Taxes and Charges adalah persentase dari pajak, bukan dari penghasilan. Gunakan untuk pungutan di atas pajak, bukan untuk lapisan tarif kedua. Pungutan ini baru tersentuh ketika penghasilan melewati batas relief.
  • Pada siklus terakhir periode penggajian, slip berhenti mempercayai deklarasi dan beralih memakai Proof Submission yang sudah disubmit. Karyawan yang mendeklarasikan tetapi tidak pernah membuktikan akan ditarik kekurangannya di slip gaji terakhir. Ini memang disengaja: kotak centang Deduct Tax For Unsubmitted Tax Exemption Proof pada slip tercentang otomatis begitu tanggal akhir slip mencapai akhir periode, dan Anda dapat mencentangnya lebih awal secara manual.

Contoh perhitungan: PPh 21 bulanan untuk Sari Dewi​

PT Maju Jaya, payroll period 1 Jan 2026 sampai 31 Des 2026, bulanan. Slab PPh 21 2026: 0 sampai 60.000.000 pada 5%, 60.000.000 sampai 250.000.000 pada 15%, 250.000.000 sampai 500.000.000 pada 25%, lalu lapisan-lapisan yang lebih tinggi. Standard Tax Exemption Amount 54.000.000. Sari menerima Gaji Pokok 12.000.000 dan Tunjangan Makan 750.000 per bulan, keduanya kena pajak, dan tidak mengajukan dokumen apa pun.

Slip Januari. Siklus tersisa = 12.

current cycle taxable 12,750,000
projected (12 − 1 cycles) 140,250,000
standard exemption −54,000,000
annual taxable amount 99,000,000

band 1 (60,000,000 − 0 + 1) × 5% 3,000,000.05
band 2 (99,000,000 − 60,000,000 + 1) × 15% 5,850,000.15
total structured tax 8,850,000.20
÷ 12 remaining cycles 737,500.02

Seorang praktisi Indonesia akan lebih dulu mengambil biaya jabatan — 5% dari bruto dengan plafon 500.000 per bulan, jadi 6.000.000 untuk setahun — sebelum PTKP. Jawaban mereka adalah 662.500 per bulan. Produk ini menghasilkan 737.500 sampai Anda memodelkan biaya jabatan sendiri. Tambahkan komponen deduction "Biaya Jabatan" dengan Exempted from Income Tax dicentang, centang Allow Tax Exemption pada slab, maka annual taxable amount turun menjadi 93.000.000 dan pajak bulanannya menjadi 662.500,02 — sama dengan hitungan praktisi.

peringatan

Field Formula pada Salary Component tidak menyediakan min() dan max(). Tulis plafon biaya jabatan sebagai ekspresi kondisional: 500000 if (GP + TMK) * 0.05 > 500000 else (GP + TMK) * 0.05.

Referensi field Income Tax Slab​

FieldEfek bila diisiEfek bila kosong atau nonaktif
Effective fromHarus jatuh pada atau sebelum tanggal mulai periode penggajianWajib; tidak boleh dikosongkan
CompanyMenimpa Currency dengan mata uang bawaan perusahaan saat disimpanCurrency tetap seperti yang diketik, dan Income Tax Computation melaporkan Standard Tax Exemption nol untuk slab ini
CurrencyHarus sama dengan mata uang gaji karyawan pada assignmentWajib; tidak boleh dikosongkan
DisabledSetiap slip yang memakainya berhenti dengan "Income Tax Slab: … is disabled". Dapat diubah setelah submitSlab aktif
Allow Tax ExemptionDeklarasi, bukti, dan deduction Exempted from Income Tax sama-sama mengurangi penghasilan kena pajakHanya standard exemption yang berlaku
Standard Tax Exemption AmountDikurangkan dari penghasilan kena pajak setahunTidak ada pengurang tetap
Taxable Income Relief Threshold LimitPenghasilan yang sama dengan atau di bawahnya tidak dikenai pajakDianggap nol

Apa yang terjadi saat submit​

DokumenSaat Anda submitSaat Anda batalkan
Income Tax SlabTidak ada efek di luar dirinya sendiri; slab menjadi dapat dipilih pada assignmentTidak ada. Slip tetap memakainya — yang diperiksa hanya Disabled dan Effective from
Employee Tax Exemption DeclarationTombol Submit Proof muncul; slip-slip berikutnya dalam periode itu mengurangi Total Exemption AmountSlip-slip berikutnya berhenti menguranginya
Employee Tax Exemption Proof SubmissionMulai siklus terakhir periode, slip membaca dokumen ini menggantikan deklarasiKembali memakai deklarasi, atau tidak memakai apa pun
Employee Other IncomeAmount ditambahkan ke penghasilan kena pajak setahun pada slip-slip berikutnya di periode dan perusahaan tersebutDikeluarkan dari totalnya
Employee Benefit ApplicationMenjadi sumber nominal tunjangan bagi karyawan dan periode tersebut, menggantikan assignmentAssignment kembali menjadi sumbernya, kecuali Mandatory Benefit Application aktif
Employee Benefit ClaimMembuat sekaligus men-submit sebuah Additional Salary: komponen, nominal, dan payroll date yang sama, overwrite nonaktif, merujuk ke klaim tersebutGARP tidak melakukan apa pun lagi — Additional Salary yang dibuatnya tidak ikut dibatalkan
Gratuity, Pay via Salary Slip aktifMembuat dan men-submit Additional Salary dengan cara yang sama; statusnya tetap Unpaid sampai slip yang memuatnya disubmitMengembalikan statusnya, tetapi pembatalan tetap mencoba menulis jurnal akuntansi meskipun tidak ada akun yang diisi
Gratuity, Pay via Salary Slip nonaktifMembukukan dua jurnal GL bertanggal Posting date: kredit Payable Account dengan karyawan sebagai party, debit Expense Account, keduanya dengan Cost Center. Statusnya menjadi Unpaid dan Create Payment Entry munculMembalik jurnal GL tersebut dan mengembalikan statusnya
Salary SlipMenuliskan baris Accrual dan Payout siklus ini ke Employee Benefit Ledger; mengubah record Gratuity dan Leave Encashment yang tertaut menjadi Paid; mengirim slip lewat email bila Email Salary Slip to Employee aktifMenghapus baris-baris ledger tersebut dan mengembalikan record yang tertaut menjadi Unpaid

Siapa boleh melakukan apa​

RecordSystem ManagerHR ManagerHR UserEmployee
Income Tax SlabPenuh, dengan submit, cancel, amendSamaSamaTidak ada
Tax Exemption Category dan Sub CategoryCreate, read, write, deleteSamaSamaTidak ada
Employee Tax Exemption DeclarationPenuh, dengan submitSamaSamaPenuh, dengan submit
Employee Tax Exemption Proof SubmissionPenuh, dengan submitSamaSamaPenuh, dengan submit
Employee Other IncomeTidak adaPenuh, dengan submitPenuh, dengan submitPenuh, dengan submit
Employee Benefit ApplicationPenuh, dengan submitSamaSamaCreate, read, write, delete — tanpa submit
Employee Benefit ClaimPenuh, dengan submitSamaSamaCreate, read, write, delete — tanpa submit
Employee Benefit LedgerRead, report, print, email, export, shareSamaHanya read dan reportSama seperti System Manager
Gratuity dan Gratuity RuleTidak adaCreate, read, write, delete — tanpa submitSamaTidak ada

Tidak ada seorang pun yang dapat membuat atau menyunting baris Employee Benefit Ledger secara manual; salary slip-lah yang menuliskannya.

GARP tidak menambahkan aturan tersendiri untuk membatasi siapa yang boleh melihat record milik siapa di area ini, sehingga pembatasan itu hanya berasal dari User Permissions pada Employee. User type Employee Self Service, yang dibuat saat GARP HR dipasang, menerapkan persis pembatasan itu — mencocokkan pada field User ID di record Employee — dan memberi izin read, write, create, serta delete pada Employee Tax Exemption Declaration, Employee Tax Exemption Proof Submission, dan Employee Benefit Application. User type itu tidak memberi izin submit pada satu pun di antaranya, dan sama sekali tidak mencantumkan Employee Benefit Claim maupun Employee Other Income.

catatan

Tidak satu pun bagian dari area ini tersedia di aplikasi mobile. PWA hanya menyediakan layar untuk absensi, employee advance, expense claim, cuti, dan salary slip. Deklarasi, bukti, dan benefit application harus diajukan dari desk.

Tidak ada yang berjalan otomatis pada malam hari​

Tidak ada pekerjaan terjadwal di area ini. GARP memang menjalankan sejumlah hal secara otomatis setiap malam, tetapi semuanya menyangkut pengingat wawancara, ringkasan kerja harian, sinkronisasi check-in shift dan absensi otomatis, email ulang tahun dan hari jadi kerja, penugasan shift yang kedaluwarsa, penutupan lowongan kerja yang kedaluwarsa, kedaluwarsanya leave ledger, pembuatan leave encashment, serta alokasi earned leave.

Tidak ada yang mengakru tunjangan, membuat sebuah deklarasi kedaluwarsa, atau menghitung ulang pajak pada malam hari. Setiap angka di halaman ini hanya bergerak ketika seseorang menyimpan atau men-submit sebuah dokumen, atau ketika sebuah salary slip disubmit.