Cuti: Kuota Tahunan, Sakit, Izin
Manage kuota cuti tahunan karyawan sesuai UU Cipta Kerja: kuota bawaan 12 hari, surat dokter untuk sakit lebih dari 2 hari kerja, pengajuan minimal H-3, dan potong kuota otomatis saat disetujui.
- 1
Apa itu Cuti Management
Plugin Cuti adalah extension dari HR Requests yang handle 4 jenis leave Indonesia:
- Cuti tahunan (
annual_leave), UU Cipta Kerja Pasal 79: 12 hari/tahun setelah bekerja 12 bulan. Banyak workspace kasih lebih (15-20 hari). - Cuti sakit (
sick_leave), UU 13/2003: tidak dibatasi kalau ada surat dokter, tapi gaji dibayar penuh max 4 bulan pertama, lalu turun gradual. - Izin (
permission_leave), keperluan pribadi non-sakit (urusan keluarga, pernikahan kerabat, dll). Izin yang disetujui tidak otomatis memotong gaji. - Cuti melahirkan (
maternity_leave), UU Cipta Kerja: 3 bulan, full paid, tidak deduct quota tahunan.
Berbeda dengan lembur/reimburse, cuti deduct kuota otomatis saat approved. Sistem track per-tahun per-user. Sisa cuti belum bisa dipindahkan (carry-over) ke tahun berikutnya.
Aktivasi: owner workspace buka Menu Lainnya → Kelola Plugin, lalu nyalakan Absensi Online dan Hitung Lembur & Keterlambatan (pengajuan cuti diproses lewat plugin ini). Setelah Absensi Online aktif, menu Izin & Cuti muncul di grup Plugin.
- Kuota dihitung per hari kerja: hari di luar hari kerja Absensi (default Senin-Jumat) dan tanggal yang terdaftar di Pengaturan → Kalender & Hari Libur → Hari Libur Custom tidak dihitung. Libur nasional yang belum ditambahkan di situ tetap dihitung sebagai hari kerja.
- Sisa cuti tidak terbawa ke tahun berikutnya; saat ini belum ada pengaturan carry-over.
- Cuti tahunan (
- 2
Setup leave config (workspace policy)
Saat ini belum ada halaman untuk mengubah kebijakan cuti. Semua workspace memakai aturan bawaan: kuota cuti tahunan 12 hari, surat dokter wajib untuk sakit lebih dari 2 hari kerja, cuti tahunan dan izin wajib diajukan minimal H-3 (sakit dan cuti melahirkan tidak).
- Kuota tahunan default (
annualQuotaDefault), default 12 (UU). Senior/manager bisa di-override per-user di balance. - Cuti sakit tidak dibatasi kuota; yang dicek hanya surat dokter untuk sakit lebih dari 2 hari kerja
- Belum ada carry-over: sisa cuti tahun ini tidak terbawa ke tahun depan
- Wajib surat dokter setelah N hari sakit (
requireAttachmentAfterDays), default 2 hari. Sakit 1 hari gak perlu surat, 3+ hari wajib. - Advance notice (H-N), cuti tahunan + izin wajib ajukan H berapa hari (default H-3). Cuti sakit + maternity bypass karena emergency.
Update policy mid-year affect ke pengajuan baru saja, pengajuan pending/approved sebelumnya tidak retroaktif. - Kuota tahunan default (
- 3
Setup balance per-user (override kuota)
Default 12 hari kurang untuk senior? Atau intern cuma boleh 6 hari? Saat ini belum ada halaman untuk mengubah kuota cuti per karyawan; semua karyawan mendapat kuota bawaan 12 hari per tahun. Admin bisa melihat sisa kuota tiap pegawai di Menu Lainnya → Izin & Cuti (kolom Sisa kuota).
Saldo cuti tiap tahun dibuat otomatis saat pertama kali dibutuhkan (mis. saat karyawan mengajukan cuti di tahun itu), dengan kuota bawaan 12 hari.
- 4
Cara staff cek sisa cuti
Di aplikasi Absensi (attendance.satutim.id), buka kartu Riwayat Izin & Cuti di Beranda: di sana ada total hari Sakit, Izin, Cuti tahunan, dan Cuti melahirkan yang disetujui tahun ini, plus Sisa cuti tahunan setelah kamu punya cuti yang disetujui. Di aplikasi Android, sisa cuti tampil sebagai Sisa cuti: N hari saat membuat pengajuan Cuti Tahunan.
- Cuti tahunan: quota 12 - terpakai 5 + carry-over 6 = sisa 13 hari (kalau carry-over masih valid)
- Cuti sakit terpakai: 3 hari (tidak ada limit visual kalau quota default 0)
- Izin pribadi terpakai: 2 hari
- Cuti melahirkan: jumlah hari yang sudah disetujui tahun ini (tanpa batas kuota di sistem)
Belum ada timeline, proyeksi, atau peringatan sisa cuti; cek daftar riwayat di halaman Riwayat Izin & Cuti.
- Refresh balance otomatis saat ada pengajuan baru di-approve / cancel
- 5
Cara ajukan cuti tahunan
Staff plan vacation Lebaran 5 hari:
Di aplikasi Absensi: tab Lembur → Ajukan baru → Jenis pengajuan: Cuti tahunan. Di web: Hitung Lembur & Keterlambatan → Ajukan baru. Di Android: tab Absensi → Cuti.
- Tim
- Tanggal mulai (mis. 2026-04-01)
- Tanggal selesai (mis. 2026-04-08)
- System auto-hitung working days = 5 (skip weekend + Lebaran tanggal 3-7 di setting libur workspace)
- Alasan / keterangan (text, mis. "Mudik Lebaran ke kampung halaman Bandung")
- Belum ada kolom pengganti/backup; tulis nama rekan yang menggantikan di Alasan / keterangan
Validasi auto sebelum submit:
- ✅ Working days 5 ≤ sisa kuota 13 → lolos
- ✅ H-30 dari tanggal mulai > advance notice H-3 → lolos
- ✅ Bukan range terlalu pendek (working days > 0) → lolos
Click Submit → pengajuan tercipta dengan status pending. Admin tim dapet notif.
Kalau validasi gagal:
- ❌ "Sisa kuota cuti tahunan 2026 cuma 3 hari, tidak cukup untuk 5 hari pengajuan."
- ❌ "Pengajuan cuti tahunan wajib H-3 dari tanggal mulai. Sisa 1 hari saja."
→ Ubah tanggalnya (kuota per karyawan belum bisa ditambah dari aplikasi).
Aturan H-3 berlaku ketat untuk Cuti tahunan dan Izin. Untuk keadaan mendadak karena sakit, pakai jenis Sakit. - 6
Cara ajukan cuti sakit (+ surat dokter)
Staff demam 3 hari:
Aplikasi Absensi: tab Lembur → Ajukan baru → Jenis pengajuan: Sakit. (Web: Hitung Lembur & Keterlambatan → Ajukan baru; Android: tab Absensi → Pengajuan → Ajukan → Sakit.)
- Tim
- Tanggal mulai
- Tanggal selesai
- Tulis keterangan singkat (mis. "demam tinggi") di Alasan / keterangan
Validasi:
- 1-2 hari sakit → submit boleh tanpa surat dokter
- Untuk sakit lebih dari 2 hari kerja, sistem mewajibkan surat dokter, tapi saat ini lampiran dari aplikasi belum terbaca sistem, sehingga pengajuan bisa ditolak dengan pesan "Cuti sakit > 2 hari wajib lampirkan surat dokter...". Kalau ini terjadi, hubungi support SatuTim
- Tanpa surat dokter saat required: "Cuti sakit > 2 hari wajib lampirkan surat dokter"
Kalau approved → kuota cuti sakit terpakai bertambah. Tidak deduct annual quota, sakit + tahunan terpisah secara akuntansi.
Sakit jangka panjang (kronis, opname > 1 minggu): belum ada fitur edit saldo atau lampiran dokumen medis oleh admin; simpan dokumen pendukung di luar aplikasi.
- Surat dokter ditolak kalau handwriting susah dibaca atau tidak resmi (kop dokter/RS). Admin tim review subjective.
- 7
Cara ajukan izin pribadi
Permission leave untuk keperluan non-sakit non-cuti tahunan:
- Pernikahan saudara
- Sakit anak (bukan staff sendiri)
- Urusan administrasi (KTP, paspor, dll)
- Family emergency
Aplikasi Absensi: tab Lembur → Ajukan baru → Jenis pengajuan: Izin (tidak masuk). (Android: Izin.)
- Tim
- Tanggal mulai dan Tanggal selesai
- Alasan / keterangan (text, mis. "Anak sakit demam tinggi, perlu temani ke dokter pagi")
- Belum ada kolom lampiran untuk izin; jelaskan di Alasan / keterangan
Berbeda dengan cuti tahunan:
- Izin yang disetujui tidak otomatis memotong gaji, dan belum ada pengaturan izin berbayar/tidak berbayar per pengajuan
- Tidak deduct annual quota, track terpisah di
permissionUsed - Izin wajib diajukan minimal H-3 dari tanggal mulai, tanpa pengecualian di sistem
Indonesian UU 13/2003: ada ketentuan paid days untuk acara tertentu (pernikahan staff 3 hari, istri melahirkan 2 hari, keluarga inti meninggal 2 hari, khitan/baptis anak 2 hari). Di SatuTim belum ada pengaturan khusus untuk itu; admin cukup menilai dari alasan pengajuan. - 8
Cara ajukan cuti melahirkan
UU Cipta Kerja: cuti melahirkan 3 bulan (1.5 bulan sebelum + 1.5 bulan setelah persalinan), full paid, tidak deduct annual quota.
Aplikasi Absensi: tab Lembur → Ajukan baru → Jenis pengajuan: Cuti melahirkan.
- Tim
- Isi tanggal mulai dan selesai cuti secara manual (mis. sesuai surat dokter)
- Belum ada kolom lampiran untuk cuti melahirkan; kirim surat dokter ke admin di luar aplikasi kalau diminta
Setelah disetujui, hari cuti melahirkan tercatat di rekap (Izin & Cuti dan Riwayat Izin & Cuti) dan tidak mengurangi kuota cuti tahunan. Kalau cuti diperpanjang, karyawan membuat pengajuan baru (mis. Cuti tahunan atau Izin (tidak masuk)) untuk periode tambahan.
- Bapak juga dapet cuti, `permission_leave` 2 hari "istri melahirkan" (UU 13/2003)
- Beberapa workspace policy ekstra: 4 bulan / 6 bulan (sesuai best practice progressive companies)
- 9
Approval flow (sisi admin tim)
Admin tim buka Menu Lainnya → Izin & Cuti → bagian Menunggu persetujuan, lalu klik Setujui atau Tolak. Di Android: tab Perlu Persetujuan.
Tiap baris menampilkan nama, jenis (Sakit / Izin / Cuti tahunan / Cuti melahirkan), rentang tanggal, dan alasan. Sisa kuota tiap pegawai bisa dicek di tabel Rekap per pegawai (kolom Sisa kuota).
Approve:
- Langsung diproses (belum ada kolom catatan)
- System auto-deduct dari
annualUsed/sickUsed/permissionUsed - Rollback automatic: kalau deduct gagal (concurrent issue: sisa berkurang karena pengajuan lain di-approve duluan), pengajuan kembali ke pending dengan error: "Gagal approve: Sisa kuota cuti tahunan ... tidak cukup untuk ... hari. Status di-rollback." Admin retry atau request adjust quota.
Reject:
- Note wajib (mis. "Sorry, periode itu deadline project akhir bulan. Tolong reschedule ke minggu depan.")
- Tidak deduct balance
Pemohon mendapat notifikasi di aplikasi dan push.
Bulk approve (Phase 2, coming soon): select multiple pengajuan tipe sama dengan note template seragam. Berguna untuk batch process akhir tahun.
Yang bisa menyetujui cuti: owner workspace dan Admin Tim (dari tim mana pun di workspace). Kalau ada Alur Persetujuan untuk jenis cuti itu di Absensi Online → Persetujuan, hanya approver di tiap level (atau delegasinya) yang bisa menyetujui. - 10
Cancel approved cuti (refund balance)
Staff approved cuti, tapi cancel last-minute (rencana berubah, family member sembuh, dll).
Cuti yang sudah disetujui belum bisa dibatalkan sendiri dari aplikasi; tombol Batalkan pengajuan hanya ada selama status Menunggu. Hubungi support SatuTim kalau perlu membatalkan.
Validasi:
- ✅ tanggal mulai > sekarang (cuti belum dimulai) → allowed
- ❌ tanggal mulai sudah lewat atau sedang berlangsung → "Cuti yang sudah dimulai/lewat tidak bisa dibatalkan. Hubungi admin untuk koreksi."
Kalau allowed:
- Status → dibatalkan
- Auto-refund balance: kuota terpakai dikembalikan sesuai jumlah hari kerja, dst sesuai type
- Audit log: pembatalan cuti setelah approve dicatat lengkap dengan jumlah hari yang dikembalikan
- Pembatalan tidak mengirim notifikasi ke Admin Tim
Useful kalau:
- Sakit sembuh lebih cepat (sakit 5 hari approved, sembuh hari ke-3)
- Travel plan batal
- Project urgent muncul, staff voluntary masuk
Cancel cuti yang udah dimulai: belum ada fitur koreksi pengajuan atau pengembalian kuota manual di aplikasi. Hubungi support SatuTim.
- Cancel pending (belum approved) gak refund apa-apa karena balance belum di-deduct
- 11
Carry-over policy (sisa cuti tahun lalu)
Akhir tahun, staff masih punya sisa cuti 4 hari. Apa yang terjadi?
Carry-over OFF (default):
- 31 Desember 23:59 → sisa hangus
- 1 Januari → balance baru, quota 12, used 0, carry-over 0
- Sistem otomatis reset saldo cuti setiap 1 Januari
Saat ini SatuTim belum mendukung carry-over: sisa cuti tahun ini tidak terbawa ke tahun berikutnya, dan setiap tahun mulai lagi dari kuota bawaan.
Belum ada fitur pembekuan saldo cuti saat karyawan resign; hitung kompensasi sisa cuti di luar aplikasi.
- 12
Integrasi cuti ke Payroll & Absensi
Cuti di SatuTim bukan silo, cross-feature integration:
Payroll lateness fairness:
- Saat generate Payroll bulanan, lateness deduction skip tanggal yang punya approved leave (annual/sick/permission/maternity)
- Fair: staff cuti tahunan tanggal 5, gak akan kepotong gaji karena gak masuk tanggal itu
- Tanggal yang terdaftar di Pengaturan → Kalender & Hari Libur → Hari Libur Custom juga tidak dihitung potongan telat
Attendance stats:
- Streak personal skip cuti approved (gak putus streak)
- Stats "presentDays bulan ini" exclude cuti hari (hadir 18 / scheduled 22 = 4 hari off, mis. 2 cuti + 2 weekend)
Pengingat clock-in otomatis:
- Tiap pagi sistem kirim push "Jangan lupa clock-in", skip user yang cuti hari itu
- Pengingat juga tidak dikirim pada tanggal yang terdaftar di Hari Libur Custom workspace (libur nasional perlu ditambahkan di sana)
Untuk melihat siapa yang cuti hari ini, buka Menu Lainnya → Izin & Cuti → bagian Sedang cuti hari ini. Tab Pantau Langsung di Absensi Online menampilkan jumlah Hadir, Telat, Remote, Ter-flag, dan Belum clock-in (tanpa status cuti).
Payroll period: cuti tahunan paid full → tidak ada potongan slip. Cuti besar (mis. 3 bulan maternity) tetap full salary 3 bulan pertama (UU), bulan ke-4+ kalau ada extend = workspace policy.
- 13
Plan gating + audit
Fitur cuti bisa dipakai di semua paket, termasuk Free, selama plugin Absensi Online dan Hitung Lembur & Keterlambatan aktif.
Semua paket mendapat fitur cuti yang sama. Alur persetujuan bertingkat ada di Absensi Online → Persetujuan. Melihat Audit Trail butuh paket Business.
Audit Trail mencatat persetujuan, penolakan, dan pembatalan cuti setelah disetujui. Pengajuan baru dan pembatalan saat masih menunggu tidak tercatat. Halaman Audit Trail tersedia di paket Business.
Retention: Audit log disimpan 1 tahun lalu dihapus otomatis. Kalau perlu arsip lebih lama (mis. untuk kebutuhan Kemnaker), export rutin dari Pengaturan → Audit Trail (paket Business) dan simpan di tempat lain.
- 14
Troubleshooting Cuti
Masalah umum + fix:
"Sisa kuota cuti tahunan X hari, tidak cukup untuk Y hari":
→ Working days pengajuan > sisa balance. Cek Sisa cuti tahunan di halaman Riwayat Izin & Cuti (aplikasi Absensi) atau Sisa cuti di form Android, lalu ubah tanggalnya."Pengajuan cuti tahunan wajib H-N dari tanggal mulai":
→ Submit terlalu mepet. Cuti tahunan strict policy advance notice. Aturan H-3 juga berlaku untuk Izin; untuk keadaan sakit mendadak pakai jenis Sakit."Cuti sakit > N hari wajib lampirkan surat dokter":
→ Pesan ini muncul untuk sakit lebih dari 2 hari kerja. Saat ini lampiran dari aplikasi belum terbaca oleh pengecekan ini; hubungi support SatuTim."Rentang tanggal tidak ada hari kerja":
→ Range cuma weekend / libur nasional. Tidak ada working days = tidak ada yang di-deduct = pengajuan dianggap invalid. Adjust tanggal."Gagal approve: Sisa kuota cuti tahunan ... tidak cukup untuk ... hari. Status di-rollback.":
→ Race condition: 2 cuti approved parallel, sisa berkurang. Refresh, recheck balance, retry approve.Balance tidak ke-refund saat cancel:
→ Cuti yang sudah disetujui belum bisa dibatalkan dari aplikasi, jadi kuotanya tidak kembali otomatis. Hubungi support SatuTim.Carry-over hilang padahal seharusnya ada:
→ SatuTim belum mendukung carry-over, jadi sisa cuti tahun lalu memang tidak terbawa.Cuti approved tapi Payroll masih potong gaji:
→ Cek tanggal mulai cuti harus dalam rentang periode payroll run (mis. cuti tanggal 3 Juni masuk run Juni, bukan Mei). Re-generate run kalau salah periode.Staff tidak bisa lihat balance:
→ Kartu Sisa cuti tahunan di aplikasi Absensi baru muncul setelah karyawan punya cuti yang disetujui tahun ini. Di Android, sisa cuti terlihat saat membuat pengajuan Cuti Tahunan.Masih stuck? /support/new dengan: pengajuan ID, screenshot balance, expected vs actual.