Setup Awal
Bagian ini ditujukan untuk administrator sistem yang bertanggung jawab menyiapkan aplikasi untuk pertama kali.
Tampilan Bare-Bones
Setelah instalasi, aplikasi menampilkan tampilan bare-bones dengan data minimal:
- User admin default (admin/admin)
- Tahun fiskal aktif
- Tidak ada COA, template, atau data master lainnya

Feature Overview
Setelah import seed data, fitur yang tersedia tergantung jenis industri:
Fitur Umum (Semua Industri)
| Fitur | Menu | Deskripsi |
|---|---|---|
| Transaksi | Transaksi | Catat pendapatan dan pengeluaran |
| Laporan | Laporan | Neraca, Laba Rugi, Arus Kas |
| Pajak | Pajak | PPN, PPh, Kalender Pajak |
| Penggajian | Penggajian | Payroll, BPJS, PPh 21 |
| Aset Tetap | Aset | Depresiasi, Kategori Aset |
Fitur Industri Jasa
| Fitur | Menu | Deskripsi |
|---|---|---|
| Client | Klien | Data klien dan kontak |
| Project | Proyek | Proyek dengan milestone |
| Invoice | Invoice | Penagihan ke klien |
| Profitabilitas | Laporan | Profit per klien/proyek |
Fitur Industri Dagang
| Fitur | Menu | Deskripsi |
|---|---|---|
| Produk | Inventori > Produk | Master produk dengan harga |
| Stok | Inventori > Stok | Saldo stok per lokasi |
| Transaksi Inventori | Inventori > Transaksi | Pembelian, Penjualan, Adjustment |
| Laporan Stok | Inventori > Laporan | Kartu stok, Valuasi |
Master Data
Bagan Akun (Chart of Accounts)
Buka menu Akun untuk melihat daftar akun.

Struktur Kode Akun
| Prefix | Kategori | Contoh |
|---|---|---|
| 1.x.xx | Aset | Kas, Bank, Piutang, Peralatan |
| 2.x.xx | Kewajiban | Hutang Usaha, Hutang Pajak |
| 3.x.xx | Ekuitas | Modal, Laba Ditahan |
| 4.x.xx | Pendapatan | Pendapatan Jasa, Penjualan |
| 5.x.xx | Beban | Gaji, Sewa, Listrik |
Tambah Akun Baru
- Klik tombol Akun Baru
- Isi form:

| Field | Keterangan |
|---|---|
| Kode | Kode unik mengikuti struktur |
| Nama | Nama akun |
| Tipe | Aset/Kewajiban/Ekuitas/Pendapatan/Beban |
| Sub Tipe | Kategori detail |
| Saldo Normal | Debit/Kredit |
- Klik Simpan
Template Transaksi
Template menentukan akun-akun yang terlibat dalam suatu jenis transaksi.

Lihat Referensi Template untuk daftar lengkap template standar.
Periode Fiskal
Konsep
Periode fiskal adalah periode akuntansi perusahaan. Aplikasi menggunakan sistem 12 bulan per tahun fiskal.
Melihat Periode Fiskal
Buka menu Periode Fiskal di sidebar.

Status Periode
| Status | Arti |
|---|---|
| OPEN | Periode aktif, transaksi dapat dicatat |
| CLOSED | Periode ditutup, transaksi tidak dapat dicatat |
Backup Data
Manual Backup
- Buka menu Pengaturan > Backup
- Klik Buat Backup
- File backup akan terunduh
Kapan Perlu Backup
- Sebelum import data baru
- Sebelum tutup buku tahunan
- Secara berkala (minimal bulanan)
Tips Setup
- Mulai dari seed data - Jangan setup dari kosong, gunakan seed data industri yang sesuai
- Review COA - Pastikan bagan akun sesuai kebutuhan bisnis
- Test transaksi - Coba input beberapa transaksi untuk memastikan setup benar
- Dokumentasi - Catat perubahan konfigurasi yang dilakukan
Lihat Juga
- Tutorial Dasar Akuntansi - Pahami konsep dan workflow
- Keamanan & Kepatuhan - Konfigurasi keamanan
- Referensi Akun - Daftar akun standar
Import Seed Data
Konsep Seed Data
Seed data adalah paket data awal yang berisi:
- Bagan Akun (Chart of Accounts) sesuai industri
- Template transaksi standar
- Komponen gaji (jika applicable)
- Deadline pajak
- Kategori aset tetap
Pilihan Industry Seed
| Industry | Deskripsi | Fitur Utama |
|---|---|---|
| IT Services (PKP) | Perusahaan jasa IT dengan kewajiban PPN | Client, Project, Milestone, Invoice |
| Online Seller | Penjual online marketplace | Produk, Inventory FIFO, Multi-marketplace |
| Coffee Shop | Usaha kopi & pastry | BOM, Production Order, HPP |
| Campus | Institusi pendidikan | Mahasiswa, SPP, Beasiswa |
Langkah Import
- Buka menu Pengaturan di sidebar
- Pilih tab Import Data
- Klik Pilih File dan pilih file ZIP seed data
- Review preview data yang akan diimpor
- Klik Import
Catatan: Proses import akan menggantikan data existing. Pastikan tidak ada data penting sebelum import.
User Management
Melihat Daftar Pengguna
Buka menu Pengguna di sidebar.

Tambah Pengguna Baru
- Klik tombol Pengguna Baru

- Isi form:
| Field | Keterangan |
|---|---|
| Username | Login ID (unik) |
| Nama Lengkap | Nama tampilan |
| Alamat email | |
| Password | Password minimal 12 karakter |
| Role | ADMIN/OWNER/ACCOUNTANT/STAFF/AUDITOR/EMPLOYEE |
- Klik Simpan
Sesi Perangkat (Device Sessions)
Di halaman detail pengguna, terdapat bagian Sesi Perangkat Aktif yang menampilkan daftar perangkat yang terhubung melalui OAuth Device Flow (misalnya Claude Code, Docker Desktop).

Informasi yang ditampilkan:
- Perangkat — nama perangkat yang didaftarkan
- Client ID — identifier aplikasi
- Status — Aktif atau Kedaluwarsa
- Dibuat — tanggal token dibuat
- Terakhir Digunakan — waktu terakhir token digunakan
- IP Terakhir — alamat IP terakhir
Untuk mencabut akses:
- Klik Cabut pada sesi individual
- Klik Cabut Semua untuk mencabut semua sesi sekaligus
Role dan Permission
| Role | Deskripsi | Permission |
|---|---|---|
| ADMIN | Administrator sistem | Full access |
| OWNER | Pemilik bisnis | Full access kecuali user management |
| ACCOUNTANT | Akuntan | Transaksi, Laporan, Pajak |
| STAFF | Staff operasional | Transaksi, View laporan |
| AUDITOR | Auditor | View only |
| EMPLOYEE | Karyawan | Self-service saja |
Telegram Integration
Untuk Administrator
1. Buat Bot di BotFather
- Buka Telegram, cari @BotFather
- Kirim
/newbot - Ikuti instruksi untuk membuat bot
- Catat Bot Token yang diberikan
2. Konfigurasi Environment
Tambahkan ke environment variables server:
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_WEBHOOK_URL=https://your-domain.com/api/telegram/webhook
3. Daftarkan Webhook
curl -X POST "https://api.telegram.org/bot{your_token}/setWebhook" \
-d "url=https://your-domain.com/api/telegram/webhook"
Untuk End User
- Buka menu Pengaturan > Telegram
- Klik Hubungkan Telegram
- Salin kode verifikasi
- Buka Telegram, cari bot yang dikonfigurasi
- Kirim kode verifikasi ke bot
Setelah terhubung, Anda dapat mengirim foto struk via Telegram.
Lihat Tutorial Akuntansi bagian Telegram Receipt untuk panduan penggunaan.
Konsep Dasar Akuntansi
Bagian ini adalah panduan utama untuk pemilik bisnis yang belum memiliki latar belakang akuntansi. Tujuannya: memahami akuntansi dengan bahasa sederhana agar dapat menggunakan aplikasi dengan benar.
Catatan: Konsep di sini bersifat universal - bisa diterapkan dengan aplikasi ini, Excel, atau bahkan pencatatan manual.
Apa Itu Akuntansi?
Akuntansi adalah proses mencatat, mengklasifikasi, dan melaporkan transaksi keuangan bisnis.
Tujuan akuntansi:
- Mengetahui kondisi keuangan bisnis
- Membuat keputusan bisnis yang tepat
- Memenuhi kewajiban pelaporan pajak

Persamaan Dasar Akuntansi
Aset = Kewajiban + Ekuitas
| Komponen | Pengertian | Contoh |
|---|---|---|
| Aset | Apa yang dimiliki bisnis | Kas, piutang, peralatan |
| Kewajiban | Apa yang dihutang bisnis | Hutang vendor, hutang pajak |
| Ekuitas | Modal pemilik | Modal awal, laba ditahan |
Setiap transaksi harus menjaga keseimbangan persamaan ini.
Debit dan Kredit
Setiap transaksi dicatat dalam dua sisi: debit dan kredit. Total debit harus sama dengan total kredit.
| Jenis Akun | Bertambah | Berkurang |
|---|---|---|
| Aset | Debit | Kredit |
| Kewajiban | Kredit | Debit |
| Ekuitas | Kredit | Debit |
| Pendapatan | Kredit | Debit |
| Beban | Debit | Kredit |
Contoh: Terima Pembayaran dari Klien
Anda menerima Rp 10.000.000 dari klien untuk jasa konsultasi.
| Akun | Debit | Kredit |
|---|---|---|
| Kas/Bank | 10.000.000 | |
| Pendapatan Jasa | 10.000.000 |
- Kas (aset) bertambah → debit
- Pendapatan bertambah → kredit
Contoh: Bayar Listrik
Anda membayar tagihan listrik Rp 500.000.
| Akun | Debit | Kredit |
|---|---|---|
| Beban Listrik | 500.000 | |
| Kas/Bank | 500.000 |
- Beban bertambah → debit
- Kas (aset) berkurang → kredit
Bagan Akun (Chart of Accounts)
Bagan akun adalah daftar semua akun yang digunakan untuk mencatat transaksi.

Struktur Kode Akun
| Kode | Jenis | Contoh |
|---|---|---|
| 1.x.xx | Aset | Kas, Bank, Piutang, Peralatan |
| 2.x.xx | Kewajiban | Hutang Usaha, Hutang Pajak |
| 3.x.xx | Ekuitas | Modal, Laba Ditahan |
| 4.x.xx | Pendapatan | Pendapatan Jasa, Pendapatan Lain |
| 5.x.xx | Beban | Gaji, Sewa, Listrik, Internet |
Telegram Receipt
Fitur untuk mengirim foto struk via Telegram dan mencatat transaksi langsung.
Cara Penggunaan
- Buka Telegram, cari bot yang dikonfigurasi
- Kirim foto struk
- Bot akan meminta konfirmasi:
- Template transaksi
- Jumlah
- Keterangan
- Konfirmasi, transaksi akan tercatat
Catatan: Fitur ini perlu dikonfigurasi dulu oleh administrator. Lihat Setup Awal.
Tips untuk Pemula
- Catat segera - Catat transaksi sesegera mungkin setelah terjadi
- Simpan bukti - Simpan struk, invoice, dan dokumen pendukung
- Gunakan template - Aplikasi menyediakan template untuk transaksi umum
- Review rutin - Periksa laporan minimal sekali seminggu
- Posting langsung - Jangan tunda posting transaksi draft
- Rekonsiliasi - Cocokkan saldo aplikasi dengan saldo bank secara berkala
Istilah Penting
| Istilah | Artinya |
|---|---|
| Transaksi | Setiap kali uang masuk atau keluar |
| Posting | Menyimpan transaksi secara permanen |
| Draft | Transaksi yang masih bisa diedit |
| Akun | Kategori untuk mengelompokkan uang |
| Template | Format siap pakai untuk transaksi |
| Jurnal | Catatan debit/kredit dari transaksi |
| Debit | Kolom kiri (biasanya = bertambah untuk aset) |
| Kredit | Kolom kanan (biasanya = berkurang untuk aset) |
| Neraca | Laporan posisi keuangan |
| Laba Rugi | Laporan keuntungan/kerugian |
Lihat Glosarium untuk daftar istilah lengkap.
Lihat Juga
- Setup Awal - Konfigurasi awal aplikasi
- Aset Tetap - Pencatatan dan depresiasi aset
- Perpajakan - Transaksi pajak
- Referensi Template - Daftar template transaksi
Siklus Akuntansi
Siklus akuntansi adalah urutan langkah yang dilakukan berulang setiap periode:
1. Identifikasi Transaksi
↓
2. Catat di Jurnal
↓
3. Posting ke Buku Besar
↓
4. Susun Neraca Saldo
↓
5. Jurnal Penyesuaian
↓
6. Laporan Keuangan
↓
7. Jurnal Penutup
↓
8. Neraca Saldo Setelah Penutupan
Dalam aplikasi ini, langkah 2-3 dilakukan otomatis saat Anda mencatat transaksi.
Transaksi Harian
Mencatat Pendapatan
Setiap kali Anda menerima uang:
- Buka menu Transaksi

- Klik Transaksi Baru
- Pilih template yang sesuai (contoh: "Pendapatan Jasa")
- Isi field:
- Tanggal: Tanggal uang diterima
- Jumlah: Nominal yang diterima
- Keterangan: Catatan untuk referensi
- Review preview jurnal
- Klik Simpan & Posting

Contoh Lengkap: Setoran Modal
Mari kita catat setoran modal awal perusahaan sebesar Rp 500.000.000.
Langkah 1: Buka Form Transaksi
- Klik menu Transaksi > Transaksi Baru
- Pilih template Setoran Modal

Langkah 2: Isi Data Transaksi
- Tanggal: 1 Januari 2024
- Jumlah: Rp 500.000.000
- Keterangan: Setoran Modal Awal 2024
- Referensi: CAP-2024-001
Preview Jurnal:
Dr. 1.1.01 Kas/Bank Rp 500.000.000
Cr. 3.1.01 Modal Saham Rp 500.000.000
Langkah 3: Simpan & Posting
Klik tombol Simpan & Posting. Sistem akan menampilkan detail transaksi.

Hasil:
- Status: Posted
- Jurnal otomatis dibuat
- Saldo Kas bertambah Rp 500.000.000
- Ekuitas bertambah Rp 500.000.000
Contoh Lengkap: Pendapatan dengan PPN
Mencatat pendapatan jasa konsultasi sebesar Rp 196.200.000 (termasuk PPN 11%).
Langkah 1: Pilih Template
Template: Pendapatan Jasa Konsultasi (dengan PPN)

Langkah 2: Isi Data
- Tanggal: 15 Januari 2024
- Jumlah Total: Rp 196.200.000
- Keterangan: Konsultasi Core Banking - Milestone 1
- Referensi: INV-2024-001
Perhitungan Otomatis:
DPP (Dasar Pengenaan Pajak) = 196.200.000 / 1.11 = Rp 176.756.757
PPN 11% = 176.756.757 × 11% = Rp 19.443.243
Total = Rp 196.200.000
Preview Jurnal:
Dr. 1.1.01 Kas/Bank Rp 196.200.000
Cr. 4.1.02 Pendapatan Jasa Rp 176.756.757
Cr. 2.2.01 Hutang PPN Rp 19.443.243
Langkah 3: Simpan & Posting

Verifikasi:
- Kas bertambah Rp 196.200.000
- Pendapatan diakui Rp 176.756.757
- Hutang PPN Rp 19.443.243 (akan disetor ke Dirjen Pajak)
Contoh Lengkap: Bayar Beban Operasional
Mencatat pembayaran lisensi software JetBrains IntelliJ.
Langkah 1: Pilih Template
Template: Bayar Beban Software & Lisensi

Langkah 2: Isi Data
- Tanggal: 15 Januari 2024
- Jumlah: Rp 3.330.000
- Keterangan: JetBrains IntelliJ License 2024
- Referensi: JB-2024-001
Preview Jurnal:
Dr. 5.1.21 Beban Software & Lisensi Rp 3.330.000
Cr. 1.1.01 Kas/Bank Rp 3.330.000
Langkah 3: Simpan & Posting

Hasil:
- Beban bertambah Rp 3.330.000
- Kas berkurang Rp 3.330.000
- Mempengaruhi laba rugi (mengurangi laba)
Mencatat Pengeluaran
Setiap kali Anda mengeluarkan uang:
- Buka menu Transaksi
- Klik Transaksi Baru
- Pilih template yang sesuai (contoh: "Beban Operasional")
- Isi field:
- Tanggal: Tanggal pembayaran
- Jumlah: Nominal yang dibayar
- Keterangan: Catatan (contoh: "Bayar listrik November")
- Review preview jurnal
- Klik Simpan & Posting
Transfer Antar Akun
Saat memindahkan uang antar rekening:
- Buka menu Transaksi
- Klik Transaksi Baru
- Pilih template "Transfer Antar Akun"
- Isi:
- Dari Akun: Rekening sumber
- Ke Akun: Rekening tujuan
- Jumlah: Nominal transfer
- Klik Simpan & Posting
Jurnal & Buku Besar
Apa Itu Jurnal?
Jurnal adalah catatan debit/kredit yang dihasilkan dari transaksi.

Aplikasi ini menggunakan pendekatan transaction-centric - Anda mencatat transaksi, sistem otomatis membuat jurnal yang benar.
Status Transaksi
| Status | Arti |
|---|---|
| Draft | Tersimpan tapi belum mempengaruhi saldo |
| Posted | Sudah diposting, mempengaruhi saldo |
| Void | Dibatalkan, jurnal reversal dibuat |
Penyesuaian
Apa Itu Penyesuaian?
Penyesuaian adalah koreksi yang dilakukan di akhir periode untuk memastikan laporan keuangan akurat.
Jenis Penyesuaian
| Jenis | Contoh | Akun yang Terlibat |
|---|---|---|
| Beban Dibayar Dimuka | Sewa dibayar setahun | Beban Sewa, Sewa Dibayar Dimuka |
| Beban Akrual | Gaji belum dibayar | Beban Gaji, Hutang Gaji |
| Penyusutan | Depresiasi peralatan | Beban Penyusutan, Akum. Penyusutan |
Jadwal Amortisasi
Untuk beban yang dibayar dimuka (sewa tahunan, asuransi, dll):

- Buka menu Amortisasi
- Klik Amortisasi Baru

- Isi:
- Nama jadwal
- Total nilai
- Tanggal mulai dan selesai
- Akun beban
- Sistem akan membuat jurnal amortisasi otomatis setiap bulan
Jurnal Manual
Untuk transaksi yang tidak cocok dengan template yang ada, gunakan fitur Jurnal Manual. Fitur ini memungkinkan input baris debit/kredit langsung tanpa template.
Kapan Menggunakan Jurnal Manual?
- Jurnal penutup (closing entries)
- Jurnal penyesuaian (adjusting entries)
- Jurnal pembuka (opening balances)
- Jurnal koreksi
- Transaksi non-standar lainnya
Cara Membuat Jurnal Manual
- Buka menu Transaksi
- Klik tombol Jurnal Manual di sebelah kolom pencarian template

- Isi field:
- Tanggal Transaksi: Tanggal jurnal
- Kategori: Pilih jenis jurnal (Penutup, Penyesuaian, Pembuka, Koreksi) — opsional
- Deskripsi: Keterangan jurnal
- Tambahkan baris jurnal:
- Pilih Akun dari dropdown
- Isi nominal di kolom Debit atau Kredit
- Klik Tambah Baris untuk menambah baris
- Pastikan indikator menunjukkan Jurnal seimbang (total debit = total kredit)

- Klik Simpan Draft atau Simpan & Posting

Contoh: Jurnal Penyesuaian Beban Dibayar Dimuka
Perusahaan membayar sewa kantor Rp 12.000.000 untuk 12 bulan. Setiap bulan perlu penyesuaian:
Dr. 5.1.03 Beban Sewa Rp 1.000.000
Cr. 1.3.01 Sewa Dibayar Dimuka Rp 1.000.000
Langkah:
- Klik Jurnal Manual
- Pilih kategori Jurnal Penyesuaian
- Isi deskripsi: "Penyesuaian sewa kantor bulan Januari"
- Baris 1: Akun Beban Sewa, Debit 1.000.000
- Baris 2: Akun Sewa Dibayar Dimuka, Kredit 1.000.000
- Klik Simpan & Posting
Laporan Keuangan
Neraca Saldo (Trial Balance)
Daftar saldo semua akun. Total debit harus sama dengan total kredit.

Kapan digunakan: Untuk validasi bahwa pembukuan balance.
Laporan Laba Rugi (Income Statement)
Menampilkan pendapatan, beban, dan laba/rugi periode tertentu.

Struktur:
Pendapatan Rp 50.000.000
Total Beban Rp 30.000.000
─────────────────────────────────
LABA BERSIH Rp 20.000.000
Neraca (Balance Sheet)
Menampilkan posisi keuangan pada tanggal tertentu.

Struktur:
ASET
Aset Lancar Rp 100.000.000
Aset Tetap Rp 50.000.000
Total Aset Rp 150.000.000
KEWAJIBAN
Hutang Usaha Rp 20.000.000
Total Kewajiban Rp 20.000.000
EKUITAS
Modal Rp 100.000.000
Laba Ditahan Rp 30.000.000
Total Ekuitas Rp 130.000.000
TOTAL KEWAJIBAN + EKUITAS Rp 150.000.000
Persamaan yang harus balance: Aset = Kewajiban + Ekuitas
Tutup Buku
Apa Itu Tutup Buku?
Proses akhir tahun untuk:
- Menutup akun pendapatan dan beban (saldo menjadi nol)
- Memindahkan laba/rugi ke akun Laba Ditahan
Langkah Tutup Buku
- Buka menu Laporan > Penutupan Tahun Buku

- Pilih tahun yang akan ditutup
- Review preview jurnal penutup:
- Tutup Pendapatan
- Tutup Beban
- Transfer ke Laba Ditahan
- Klik Eksekusi Penutupan
Jurnal Penutup yang Dibuat
1. Tutup Pendapatan
Dr. Pendapatan Jasa xxx
Cr. Laba Berjalan xxx
2. Tutup Beban
Dr. Laba Berjalan xxx
Cr. Beban Gaji xxx
Cr. Beban Sewa xxx
3. Transfer ke Laba Ditahan
Dr. Laba Berjalan xxx
Cr. Laba Ditahan xxx
Kapan Melakukan Tutup Buku?
Lakukan setelah:
- Semua transaksi tahun tersebut sudah dicatat
- Penyesuaian akhir tahun sudah dilakukan
- Penyusutan aset sudah dihitung
- Laporan keuangan sudah final
Konsep Depresiasi
Apa Itu Depresiasi?
Depresiasi (penyusutan) adalah alokasi biaya perolehan aset tetap selama masa manfaatnya. Aset tetap seperti komputer, kendaraan, dan peralatan kehilangan nilai seiring waktu karena pemakaian.
Mengapa Depresiasi Penting?
- Matching principle - Biaya aset dicocokkan dengan pendapatan yang dihasilkan
- Pajak - Beban penyusutan mengurangi penghasilan kena pajak
- Nilai aset akurat - Neraca menunjukkan nilai buku yang realistis
Metode Depresiasi
| Metode | Rumus | Karakteristik |
|---|---|---|
| Garis Lurus | (Harga Perolehan - Nilai Residu) / Masa Manfaat | Beban sama setiap tahun |
| Saldo Menurun | Nilai Buku × Tarif | Beban besar di awal, mengecil |
Regulasi Indonesia (PMK 96/PMK.03/2009):
- Kelompok 1 (4 tahun): 25% garis lurus, 50% saldo menurun
- Kelompok 2 (8 tahun): 12.5% garis lurus, 25% saldo menurun
- Kelompok 3 (16 tahun): 6.25% garis lurus, 12.5% saldo menurun
- Kelompok 4 (20 tahun): 5% garis lurus, 10% saldo menurun
Kategori Aset
Melihat Kategori Aset
Buka menu Aset Tetap > Kategori.

Kategori Standar (dari Seed Data)
| Kategori | Kelompok | Masa Manfaat | Metode |
|---|---|---|---|
| Komputer & Laptop | 1 | 4 tahun | Garis Lurus |
| Peralatan Kantor | 1 | 4 tahun | Garis Lurus |
| Kendaraan Roda 2 | 1 | 4 tahun | Garis Lurus |
| Kendaraan Roda 4 | 2 | 8 tahun | Garis Lurus |
| Perabotan | 2 | 8 tahun | Garis Lurus |
| Bangunan Permanen | 4 | 20 tahun | Garis Lurus |
Menambah Kategori Baru
- Klik Kategori Baru
- Isi:
- Nama kategori
- Kelompok pajak (1-4)
- Masa manfaat (tahun)
- Metode depresiasi
- Klik Simpan
Pencatatan Aset
Melihat Daftar Aset
Buka menu Aset Tetap > Daftar Aset.

Kolom yang ditampilkan:
- Kode aset
- Nama aset
- Kategori
- Tanggal perolehan
- Harga perolehan
- Nilai buku saat ini
- Status
Menambah Aset Baru
- Klik Aset Baru

- Isi data aset:
| Field | Keterangan |
|---|---|
| Kode Aset | Kode unik (contoh: AST-2025-001) |
| Nama Aset | Deskripsi aset |
| Kategori | Pilih dari dropdown |
| Tanggal Perolehan | Tanggal pembelian |
| Harga Perolehan | Nilai beli (termasuk biaya instalasi jika ada) |
| Nilai Residu | Estimasi nilai jual akhir (biasanya 0 untuk pajak) |
| Lokasi | Penempatan aset |
| Keterangan | Catatan tambahan (nomor seri, vendor, dll) |
- Klik Simpan
Jurnal yang Terbentuk (saat pembelian)
Dr. Aset Tetap - [Kategori] xxx
Cr. Kas/Bank xxx
Jadwal Depresiasi
Melihat Jadwal Depresiasi
Pada halaman detail aset, klik tab Depresiasi.

Tabel menampilkan:
- Bulan/tahun
- Beban penyusutan periode
- Akumulasi penyusutan
- Nilai buku akhir
Proses Depresiasi Bulanan
Sistem menghitung depresiasi secara otomatis setiap bulan. Jurnal yang dibuat:
Dr. Beban Penyusutan xxx
Cr. Akumulasi Penyusutan xxx
Contoh Perhitungan (Garis Lurus)
| Data | Nilai |
|---|---|
| Harga Perolehan | Rp 12.000.000 |
| Nilai Residu | Rp 0 |
| Masa Manfaat | 4 tahun |
Depresiasi per tahun: Rp 12.000.000 / 4 = Rp 3.000.000 Depresiasi per bulan: Rp 3.000.000 / 12 = Rp 250.000
Jenis Pajak di Indonesia
Pajak yang Dikelola Aplikasi
| Pajak | Tarif | Kewajiban |
|---|---|---|
| PPN | Nominal 12%, efektif 11% (DPP Nilai Lain) | PKP yang menyerahkan BKP/JKP |
| PPh 21 | Progresif | Pemberi kerja (pemotongan gaji) |
| PPh 23 | 2% (jasa), 15% (dividen) | Pemberi penghasilan |
| PPh 25 | Angsuran | Wajib pajak badan |
| PPh 4(2) | Final (varies) | Transaksi tertentu |
Transaksi PPN
Konsep PPN (DPP Nilai Lain — PMK 131/2024)
PPN Keluaran - PPN yang Anda pungut dari pembeli PPN Masukan - PPN yang Anda bayar ke penjual
Net PPN = PPN Keluaran - PPN Masukan
Sejak 1 Januari 2025, tarif PPN secara nominal naik menjadi 12%, namun menggunakan DPP Nilai Lain (PMK 131/2024) sehingga beban efektif tetap 11%:
- DPP = Harga Jual × 11/12 (DPP Nilai Lain)
- PPN = DPP × 12% = Harga Jual × 11/12 × 12% = Harga Jual × 11%
- Field
amountdi template = Harga Jual (sebelum PPN) - Formula template:
amount * 0.11= PPN efektif 11% dari Harga Jual
Mengapa formula 0.11 (bukan 0.12)? Tarif resmi PPN adalah 12%, tetapi DPP dihitung dari 11/12 × Harga Jual (PMK 131/2024 Pasal 3). Hasil akhirnya: PPN = 11% × Harga Jual. Di Faktur Pajak Coretax, DPP dan PPN 12% ditampilkan terpisah, tetapi secara akuntansi cukup catat PPN =
amount * 0.11.
Mencatat Pendapatan dengan PPN
- Buka menu Transaksi > Transaksi Baru

- Pilih template Pendapatan Jasa + PPN
- Isi Harga Jual (sebelum PPN), contoh: Rp 10.000.000
- Preview jurnal:
Dr. Bank 11.100.000 (amount * 1.11) Cr. Hutang PPN 1.100.000 (amount * 0.11) Cr. Pendapatan 10.000.000 (amount) - Klik Simpan & Posting
Mencatat Pembelian dengan PPN Masukan
- Pilih template Pembelian dengan PPN
- Isi Harga Jual (sebelum PPN), contoh: Rp 10.000.000
- Preview jurnal:
Dr. Beban/Aset 10.000.000 (amount) Dr. PPN Masukan 1.100.000 (amount * 0.11) Cr. Bank 11.100.000 (amount * 1.11)
Pendapatan Jasa BUMN (FP 03)
Untuk klien BUMN/Pemerintah yang menggunakan Faktur Pajak kode 03 (PPN dipungut pembeli):
- Pilih template Pendapatan Jasa BUMN (FP 03)
- Isi Harga Jual, contoh: Rp 10.000.000
- Preview jurnal:
Dr. Bank 9.800.000 (amount * 0.98) Dr. Kredit PPh 23 200.000 (amount * 0.02) Cr. Pendapatan 10.000.000 (amount) - PPN tidak masuk jurnal karena dipungut dan disetor oleh pembeli (BUMN)
Laporan Ringkasan PPN
Buka menu Laporan > Ringkasan PPN.

Transaksi PPh
Konsep PPN (DPP Nilai Lain — PMK 131/2024)
PPN Keluaran - PPN yang Anda pungut dari pembeli PPN Masukan - PPN yang Anda bayar ke penjual
Net PPN = PPN Keluaran - PPN Masukan
Sejak 1 Januari 2025, tarif PPN secara nominal naik menjadi 12%, namun menggunakan DPP Nilai Lain (PMK 131/2024) sehingga beban efektif tetap 11%:
- DPP = Harga Jual × 11/12 (DPP Nilai Lain)
- PPN = DPP × 12% = Harga Jual × 11/12 × 12% = Harga Jual × 11%
- Field
amountdi template = Harga Jual (sebelum PPN) - Formula template:
amount * 0.11= PPN efektif 11% dari Harga Jual
Mengapa formula 0.11 (bukan 0.12)? Tarif resmi PPN adalah 12%, tetapi DPP dihitung dari 11/12 × Harga Jual (PMK 131/2024 Pasal 3). Hasil akhirnya: PPN = 11% × Harga Jual. Di Faktur Pajak Coretax, DPP dan PPN 12% ditampilkan terpisah, tetapi secara akuntansi cukup catat PPN =
amount * 0.11.
Mencatat Pendapatan dengan PPN
- Buka menu Transaksi > Transaksi Baru

- Pilih template Pendapatan Jasa + PPN
- Isi Harga Jual (sebelum PPN), contoh: Rp 10.000.000
- Preview jurnal:
Dr. Bank 11.100.000 (amount * 1.11) Cr. Hutang PPN 1.100.000 (amount * 0.11) Cr. Pendapatan 10.000.000 (amount) - Klik Simpan & Posting
Mencatat Pembelian dengan PPN Masukan
- Pilih template Pembelian dengan PPN
- Isi Harga Jual (sebelum PPN), contoh: Rp 10.000.000
- Preview jurnal:
Dr. Beban/Aset 10.000.000 (amount) Dr. PPN Masukan 1.100.000 (amount * 0.11) Cr. Bank 11.100.000 (amount * 1.11)
Pendapatan Jasa BUMN (FP 03)
Untuk klien BUMN/Pemerintah yang menggunakan Faktur Pajak kode 03 (PPN dipungut pembeli):
- Pilih template Pendapatan Jasa BUMN (FP 03)
- Isi Harga Jual, contoh: Rp 10.000.000
- Preview jurnal:
Dr. Bank 9.800.000 (amount * 0.98) Dr. Kredit PPh 23 200.000 (amount * 0.02) Cr. Pendapatan 10.000.000 (amount) - PPN tidak masuk jurnal karena dipungut dan disetor oleh pembeli (BUMN)
Laporan Ringkasan PPN
Buka menu Laporan > Ringkasan PPN.

Periode Fiskal
Periode fiskal mengontrol kapan transaksi dapat diposting. Setiap bulan memiliki status yang menentukan apakah jurnal dapat dibuat di bulan tersebut.
Melihat Periode Fiskal
Buka menu Pengaturan > Periode Fiskal di sidebar.

Fitur daftar periode:
- Filter tahun — pilih tahun untuk melihat 12 periode
- Filter status — tampilkan semua atau filter berdasarkan status tertentu
Generate Periode Satu Tahun
Untuk membuat 12 periode sekaligus:
- Isi tahun pada kolom Tahun di bagian atas halaman
- Klik Generate
- Sistem membuat periode Januari–Desember untuk tahun tersebut (periode yang sudah ada dilewati)
Atau buat periode satuan via Periode Baru (pilih tahun dan bulan manual).
Status Periode
| Status | Label | Arti |
|---|---|---|
| OPEN | Terbuka | Transaksi dapat diposting ke periode ini |
| MONTH_CLOSED | Tutup Bulan | Transaksi tidak dapat diposting; periode masih bisa dibuka kembali |
| TAX_FILED | SPT Dilaporkan | SPT sudah dilaporkan ke DJP; periode tidak bisa dibuka kembali |
Alur status:
OPEN → MONTH_CLOSED → TAX_FILED
Detail Periode
Klik periode di daftar untuk melihat detail:
- Tanggal mulai dan berakhir
- Siapa dan kapan menutup bulan
- Siapa dan kapan melaporkan SPT
- Visualisasi alur status (3 tahap)
Menutup Periode
- Buka detail periode yang berstatus Terbuka
- Klik Tutup Bulan
- Konfirmasi pada dialog
Setelah ditutup, sistem memblokir posting transaksi ke periode tersebut. Jika ada transaksi draf yang belum diposting di periode tersebut, penutupan akan ditolak.
Melaporkan SPT
Setelah SPT Masa sudah dilaporkan ke DJP:
- Buka detail periode yang berstatus Tutup Bulan
- Klik Lapor SPT
- Konfirmasi pada dialog
Periode dengan status SPT Dilaporkan tidak bisa dibuka kembali.
Membuka Kembali Periode
Periode dengan status Tutup Bulan dapat dibuka kembali:
- Buka detail periode
- Klik Buka Kembali
- Konfirmasi pada dialog
Periode dengan status SPT Dilaporkan tidak bisa dibuka kembali.
Posting Guard
Saat pengguna mencoba memposting transaksi ke bulan yang sudah ditutup, sistem menampilkan pesan error dan transaksi tidak akan diposting. Pastikan periode dalam status Terbuka sebelum memposting transaksi.
Kalender Pajak
Melihat Kalender Pajak
Buka menu Pajak > Kalender Pajak.

Deadline Pajak Standar
| Pajak | Setor | Lapor |
|---|---|---|
| PPN | Akhir bulan berikutnya | Akhir bulan berikutnya |
| PPh 21 | Tgl 15 bulan berikutnya | Tgl 20 bulan berikutnya |
| PPh 23 | Tgl 15 bulan berikutnya | Tgl 20 bulan berikutnya |
| PPh 4(2) | Tgl 15 bulan berikutnya | Tgl 20 bulan berikutnya |
| PPh 25 | Tgl 15 bulan berikutnya | Tgl 20 bulan berikutnya |
Catatan: Deadline penyetoran PPh 21, PPh 23, dan PPh 4(2) berubah dari tanggal 10 menjadi tanggal 15 sesuai PMK 81/2024.
Kalender Tahunan

Menandai Selesai
- Klik deadline yang sudah diselesaikan
- Isi nomor bukti setor/lapor
- Klik Selesai
Setup Komponen Gaji
Melihat Komponen Gaji
Buka menu Penggajian > Komponen Gaji.

Jenis Komponen
| Tipe | Contoh | Pengaruh ke Gaji |
|---|---|---|
| Pendapatan | Gaji Pokok, Tunjangan | Menambah |
| Potongan | BPJS Karyawan, PPh 21 | Mengurangi |
Menambah Komponen
- Klik Komponen Baru

- Isi:
- Nama komponen
- Tipe (Pendapatan/Potongan)
- Basis perhitungan (Fixed/Percentage)
- Kena pajak (Ya/Tidak)
- Klik Simpan
Komponen Standar (dari Seed)
Pendapatan:
- Gaji Pokok
- Tunjangan Jabatan
- Tunjangan Kehadiran
- Tunjangan Makan
- Tunjangan Transport
Potongan:
- BPJS Kesehatan (Karyawan)
- BPJS Ketenagakerjaan JHT (Karyawan)
- BPJS Ketenagakerjaan JP (Karyawan)
- PPh 21
Kelola Karyawan
Melihat Daftar Karyawan
Buka menu Penggajian > Karyawan.

Menambah Karyawan
- Klik Karyawan Baru

- Isi data:
Data Pribadi:
- NIK (Nomor Induk Karyawan)
- Nama lengkap
- Email, telepon, alamat
Data Pajak:
- NPWP
- Status PTKP
Data Kepegawaian:
- Jabatan, departemen
- Tanggal bergabung
- Tipe (Tetap/Kontrak)
Data Bank:
- Nama bank
- Nomor rekening
Data BPJS:
- No. BPJS Kesehatan
- No. BPJS Ketenagakerjaan
- Klik Simpan
Assign Komponen Gaji ke Karyawan
- Buka detail karyawan
- Tab Komponen Gaji
- Klik Tambah Komponen
- Pilih komponen, isi nilai, tanggal efektif, dan tanggal berakhir (opsional)
- Klik Simpan
Satu komponen bisa di-assign lebih dari satu kali ke karyawan yang sama, selama periode tidak tumpang tindih. Ini berguna untuk mencatat perubahan gaji:
- Gaji Pokok Rp 5.000.000 (1 Jan 2025 – 30 Apr 2025)
- Gaji Pokok Rp 6.000.000 (1 Mei 2025 – seterusnya)
Jika tanggal berakhir tidak diisi, assignment berlaku tanpa batas waktu. Sistem akan menolak assignment baru yang periodenya tumpang tindih dengan assignment yang sudah ada.
BPJS
Tarif BPJS 2024
BPJS Kesehatan:
| Pihak | Tarif | Batas UMR |
|---|---|---|
| Perusahaan | 4% | Maks 12 juta |
| Karyawan | 1% | Maks 12 juta |
BPJS Ketenagakerjaan:
| Program | Perusahaan | Karyawan |
|---|---|---|
| JHT | 3.7% | 2% |
| JKK | 0.24-1.74% | - |
| JKM | 0.3% | - |
| JP | 2% | 1% |
Kalkulator BPJS
Buka menu Penggajian > Kalkulator BPJS.

- Masukkan gaji pokok
- Sistem menghitung:
- BPJS Kes (perusahaan + karyawan)
- BPJS TK (JHT, JKK, JKM, JP)
- Total beban perusahaan
- Total potongan karyawan
PPh 21 Karyawan
Melihat Daftar Karyawan
Buka menu Penggajian > Karyawan.

Menambah Karyawan
- Klik Karyawan Baru

- Isi data:
Data Pribadi:
- NIK (Nomor Induk Karyawan)
- Nama lengkap
- Email, telepon, alamat
Data Pajak:
- NPWP
- Status PTKP
Data Kepegawaian:
- Jabatan, departemen
- Tanggal bergabung
- Tipe (Tetap/Kontrak)
Data Bank:
- Nama bank
- Nomor rekening
Data BPJS:
- No. BPJS Kesehatan
- No. BPJS Ketenagakerjaan
- Klik Simpan
Assign Komponen Gaji ke Karyawan
- Buka detail karyawan
- Tab Komponen Gaji
- Klik Tambah Komponen
- Pilih komponen, isi nilai, tanggal efektif, dan tanggal berakhir (opsional)
- Klik Simpan
Satu komponen bisa di-assign lebih dari satu kali ke karyawan yang sama, selama periode tidak tumpang tindih. Ini berguna untuk mencatat perubahan gaji:
- Gaji Pokok Rp 5.000.000 (1 Jan 2025 – 30 Apr 2025)
- Gaji Pokok Rp 6.000.000 (1 Mei 2025 – seterusnya)
Jika tanggal berakhir tidak diisi, assignment berlaku tanpa batas waktu. Sistem akan menolak assignment baru yang periodenya tumpang tindih dengan assignment yang sudah ada.
Kapan Menggunakan Fitur Payroll?
Gunakan Fitur Payroll Untuk:
✅ Gaji karyawan tetap/kontrak dengan kewajiban BPJS ✅ Perusahaan wajib potong PPh 21 ✅ Butuh bukti potong 1721-A1 untuk karyawan ✅ Karyawan perlu akses slip gaji online ✅ Tracking komponen gaji detail (tunjangan, potongan)
Gunakan Transaksi "Bayar Beban Gaji" Untuk:
✅ Bayar kontraktor lepas (tanpa BPJS/PPh 21) ✅ Bonus di luar payroll reguler ✅ Penarikan dana pemilik (bukan gaji karyawan) ✅ Pembayaran ad-hoc yang tidak perlu slip gaji
Perbedaan Akuntansi
| Aspek | Fitur Payroll | Transaksi Simple |
|---|---|---|
| Jurnal | 5 baris (pisah hutang) | 2 baris (langsung bayar) |
| Beban | Gaji bruto + BPJS perusahaan | Nominal transfer saja |
| Kewajiban | Hutang Gaji, BPJS, PPh 21 | Tidak ada hutang |
| Kalkulasi | Otomatis BPJS + PPh 21 | Manual |
| Tax compliance | Otomatis hitung & lapor | Tanggung jawab manual |
| Slip gaji | Generate otomatis | Tidak ada |
| Bukti potong | Generate 1721-A1 | Tidak ada |
Contoh Jurnal: Payroll vs Simple
Fitur Payroll (otomatis):
Dr. Beban Gaji 30.000.000
Dr. Beban BPJS Perusahaan 3.432.000
Cr. Hutang Gaji 26.250.000
Cr. Hutang BPJS 6.432.000
Cr. Hutang PPh 21 750.000
Transaksi Simple:
Dr. Beban Gaji 10.000.000
Cr. Bank 10.000.000
Kesimpulan: Gunakan fitur payroll untuk karyawan tetap. Gunakan transaksi simple hanya untuk pembayaran ad-hoc yang tidak perlu tracking BPJS/PPh 21.
Proses Penggajian
Melihat Daftar Payroll
Buka menu Penggajian > Payroll.

Membuat Payroll Baru
- Klik Payroll Baru

- Isi:
- Periode (bulan/tahun)
- Tanggal pembayaran
- Klik Buat
- Sistem generate slip gaji untuk semua karyawan aktif
Workflow Payroll
DRAFT → CALCULATED → APPROVED → POSTED
| Status | Aksi |
|---|---|
| DRAFT | Edit komponen individual |
| CALCULATED | Review perhitungan |
| APPROVED | Siap bayar |
| POSTED | Jurnal gaji dibuat |
Melihat Detail Payroll
Klik payroll untuk melihat detail:

Informasi per karyawan:
- Gaji pokok
- Tunjangan (jabatan, kehadiran, makan, transport)
- Total pendapatan (bruto)
- BPJS Karyawan
- PPh 21
- Total potongan
- Gaji bersih (take home pay)
Posting Payroll
- Pastikan status APPROVED
- Klik Posting
- Sistem membuat jurnal:
Dr. Beban Gaji xxx Dr. Beban BPJS Perusahaan xxx Cr. Hutang Gaji xxx Cr. Hutang BPJS xxx Cr. Hutang PPh 21 xxx ← hanya jika PPh 21 > 0
Catatan: Baris jurnal dengan nilai nol otomatis dilewatkan. Untuk karyawan UMKM dengan gaji rendah (PPh 21 = 0), jurnal hanya berisi 4 baris tanpa Hutang PPh 21.
Membayar Gaji
Setelah transfer ke rekening karyawan:
- Buka menu Transaksi > Transaksi Baru
- Pilih template Bayar Gaji
- Isi jumlah total gaji bersih
- Posting
Jurnal:
Dr. Hutang Gaji xxx
Cr. Bank xxx
Pembayaran Kewajiban Payroll
Setelah posting payroll, ada 3 kewajiban yang harus dibayar:
1. Bayar Gaji ke Karyawan
Kapan: 1-5 hari kerja setelah akhir bulan Template: Bayar Hutang Gaji
- Buka menu Transaksi > Transaksi Baru
- Pilih template Bayar Hutang Gaji
- Isi:
- Tanggal pembayaran
- Jumlah: Total gaji bersih (dari payroll detail)
- Deskripsi: "Transfer gaji [bulan] [tahun]"
- Referensi: Nomor transaksi bank
- Pilih akun bank
- Klik Simpan & Posting
Jurnal:
Dr. Hutang Gaji xxx
Cr. Bank xxx
2. Bayar BPJS ke Institusi
Kapan: Maksimal tanggal 10 bulan berikutnya Template: Bayar Hutang BPJS
- Buka menu Transaksi > Transaksi Baru
- Pilih template Bayar Hutang BPJS
- Isi:
- Tanggal pembayaran (maks tgl 10)
- Jumlah: Total BPJS (perusahaan + karyawan)
- Deskripsi: "Pembayaran BPJS [bulan] [tahun]"
- Referensi: Nomor billing BPJS
- Pilih akun bank
- Klik Simpan & Posting
Jurnal:
Dr. Hutang BPJS xxx
Cr. Bank xxx
Catatan: Bayar ke BPJS Kesehatan dan BPJS Ketenagakerjaan melalui e-DABU atau virtual account.
3. Setor PPh 21 ke Kas Negara
Catatan: Jika PPh 21 = 0 (semua karyawan di bawah threshold TER), tidak ada hutang PPh 21 yang perlu disetor. SPT Masa PPh 21 nihil tetap wajib dilaporkan.
Kapan: Maksimal tanggal 10 bulan berikutnya Template: Setor PPh 21
- Buka menu Transaksi > Transaksi Baru
- Pilih template Setor PPh 21
- Isi:
- Tanggal penyetoran (maks tgl 10)
- Jumlah: Total PPh 21 yang dipotong
- Deskripsi: "Penyetoran PPh 21 [bulan] [tahun]"
- Referensi: Nomor bukti setor (BPN)
- Pilih akun bank
- Klik Simpan & Posting
Jurnal:
Dr. Hutang PPh 21 xxx
Cr. Bank xxx
Catatan: Bayar melalui e-Billing DJP, lalu lapor SPT Masa PPh 21 maks tanggal 20.
Timeline Kewajiban Payroll
| Tanggal | Aktivitas | Template | Deadline |
|---|---|---|---|
| 25-31 | Posting payroll (jurnal dibuat) | Post Gaji Bulanan | Akhir bulan |
| 1-5 | Transfer gaji ke rekening karyawan | Bayar Hutang Gaji | - |
| Maks 10 | Bayar BPJS ke institusi | Bayar Hutang BPJS | Wajib |
| Maks 10 | Setor PPh 21 ke kas negara | Setor PPh 21 | Wajib |
| Maks 20 | Lapor SPT Masa PPh 21 | (Eksternal DJP) | Wajib |
Layanan Mandiri Karyawan
Metode Perhitungan: TER (PMK 168/2023)
Aplikasi menggunakan metode TER (Tarif Efektif Rata-rata) sesuai PMK 168/2023, berlaku mulai Januari 2024.
Januari–November: PPh 21 bulanan = Gaji Bruto × Tarif TER
Desember: Rekonsiliasi tahunan — PPh 21 Desember = PPh 21 terutang setahun (tarif progresif PP 58/2023) dikurangi total PPh 21 Jan–Nov (TER).
Kategori TER
Status PTKP menentukan kategori TER:
| Kategori | Status PTKP |
|---|---|
| A | TK/0, TK/1, K/0 |
| B | TK/2, TK/3, K/1, K/2 |
| C | K/3, K/I/0, K/I/1, K/I/2, K/I/3 |
Tarif TER ditentukan berdasarkan bracket penghasilan bruto bulanan dalam kategori tersebut (lihat PMK 168/2023 Lampiran A/B/C).
PPh 21 = 0 untuk Gaji Rendah
Untuk karyawan dengan gaji bruto di bawah batas bracket TER terendah, tarif TER = 0% sehingga PPh 21 = Rp 0. Ini umum terjadi di UMKM dengan gaji karyawan di bawah Rp 5.400.000/bulan (Kategori A) atau Rp 6.200.000/bulan (Kategori B).
Saat posting payroll dengan PPh 21 = 0, sistem otomatis melewatkan baris jurnal Hutang PPh 21 karena jurnal dengan nilai nol tidak bermakna. Jurnal yang dihasilkan hanya berisi baris dengan nilai > 0.
Kewajiban setor PPh 21 dan lapor SPT Masa PPh 21 tetap berlaku meskipun nilainya nihil.
Contoh Perhitungan
Karyawan dengan status K/2, gaji bruto Rp 11.253.000:
- Kategori TER: B
- Tarif TER: 2,50%
- PPh 21 bulanan: Rp 11.253.000 × 2,50% = Rp 281.325
Kalkulator PPh 21
Buka menu Penggajian > Kalkulator PPh 21.

- Masukkan:
- Gaji bruto bulanan
- Status PTKP
- Sistem menghitung:
- Kategori TER (A / B / C)
- Tarif TER berdasarkan bracket penghasilan
- PPh 21 bulanan (Bruto × Tarif TER)
Referensi
- PMK 168/2023 — Tarif Efektif Rata-rata PPh 21
- PP 58/2023 — Rekonsiliasi tahunan (tarif progresif)
- PTKP per status (lihat Perpajakan)
Bukti Potong PPh 21
Generate Bukti Potong Tahunan (1721-A1)
- Buka menu Penggajian > Bukti Potong
- Pilih tahun pajak
- Pilih karyawan (atau semua)
- Klik Generate
- Download PDF
Isi Bukti Potong
- Identitas pemotong (perusahaan)
- Identitas penerima (karyawan)
- Rincian penghasilan bruto
- BPJS dan biaya jabatan
- Penghasilan neto
- PTKP
- PKP
- PPh 21 terutang
- PPh 21 dipotong
Contoh Lengkap: Proses Payroll Januari 2025
Skenario
Perusahaan IT memiliki 3 karyawan:
- Budi Santoso - Developer, gaji Rp 10.000.000
- Dewi Lestari - Designer, gaji Rp 10.000.000
- Agus Wijaya - Project Manager, gaji Rp 10.000.000
Data Payroll
| Item | Rumus | Jumlah |
|---|---|---|
| Gaji Bruto | 3 × Rp 10.000.000 | Rp 30.000.000 |
| BPJS Perusahaan | Kes 4% + TK (JHT 3.7%, JKK 0.24%, JKM 0.3%, JP 2%) | Rp 3.432.000 |
| BPJS Karyawan | Kes 1% + JHT 2% + JP 1% | Rp 3.000.000 |
| PPh 21 | Progresif setelah PTKP | Rp 750.000 |
| Gaji Bersih | Bruto - BPJS Karyawan - PPh 21 | Rp 26.250.000 |
Langkah 1: Posting Payroll (31 Januari 2025)
- Buka Penggajian > Payroll
- Klik payroll bulan Januari
- Pastikan status APPROVED
- Klik Posting
Jurnal Otomatis:
Dr. Beban Gaji 30.000.000
Dr. Beban BPJS Perusahaan 3.432.000
Cr. Hutang Gaji 26.250.000
Cr. Hutang BPJS 6.432.000 (perusahaan + karyawan)
Cr. Hutang PPh 21 750.000
Penjelasan:
- Beban total perusahaan: Rp 33.432.000 (masuk P&L bulan Januari)
- Kewajiban total: Rp 33.432.000 (hutang di neraca)
- Uang belum keluar dari bank (masih status hutang)
Langkah 2: Bayar Gaji (1 Februari 2025)
- Buka Transaksi > Transaksi Baru
- Pilih template Bayar Hutang Gaji
- Isi:
- Jumlah: Rp 26.250.000
- Deskripsi: "Transfer gaji Januari 2025"
- Pilih Bank BCA
- Klik Simpan & Posting
Jurnal:
Dr. Hutang Gaji 26.250.000
Cr. Bank BCA 26.250.000
Efek:
- ✅ Hutang Gaji lunas
- ✅ Karyawan terima transfer
- ⏳ Hutang BPJS masih Rp 6.432.000
- ⏳ Hutang PPh 21 masih Rp 750.000
Langkah 3: Bayar BPJS (10 Februari 2025)
- Buka Transaksi > Transaksi Baru
- Pilih template Bayar Hutang BPJS
- Isi:
- Jumlah: Rp 6.432.000
- Deskripsi: "Pembayaran BPJS Januari 2025"
- Referensi: Nomor billing BPJS
- Pilih Bank BCA
- Klik Simpan & Posting
Jurnal:
Dr. Hutang BPJS 6.432.000
Cr. Bank BCA 6.432.000
Efek:
- ✅ Hutang BPJS lunas
- ✅ Kewajiban BPJS selesai
- ⏳ Hutang PPh 21 masih Rp 750.000
Langkah 4: Setor PPh 21 (10 Februari 2025)
- Buka Transaksi > Transaksi Baru
- Pilih template Setor PPh 21
- Isi:
- Jumlah: Rp 750.000
- Deskripsi: "Penyetoran PPh 21 Januari 2025"
- Referensi: Nomor BPN dari e-Billing
- Pilih Bank BCA
- Klik Simpan & Posting
Jurnal:
Dr. Hutang PPh 21 750.000
Cr. Bank BCA 750.000
Efek:
- ✅ Hutang PPh 21 lunas
- ✅ Semua kewajiban payroll selesai
Ringkasan Kas Keluar
| Tanggal | Item | Bank BCA | Status |
|---|---|---|---|
| 1 Feb | Transfer gaji | (Rp 26.250.000) | ✅ |
| 10 Feb | Bayar BPJS | (Rp 6.432.000) | ✅ |
| 10 Feb | Setor PPh 21 | (Rp 750.000) | ✅ |
| Total | Kas Keluar | (Rp 33.432.000) | - |
Validasi: Total kas keluar = Total beban payroll ✅ (akuntansi akrual benar!)
Langkah 5: Lapor SPT Masa PPh 21 (20 Februari 2025)
- Login ke DJP Online (pajak.go.id)
- Pilih e-Filing > SPT Masa PPh 21
- Input data dari aplikasi:
- Jumlah pegawai: 3 orang
- PPh 21 dipotong: Rp 750.000
- PPh 21 disetor: Rp 750.000 (lihat dari jurnal Setor PPh 21)
- Nomor BPN: Dari referensi transaksi
- Submit SPT
Catatan: Aplikasi belum generate SPT otomatis, input manual ke DJP Online.
Tips Penggajian
REST API tersedia untuk integrasi penggajian dengan sistem eksternal.
Komponen Gaji
GET /api/salary-components — daftar komponen aktif
POST /api/salary-components — buat komponen baru
PUT /api/salary-components/{id} — update komponen
DELETE /api/salary-components/{id} — nonaktifkan komponen
Karyawan
GET /api/employees — daftar karyawan (filter: active, status)
POST /api/employees — buat karyawan
GET /api/employees/{id} — detail dengan komponen gaji
PUT /api/employees/{id} — update data karyawan
POST /api/employees/{id}/salary-components — assign komponen gaji (endDate opsional)
PUT /api/employees/{id}/salary-components/{componentId} — update assignment
Payroll Run
GET /api/payroll — daftar payroll (filter: year, status)
POST /api/payroll — buat payroll baru (DRAFT)
GET /api/payroll/{id} — detail dengan semua detail karyawan
POST /api/payroll/{id}/calculate — hitung PPh 21 (TER Jan-Nov / rekonsiliasi Des), set CALCULATED
POST /api/payroll/{id}/approve — set APPROVED
POST /api/payroll/{id}/post — posting ke jurnal
DELETE /api/payroll/{id} — hapus (hanya DRAFT)
1721-A1 dan Ringkasan PPh 21
GET /api/payroll/employees/{id}/1721-a1?year=2025 — data 1721-A1 per karyawan
GET /api/payroll/pph21/summary?year=2025 — ringkasan PPh 21 seluruh karyawan
Response 1721-A1 berisi:
- Data karyawan (NPWP, NIK, PTKP, masa kerja)
- Perhitungan (penghasilan bruto, biaya jabatan, neto, PTKP, PKP, PPh 21 terutang)
- Breakdown bulanan (gross salary dan PPh 21 per bulan)
Jadwal Payroll Otomatis
GET /api/payroll/schedule — lihat konfigurasi jadwal
POST /api/payroll/schedule — buat/update jadwal
DELETE /api/payroll/schedule — hapus jadwal
Request body:
{
"dayOfMonth": 28,
"baseSalary": 5000000,
"jkkRiskClass": 1,
"autoCalculate": true,
"autoApprove": false,
"active": true
}
dayOfMonth: Tanggal setiap bulan untuk auto-create payroll (1–28)baseSalary: Gaji pokok yang digunakan untuk kalkulasijkkRiskClass: Kelas risiko JKK (1–5)autoCalculate: Otomatis hitung BPJS + PPh 21 setelah createautoApprove: Otomatis approve setelah kalkulasi- Posting selalu manual — posting berarti pembayaran sudah dilakukan
Scheduler berjalan harian pukul 06:30. Saat startup, sistem juga memeriksa bulan sebelumnya dan bulan berjalan untuk mengejar ketinggalan jika server sempat mati.
Skenario: Retrofit Data Payroll 2025
- Buat komponen gaji:
POST /api/salary-components(GAJI_POKOK, EARNING, isTaxable=true) - Buat karyawan:
POST /api/employees(nama, NPWP, NIK, PTKP, hireDate) - Assign komponen dengan dua periode:
POST /api/employees/{id}/salary-components(amount=11253000, effectiveDate=2025-01-01, endDate=2025-04-30)POST /api/employees/{id}/salary-components(amount=5000000, effectiveDate=2025-05-01)
- Buat 12 payroll run:
POST /api/payroll(periode 2025-01 s/d 2025-12) - Hitung masing-masing:
POST /api/payroll/{id}/calculate - Generate 1721-A1:
GET /api/payroll/employees/{id}/1721-a1?year=2025
Autentikasi: Bearer token dengan scope tax-export:read.
Jenis Industri
Klasifikasi Industri
| Kategori | Karakteristik | Contoh |
|---|---|---|
| Jasa | Menjual keahlian/waktu | Konsultan, Software House |
| Dagang | Beli-jual barang | Toko online, Retailer |
| Manufaktur | Produksi barang | Pabrik, F&B Production |
| Pendidikan | Layanan edukasi | Universitas, Kursus |
Perbedaan Utama
| Aspek | Jasa | Dagang | Manufaktur |
|---|---|---|---|
| Produk | Tidak berwujud | Barang jadi | Barang diproduksi |
| Inventory | Tidak ada | Ada (barang dagang) | Ada (bahan baku + WIP + barang jadi) |
| HPP | Tidak ada | Harga beli barang | Biaya produksi |
| Revenue recognition | Saat jasa selesai | Saat barang diserahkan | Saat barang diserahkan |
Industri yang Didukung
1. Industri Jasa (IT Services PKP)
Karakteristik:
- Pendapatan berbasis proyek atau retainer
- Tidak ada persediaan barang
- Biaya utama: gaji karyawan
- Wajib PPN (PKP)
Fitur utama:
- Client Management
- Project Management dengan Milestone
- Invoice dan Penagihan
- Profitabilitas per Klien/Proyek
Seed pack: it-service
Lihat: Industri Jasa
2. Industri Dagang (Online Seller)
Karakteristik:
- Pendapatan dari penjualan barang
- Persediaan dengan metode FIFO atau Weighted Average
- HPP dihitung dari harga beli
- Multi-channel (Tokopedia, Shopee, dll)
Fitur utama:
- Product Management
- Inventory Transactions (Purchase, Sale, Adjustment)
- Stock Reports
- Profitabilitas Produk
Seed pack: online-seller
Lihat: Industri Dagang
3. Industri Manufaktur (Coffee Shop) [TBD]
Karakteristik:
- Produksi barang dari bahan baku
- Bill of Materials (BOM)
- Kalkulasi HPP produksi
- Persediaan multi-level (bahan baku, WIP, barang jadi)
Fitur utama:
- BOM (Bill of Materials)
- Production Orders
- Cost Calculation
- Inventory multi-level
Seed pack: coffee-shop
Lihat: Industri Manufaktur
4. Industri Pendidikan (Campus) [TBD]
Karakteristik:
- Pendapatan berbasis semester/tahun ajaran
- Tagihan ke mahasiswa (SPP, Uang Pangkal)
- Beasiswa dan potongan
- Piutang mahasiswa dengan cicilan
Fitur utama:
- Student Management
- Billing (SPP, Praktikum, Wisuda)
- Payment dan Installments
- Scholarship Management
- Receivables Aging per Student
Seed pack: campus
Lihat: Industri Pendidikan
Perbedaan Praktik Akuntansi
Chart of Accounts
Setiap industri memiliki COA yang disesuaikan:
| Industri | Akun Khusus |
|---|---|
| Jasa | WIP Proyek, Pendapatan Diterima Dimuka |
| Dagang | Persediaan Barang Dagang, HPP |
| Manufaktur | Bahan Baku, WIP, Barang Jadi, Overhead |
| Pendidikan | Piutang Mahasiswa, Pendapatan SPP |
Template Transaksi
Template disesuaikan dengan alur bisnis industri:
Jasa:
- Pendapatan Jasa + PPN
- Terima DP Proyek
- Pengakuan Pendapatan Milestone
Dagang:
- Pembelian Barang Dagang
- Penjualan dengan HPP
- Retur Pembelian/Penjualan
Manufaktur:
- Pembelian Bahan Baku
- Production Order
- Barang Jadi Masuk Gudang
Pendidikan:
- Tagihan SPP
- Terima Pembayaran SPP
- Beasiswa
Laporan Khusus
| Industri | Laporan Khusus |
|---|---|
| Jasa | Profitabilitas Proyek, Profitabilitas Klien |
| Dagang | Kartu Stok, Valuasi Persediaan, Profitabilitas Produk |
| Manufaktur | Production Cost Report, BOM Costing |
| Pendidikan | Receivables Aging per Student, Revenue per Program |
Karakteristik Industri Jasa
Ciri Khas
- Produk tidak berwujud - Menjual keahlian dan waktu
- Project-based - Pendapatan dari proyek dengan milestone
- Time & Material - Biaya berdasarkan jam kerja
- Retainer - Pendapatan berulang bulanan
- Tidak ada inventory - Tidak ada persediaan barang
Alur Bisnis Tipikal
Klien → Proposal → Kontrak → Proyek → Milestone → Invoice → Pembayaran
Client Management
Melihat Daftar Klien
Buka menu Proyek > Klien di sidebar.

Fitur daftar klien:
- Pencarian — cari berdasarkan nama atau kode klien
- Filter status — tampilkan semua, hanya Aktif, atau hanya Nonaktif
- Paginasi — navigasi halaman via HTMX (tanpa reload)
Menambah Klien Baru
- Klik Klien Baru di halaman daftar klien
- Isi data klien:
| Field | Keterangan | Wajib |
|---|---|---|
| Kode | Kode unik klien, misal CLT-001 | Ya |
| Nama | Nama perusahaan/perorangan | Ya |
| Kontak | Nama contact person | Tidak |
| Alamat email | Tidak | |
| Telepon | Nomor telepon | Tidak |
| Alamat | Alamat lengkap | Tidak |
| Catatan | Catatan tambahan | Tidak |
- Isi data pajak (bagian Informasi Pajak):
| Field | Keterangan |
|---|---|
| Tipe Identitas | NPWP untuk PKP, NIK untuk non-PKP |
| NPWP | Format: XX.XXX.XXX.X-XXX.XXX (15-16 digit) |
| NITKU | Nomor Identitas Tempat Kegiatan Usaha (22 karakter: NPWP + 6 digit kode cabang) |
| NIK | Nomor Induk Kependudukan (16 digit), untuk pembeli non-PKP |
- Klik Simpan
Data pajak klien (NPWP, NITKU) diperlukan untuk ekspor e-Faktur dan e-Bupot ke Coretax. Saat transaksi dicatat menggunakan template PPN, data counterparty pada detail pajak otomatis terisi dari data klien yang terhubung via proyek.
Detail Klien
Klik nama klien di daftar untuk membuka halaman detail. Informasi yang ditampilkan:
- Informasi Klien — kontak, email, telepon, alamat, catatan, tanggal dibuat
- Informasi Pajak — tipe identitas (NPWP/NIK), NPWP, NITKU, NIK
- Proyek — daftar proyek yang terhubung dengan klien (link ke detail proyek)
- Invoice — daftar invoice klien (nomor, tanggal, jatuh tempo, jumlah, status)
- Ringkasan Pajak — jumlah e-Faktur, e-Bupot, total DPP, total PPN, total PPh
Dari halaman detail, Anda dapat:
- Lihat Laporan — buka laporan statement klien
- Edit — ubah data klien
- Nonaktifkan/Aktifkan — ubah status aktif klien
Mengaktifkan/Menonaktifkan Klien
Klien yang tidak aktif tetap tersimpan di database tetapi tidak muncul di dropdown pemilihan klien. Untuk mengubah status:
- Buka halaman detail klien
- Klik Nonaktifkan (untuk menonaktifkan) atau Aktifkan (untuk mengaktifkan kembali)
Hak Akses
| Permission | Fungsi |
|---|---|
| CLIENT_VIEW | Melihat daftar dan detail klien |
| CLIENT_CREATE | Menambah klien baru |
| CLIENT_EDIT | Mengubah data klien |
| CLIENT_DELETE | Menghapus klien |
Project Management
Melihat Daftar Proyek
Buka menu Proyek > Daftar Proyek.

Detail Proyek
Klik pada proyek untuk melihat detail. Informasi yang ditampilkan:
- Status proyek
- Progress milestone
- Total nilai kontrak
- Pendapatan yang sudah diakui
- Invoice yang sudah diterbitkan
Menambah Proyek Baru
-
Klik Proyek Baru
-
Isi:
- Kode proyek
- Nama proyek
- Klien (pilih dari dropdown)
- Nilai kontrak
- Tanggal mulai & target selesai
- Deskripsi
-
Tab Milestone - Tambah milestone:
- Nama milestone
- Bobot (%)
- Target tanggal
-
Klik Simpan
Workflow Proyek
DRAFT → ACTIVE → COMPLETED
| Status | Arti |
|---|---|
| DRAFT | Proyek belum dimulai |
| ACTIVE | Proyek sedang berjalan |
| COMPLETED | Proyek selesai |
Update Progress Milestone
- Buka detail proyek
- Klik milestone
- Update status:
- Tanggal aktual selesai
- Catatan
- Klik Simpan
Saat milestone selesai, pendapatan dapat diakui proporsional sesuai bobot.
Template Transaksi Jasa
Template Standar
| Template | Fungsi |
|---|---|
| Pendapatan Jasa + PPN | Pendapatan dengan PPN 11% |
| Pendapatan Jasa tanpa PPN | Pendapatan tanpa PPN |
| Terima DP Proyek | DP masuk Pendapatan Diterima Dimuka |
| Pengakuan Pendapatan | Recognize revenue dari DDM |
| Beban Operasional | Pengeluaran operasional |
Melihat Template
Buka menu Pengaturan > Template.

Detail Template

Invoice & Penagihan
Melihat Daftar Invoice
Buka menu Invoice > Daftar Invoice untuk melihat semua invoice yang telah dibuat.
Membuat Invoice
- Klik Invoice Baru
- Pilih klien
- Pilih proyek (opsional)
- Isi item invoice:
- Deskripsi
- Quantity
- Harga satuan
- Sistem menghitung:
- Subtotal
- PPN (jika PKP)
- Total
- Klik Simpan
Workflow Invoice
DRAFT → SENT → PAID
Mencatat Pembayaran Invoice
Saat klien membayar:
- Buka invoice
- Klik Terima Pembayaran
- Isi:
- Tanggal terima
- Jumlah (bisa partial)
- Rekening penerima
- Klik Simpan
Jurnal yang dibuat:
Dr. Bank xxx
Cr. Piutang Usaha xxx
Profitabilitas Proyek
Laporan Profitabilitas Proyek
Buka menu Laporan > Profitabilitas Proyek untuk melihat analisis margin per proyek.
Metrik yang ditampilkan:
- Total revenue proyek
- Total cost (gaji, vendor, dll)
- Gross profit
- Profit margin (%)
Laporan Profitabilitas Klien
Buka menu Laporan > Profitabilitas Klien untuk melihat analisis revenue dan margin per klien.
Agregasi per klien:
- Total revenue dari klien
- Total cost
- Profit
- Jumlah proyek
Karakteristik Industri Dagang
Ciri Khas
- Jual barang jadi - Tidak ada proses produksi
- Inventory management - Persediaan barang dagang
- HPP (Harga Pokok Penjualan) - Biaya barang yang dijual
- Multi-channel - Marketplace, toko fisik, website
Alur Bisnis Tipikal
Supplier → Purchase → Inventory → Sale → Customer
Manajemen Produk
Melihat Daftar Produk
Buka menu Inventori > Produk.

Menambah Produk Baru
- Klik Produk Baru

- Isi:
- SKU (Stock Keeping Unit)
- Nama produk
- Kategori
- Harga jual
- Metode costing (FIFO / Weighted Average)
- Akun persediaan
- Akun HPP
- Klik Simpan
Kategori Produk
Buka menu Inventori > Kategori.

Metode Penilaian Persediaan
FIFO (First In First Out)
Barang yang masuk lebih dulu, keluar lebih dulu.
Contoh:
| Tanggal | Transaksi | Qty | Harga/Unit | Total |
|---|---|---|---|---|
| 1 Jan | Beli | 10 | Rp 100.000 | Rp 1.000.000 |
| 5 Jan | Beli | 10 | Rp 110.000 | Rp 1.100.000 |
| 10 Jan | Jual | 15 | - | - |
Perhitungan HPP (10 Jan):
- 10 unit dari pembelian 1 Jan @ Rp 100.000 = Rp 1.000.000
- 5 unit dari pembelian 5 Jan @ Rp 110.000 = Rp 550.000
- Total HPP = Rp 1.550.000
Sisa Stok:
- 5 unit @ Rp 110.000 = Rp 550.000
Weighted Average
Harga rata-rata tertimbang.
Contoh:
| Tanggal | Transaksi | Qty | Harga/Unit | Total | Avg Cost |
|---|---|---|---|---|---|
| 1 Jan | Beli | 10 | Rp 100.000 | Rp 1.000.000 | Rp 100.000 |
| 5 Jan | Beli | 10 | Rp 110.000 | Rp 1.100.000 | Rp 105.000 |
| 10 Jan | Jual | 15 | - | - | - |
Perhitungan Average Cost (5 Jan):
- Total nilai: Rp 1.000.000 + Rp 1.100.000 = Rp 2.100.000
- Total qty: 10 + 10 = 20 unit
- Average = Rp 2.100.000 / 20 = Rp 105.000/unit
Perhitungan HPP (10 Jan):
- 15 unit @ Rp 105.000 = Rp 1.575.000
Sisa Stok:
- 5 unit @ Rp 105.000 = Rp 525.000
Transaksi Pembelian
Contoh 1: Pembelian iPhone 15 Pro
Konteks: Toko Gadget Murah membeli 10 unit iPhone 15 Pro dari distributor resmi Erajaya.
Langkah 1: Buka Form Pembelian
Menu Inventori > Transaksi > Pembelian Baru

Langkah 2: Isi Data
- Tanggal: 5 Januari 2024
- Supplier: Erajaya
- Produk: iPhone 15 Pro (IP15PRO)
- Quantity: 10 unit
- Harga Beli: Rp 15.000.000/unit
- Total: Rp 150.000.000
- Referensi: PO-001
- Rekening: Bank BCA
Langkah 3: Simpan & Posting

Jurnal Otomatis:
Dr. 1.1.20 Persediaan Barang Dagang Rp 150.000.000
Cr. 1.1.01 Bank BCA Rp 150.000.000
Impact:
- Stok iPhone 15 Pro: 0 → 10 unit
- Nilai persediaan: +Rp 150.000.000
- Kas: -Rp 150.000.000
Contoh 2: Pembelian Samsung S24
Konteks: Membeli 20 unit Samsung Galaxy S24 dari Samsung Indonesia.

Data:
- Produk: Samsung Galaxy S24 (SGS24)
- Quantity: 20 unit
- Harga: Rp 12.000.000/unit
- Total: Rp 240.000.000
- Referensi: PO-002

Impact:
- Stok Samsung S24: 0 → 20 unit
- Nilai persediaan: +Rp 240.000.000
- Total persediaan: Rp 390.000.000
Contoh 3: Pembelian Accessories (USB-C Cable & Phone Case)
Konteks: Melengkapi stok accessories untuk bundling dengan smartphone.
Pembelian 1: USB-C Cable

- Produk: USB-C Cable (USBC)
- Quantity: 100 unit
- Harga: Rp 25.000/unit
- Total: Rp 2.500.000
- Referensi: PO-003

Pembelian 2: Phone Case

- Produk: Phone Case (CASE)
- Quantity: 200 unit
- Harga: Rp 15.000/unit
- Total: Rp 3.000.000
- Referensi: PO-004

Total Investasi Persediaan: Rp 395.500.000
Transaksi Penjualan
Contoh 1: Penjualan iPhone via Tokopedia
Konteks: Terjual 5 unit iPhone 15 Pro via Tokopedia, harga jual Rp 19 juta/unit.
Langkah 1: Buka Form Penjualan
Menu Inventori > Transaksi > Penjualan Baru

Langkah 2: Isi Data
- Tanggal: 15 Januari 2024
- Channel: Tokopedia
- Produk: iPhone 15 Pro (IP15PRO)
- Quantity: 5 unit
- Harga Jual: Rp 19.000.000/unit
- Total: Rp 95.000.000
- Referensi: TOPED-001
Langkah 3: Sistem Hitung HPP (FIFO)
Sistem otomatis ambil dari layer pembelian:
- Layer 1 (PO-001): 10 unit @ Rp 15.000.000
- Keluar: 5 unit @ Rp 15.000.000
- HPP: Rp 75.000.000
Langkah 4: Simpan & Posting

Jurnal Otomatis (2 entries):
Entry 1: Revenue Recognition
Dr. 1.1.01 Bank BCA Rp 95.000.000
Cr. 4.1.01 Penjualan Rp 95.000.000
Entry 2: COGS Recognition
Dr. 5.1.01 HPP Rp 75.000.000
Cr. 1.1.20 Persediaan Rp 75.000.000
Impact:
- Stok iPhone 15 Pro: 10 → 5 unit
- Revenue: Rp 95.000.000
- HPP: Rp 75.000.000
- Gross Profit: Rp 20.000.000
- Margin: 21.1%
Contoh 2: Penjualan Samsung via Shopee
Konteks: Terjual 8 unit Samsung S24 via Shopee, harga Rp 14 juta/unit.

Data:
- Channel: Shopee
- Produk: Samsung S24 (SGS24)
- Quantity: 8 unit
- Harga Jual: Rp 14.000.000/unit
- Total: Rp 112.000.000
- Referensi: SHOPEE-001
HPP Calculation (FIFO):
- Layer 1 (PO-002): 20 unit @ Rp 12.000.000
- Keluar: 8 unit @ Rp 12.000.000
- HPP: Rp 96.000.000

Jurnal:
Dr. Bank Rp 112.000.000
Cr. Penjualan Rp 112.000.000
Dr. HPP Rp 96.000.000
Cr. Persediaan Rp 96.000.000
Impact:
- Stok Samsung S24: 20 → 12 unit
- Revenue: Rp 112.000.000
- HPP: Rp 96.000.000
- Gross Profit: Rp 16.000.000
- Margin: 14.3%
Contoh 3: Penjualan Accessories
Penjualan USB-C Cable via Tokopedia:

- Quantity: 30 unit @ Rp 50.000 = Rp 1.500.000
- HPP: 30 × Rp 25.000 = Rp 750.000
- Gross Profit: Rp 750.000 (50% margin)

Penjualan Phone Case via Shopee:

- Quantity: 50 unit @ Rp 35.000 = Rp 1.750.000
- HPP: 50 × Rp 15.000 = Rp 750.000
- Gross Profit: Rp 1.000.000 (57.1% margin)

Laporan Persediaan
Stok Barang
Buka menu Inventori > Stok.

Transaksi Inventori
Buka menu Inventori > Transaksi.

Laporan Saldo Stok
Buka menu Inventori > Laporan > Saldo Stok.

Laporan Mutasi Stok
Buka menu Inventori > Laporan > Mutasi Stok.

Menampilkan kartu stok per produk:
- Tanggal transaksi
- Tipe (masuk/keluar)
- Qty
- Harga
- Saldo running
Profitabilitas Produk
Karakteristik Manufaktur
Ciri Khas
- Proses Produksi - Mengolah bahan baku menjadi barang jadi
- Bill of Materials (BOM) - Resep/formula produksi
- Production Orders - Perintah produksi dengan tracking cost
- Multi-stage Inventory - Bahan baku, WIP, dan barang jadi
- COGM (Cost of Goods Manufactured) - Harga pokok produksi
- Component Consumption - Konsumsi komponen saat produksi
Alur Bisnis Tipikal
Supplier → Raw Materials → Production → Finished Goods → Customer
Contoh Kasus: Kedai Kopi Nusantara
Kedai kopi & pastry yang memproduksi:
- Roti & pastry (Croissant, Roti Bakar Coklat)
- Menggunakan bahan baku: Tepung, Butter, Telur, Coklat, dll
- Produksi batch sesuai BOM
- Jual hasil produksi ke konsumen
Bill of Materials (BOM)
Konsep BOM
BOM adalah resep/formula produksi yang mendefinisikan:
- Barang jadi yang dihasilkan
- Komponen (bahan baku) yang dibutuhkan
- Kuantitas setiap komponen
- Output quantity per batch
Contoh: BOM Croissant
Output: 24 pcs Croissant
Komponen:
- Tepung Terigu: 3.00 kg
- Butter: 1.20 kg
- Telur: 24.00 butir
- Ragi: 50.00 gram
- Garam: 30.00 gram
Melihat Daftar BOM
Buka menu Inventori > Bill of Materials.

Detail BOM
Klik pada BOM untuk melihat detail:

Informasi yang ditampilkan:
- Kode BOM: BOM-CRS
- Produk Output: Croissant
- Output Quantity: 24 pcs per batch
- Daftar Komponen: Tabel dengan nama komponen, quantity, dan satuan
Menambah BOM Baru
-
Klik BOM Baru
-
Tab Informasi Dasar:
- Kode BOM (unik)
- Nama BOM (deskriptif)
- Produk Jadi (pilih dari dropdown)
- Output Quantity (berapa unit yang dihasilkan per batch)
- Status (Aktif/Nonaktif)
-
Tab Komponen:
- Klik Tambah Komponen
- Pilih produk (bahan baku)
- Isi quantity yang dibutuhkan
- Ulangi untuk semua komponen
-
Klik Simpan
Contoh: BOM Roti Bakar Coklat
Output: 20 pcs
Komponen:
- Tepung Terigu: 2.50 kg
- Butter: 1.00 kg
- Telur: 20.00 butir
- Ragi: 40.00 gram
- Garam: 25.00 gram
- Coklat Blok: 0.80 kg
Detail BOM Croissant

Detail BOM Roti Bakar Coklat

Production Order
Konsep Production Order
Production Order adalah perintah produksi untuk membuat barang jadi sesuai BOM.
Workflow:
DRAFT → IN_PROGRESS → COMPLETED
| Status | Arti | Aksi |
|---|---|---|
| DRAFT | Order belum dimulai | Edit, Start, Delete |
| IN_PROGRESS | Produksi sedang berjalan | Complete, Cancel |
| COMPLETED | Produksi selesai | View only (sudah ada transaksi inventory) |
Melihat Daftar Production Order
Buka menu Inventori > Production Orders.

Detail Production Order
Klik pada order untuk melihat detail:

Informasi yang ditampilkan:
- No. Order: PROD-001
- Tanggal Order: Kapan order dibuat
- BOM: BOM yang digunakan
- Produk Jadi: Croissant
- Jumlah Produksi: 24 pcs
- Status: COMPLETED
- Ringkasan Biaya: (tampil setelah COMPLETED)
- Total Biaya Komponen: Rp 106.920
- Jumlah Produksi: 24 pcs
- Harga Pokok per Unit: Rp 4.455
Tabel Komponen yang Dibutuhkan:
- Menampilkan semua komponen dari BOM
- Kebutuhan per BOM
- Total kebutuhan (dikalikan quantity order)
Membuat Production Order Baru
-
Klik Production Order Baru
-
Isi data:
- No. Order: Otomatis (PROD-XXX)
- Tanggal Order: Tanggal pembuatan order
- BOM: Pilih BOM yang akan diproduksi
- Quantity: Berapa batch yang akan diproduksi
- Target Selesai: (opsional) Target completion date
- Catatan: (opsional) Informasi tambahan
-
Klik Simpan → Status: DRAFT
Workflow Produksi
1. Start Production
Dari halaman detail order (status DRAFT):
- Klik Mulai Produksi
- Konfirmasi: "Pastikan semua komponen tersedia"
- Status berubah: DRAFT → IN_PROGRESS
Tidak ada transaksi inventory pada tahap ini.
2. Complete Production
Dari halaman detail order (status IN_PROGRESS):
- Klik Selesaikan Produksi
- Konfirmasi: "Komponen akan dikurangi dari stok dan produk jadi akan ditambahkan"
- Status berubah: IN_PROGRESS → COMPLETED
Transaksi Inventory Otomatis:
a. PRODUCTION_OUT - Konsumsi komponen:
- Tepung Terigu: -3.00 kg @ Rp 12.000 = -Rp 36.000
- Butter: -1.20 kg @ Rp 45.000 = -Rp 54.000
- Telur: -24 butir @ Rp 1.500 = -Rp 36.000
- Ragi: -50 gram @ Rp 30 = -Rp 1.500
- Garam: -30 gram @ Rp 14 = -Rp 420
Total: Rp 127.920
b. PRODUCTION_IN - Penerimaan barang jadi:
+ Croissant: 24 pcs @ Rp 4.455 = Rp 106.920
Unit Cost Calculation:
Unit Cost = Total Component Cost / Output Quantity
Unit Cost = Rp 106.920 / 24 pcs = Rp 4.455/pcs
Jurnal Otomatis:
Dr. 1.1.21 Persediaan Barang Jadi - Roti Rp 106.920
Cr. 1.1.20 Persediaan Bahan Baku - Roti Rp 106.920
Kalkulasi Biaya Produksi
Panduan lengkap untuk bisnis manufaktur sederhana (Home Industry, Bakery, Coffee Shop, Catering).
Manajemen Produk & Kategori
Kategori Produk
Buka menu Inventori > Kategori Produk.

Kategori Tipikal Manufaktur:
| Kategori | Jenis | Contoh |
|---|---|---|
| Bahan Baku Kopi | Raw Material | Biji Kopi, Susu, Gula Aren |
| Bahan Baku Roti | Raw Material | Tepung, Butter, Telur |
| Produk Jadi - Roti | Finished Goods | Croissant, Roti Bakar |
Daftar Produk
Buka menu Inventori > Produk.

Produk dibagi menjadi:
- Bahan Baku - Input untuk produksi (Tepung, Butter, Telur, Coklat)
- Barang Jadi - Output produksi (Croissant, Roti Bakar Coklat)
Menambah Produk Baru
-
Klik Produk Baru
-
Isi data produk:
- Kode: SKU unik (contoh: TEPUNG-TERIGU)
- Nama: Nama produk
- Kategori: Pilih kategori (Bahan Baku / Produk Jadi)
- Satuan: pcs, kg, liter, gram
- Metode Costing:
- FIFO (First In First Out)
- WEIGHTED_AVERAGE (Rata-rata Tertimbang)
- Track Inventory: ✓ (aktifkan untuk tracking stok)
- Minimum Stock: Alert stok rendah
- Harga Jual: Untuk barang jadi
- Akun:
- Inventory Account (1.1.20 - Persediaan Bahan Baku / 1.1.21 - Persediaan Barang Jadi)
- COGS Account (5.1.01 - HPP Bahan Baku / 5.2.01 - HPP Barang Jadi)
- Sales Account (4.1.02 - Pendapatan Penjualan)
-
Klik Simpan
Perbedaan Bahan Baku vs Barang Jadi:
| Aspek | Bahan Baku | Barang Jadi |
|---|---|---|
| Inventory Account | 1.1.20 Persediaan Bahan Baku | 1.1.21 Persediaan Barang Jadi |
| COGS Account | 5.1.01 HPP Bahan Baku | 5.2.01 HPP Barang Jadi |
| Harga Jual | 0 (tidak dijual langsung) | Sesuai harga pasar |
| Digunakan dalam | BOM sebagai komponen | BOM sebagai output |
Transaksi Inventory
Daftar Transaksi
Buka menu Inventori > Transaksi.

Tipe Transaksi:
| Tipe | Arti | Direction | Digunakan Untuk |
|---|---|---|---|
| PURCHASE | Pembelian | IN (+) | Beli bahan baku dari supplier |
| SALE | Penjualan | OUT (-) | Jual barang jadi ke customer |
| PRODUCTION_IN | Produksi Masuk | IN (+) | Terima barang jadi dari produksi |
| PRODUCTION_OUT | Produksi Keluar | OUT (-) | Konsumsi komponen untuk produksi |
| ADJUSTMENT_IN | Penyesuaian Masuk | IN (+) | Koreksi stok (selisih fisik) |
| ADJUSTMENT_OUT | Penyesuaian Keluar | OUT (-) | Koreksi stok (kerusakan, expired) |
Filter Transaksi
Gunakan filter untuk mempersempit pencarian:
- Produk: Pilih produk tertentu
- Tipe Transaksi: Pilih tipe (PURCHASE, SALE, PRODUCTION_IN, dll)
- Periode: Tanggal mulai - tanggal akhir
Pembelian Bahan Baku
Contoh: Pembelian Tepung Terigu
Menu Inventori > Transaksi > Pembelian Baru
Data:
- Tanggal: 1 Januari 2024
- Supplier: Bogasari
- Produk: Tepung Terigu (TEPUNG-TERIGU)
- Quantity: 50 kg
- Harga Beli: Rp 12.000/kg
- Total: Rp 600.000
- Referensi: PO-001
Jurnal Otomatis:
Dr. 1.1.20 Persediaan Bahan Baku - Roti Rp 600.000
Cr. 1.1.01 Bank BCA Rp 600.000
Impact:
- Stok Tepung Terigu: 0 → 50 kg
- Nilai persediaan: +Rp 600.000
- Kas: -Rp 600.000
Penjualan Barang Jadi
Contoh: Penjualan Croissant
Menu Inventori > Transaksi > Penjualan Baru
Data:
- Tanggal: 10 Januari 2024
- Customer: Walk-in customer
- Produk: Croissant (CROISSANT)
- Quantity: 15 pcs
- Harga Jual: Rp 25.000/pcs
- Total: Rp 375.000
- Referensi: INV-001
Sistem hitung HPP otomatis (FIFO/Weighted Average):
- 15 pcs @ Rp 4.455 = Rp 66.825
Jurnal Otomatis:
Dr. 1.1.01 Bank BCA Rp 375.000
Cr. 4.1.02 Pendapatan Penjualan Roti Rp 375.000
Dr. 5.2.01 HPP Barang Jadi - Roti Rp 66.825
Cr. 1.1.21 Persediaan Barang Jadi - Roti Rp 66.825
Margin Analysis:
- Revenue: Rp 375.000
- COGS: Rp 66.825
- Gross Profit: Rp 308.175
- Margin: 82.18%
Stok Barang
Melihat Saldo Stok
Buka menu Inventori > Stok Barang.

Informasi yang ditampilkan:
- Kode Produk: SKU
- Nama Produk: Nama produk
- Kategori: Kategori produk
- Stok: Quantity tersedia
- Biaya Rata-rata: Average cost per unit
- Total Nilai: Quantity × Average Cost
- Status: Normal / Stok Rendah (jika di bawah minimum)
Contoh Stok Setelah Produksi & Penjualan:
| Produk | Stok | Avg Cost | Total Nilai |
|---|---|---|---|
| Croissant | 9 pcs | Rp 4.455 | Rp 40.095 |
| Roti Bakar Coklat | 8 pcs | Rp 5.123 | Rp 40.984 |
| Tepung Terigu | 44.50 kg | Rp 12.000 | Rp 534.000 |
| Butter | 46.60 kg | Rp 45.000 | Rp 2.097.000 |
Detail Stok per Produk
Klik pada produk untuk melihat:
- Informasi produk
- Saldo stok saat ini
- History transaksi
- FIFO layers (jika menggunakan FIFO)
Contoh Skenario Lengkap: Produksi Croissant
Langkah 1: Pembelian Bahan Baku
Beli semua komponen yang dibutuhkan:
- Tepung Terigu: 50 kg @ Rp 12.000 = Rp 600.000
- Butter: 50 kg @ Rp 45.000 = Rp 2.250.000
- Telur: 100 butir @ Rp 1.500 = Rp 150.000
- Ragi: 500 gram @ Rp 30 = Rp 15.000
- Garam: 1000 gram @ Rp 14 = Rp 14.000
Total Investasi: Rp 3.029.000
Langkah 2: Buat BOM
BOM: BOM-CRS - Croissant
Output: 24 pcs
Komponen:
- Tepung: 3.00 kg
- Butter: 1.20 kg
- Telur: 24 butir
- Ragi: 50 gram
- Garam: 30 gram
Langkah 3: Buat Production Order
Order: PROD-001
- BOM: BOM-CRS
- Quantity: 24 pcs (1 batch)
- Status: DRAFT
Langkah 4: Mulai Produksi
Klik Mulai Produksi → Status: IN_PROGRESS
(Tidak ada transaksi inventory pada tahap ini)
Langkah 5: Selesaikan Produksi
Klik Selesaikan Produksi → Status: COMPLETED
Transaksi Otomatis:
PRODUCTION_OUT (konsumsi):
- Tepung: -3.00 kg
- Butter: -1.20 kg
- Telur: -24 butir
- Ragi: -50 gram
- Garam: -30 gram
PRODUCTION_IN (hasil):
- Croissant: +24 pcs @ Rp 4.455
Biaya Produksi:
- Total Component Cost: Rp 106.920
- Unit Cost: Rp 4.455/pcs
Langkah 6: Jual Barang Jadi
Jual 15 pcs Croissant @ Rp 25.000 = Rp 375.000
Auto-COGS:
- HPP: 15 × Rp 4.455 = Rp 66.825
- Gross Profit: Rp 308.175
- Margin: 82.18%
Sisa Stok:
- Croissant: 24 - 15 = 9 pcs @ Rp 4.455
Best Practices Manufaktur
1. Setup BOM yang Akurat
- Ukur komponen dengan presisi - Pastikan quantity di BOM sesuai dengan realita produksi
- Update BOM jika ada perubahan resep - Jangan biarkan BOM kadaluarsa
- Dokumentasi - Tambahkan catatan/deskripsi untuk BOM yang kompleks
2. Production Order Workflow
- Pastikan stok cukup sebelum start production - Cek stok komponen terlebih dahulu
- Complete production tepat waktu - Jangan biarkan order IN_PROGRESS terlalu lama
- Track tanggal completion - Untuk analisis lead time produksi
3. Inventory Management
- Pembelian bahan baku - Beli dalam batch optimal (tidak terlalu banyak/sedikit)
- Monitor stok minimum - Set minimum stock untuk alert stok rendah
- Stock opname berkala - Lakukan adjustment untuk koreksi selisih fisik vs sistem
- FIFO untuk barang yang mudah rusak - Susu, telur, produk segar
- Weighted Average untuk barang tahan lama - Tepung, gula, garam
4. Costing & Profitability
- Review unit cost secara berkala - Cek apakah harga beli komponen naik
- Evaluasi margin - Pastikan margin cukup untuk cover overhead
- Analisis produk profitability - Fokus pada produk dengan margin tinggi
- Adjust harga jual jika perlu - Jika cost naik, pertimbangkan naikkan harga
5. Laporan & Monitoring
- Cek laporan stok - Weekly/monthly untuk monitor inventory value
- Laporan profitabilitas - Monthly untuk review product mix
- Track production volume - Berapa batch per bulan
- Monitor waste/scrap - Jika ada komponen terbuang, catat sebagai adjustment
Troubleshooting
Stok Komponen Tidak Cukup
Problem: Saat complete production, muncul error "Insufficient stock"
Solusi:
- Cek stok komponen di Inventori > Stok Barang
- Beli komponen yang kurang via Transaksi > Pembelian
- Atau kurangi quantity production order
Unit Cost Tidak Sesuai Ekspektasi
Problem: Unit cost terlalu tinggi/rendah
Penyebab:
- Harga beli komponen berubah
- Ada waste/scrap yang tidak tercatat
- BOM quantity tidak akurat
Solusi:
- Review harga beli komponen di transaksi pembelian
- Update BOM jika ada perubahan resep
- Catat waste sebagai adjustment (PRODUCTION_OUT tambahan)
FIFO vs Weighted Average
Kapan pakai FIFO:
- Barang yang mudah rusak (susu, telur, produk segar)
- Harga komponen sering berubah
- Perlu tracking detail per batch pembelian
Kapan pakai Weighted Average:
- Barang tahan lama (tepung, gula, garam)
- Harga relatif stabil
- Lebih simple untuk inventory management
Integrasi dengan Modul Lain
Perpajakan (Modul 4)
- PPN atas pembelian bahan baku - Jika supplier PKP
- PPN atas penjualan barang jadi - Jika bisnis sudah PKP
- PPh 23 atas jasa produksi - Jika menggunakan jasa maklon
Lihat 04-perpajakan.md untuk detail.
Penggajian (Modul 5)
- Gaji karyawan produksi - Baker, chef, operator
- Overhead cost - Alokasi gaji ke production cost (advanced)
Lihat 05-penggajian.md untuk detail.
Aset Tetap (Modul 3)
- Mesin produksi - Oven, mixer, dll
- Depresiasi - Alokasi ke production overhead (advanced)
Lihat 03-aset-tetap.md untuk detail.
Referensi
Akun COA untuk Manufaktur
| Kode | Nama Akun | Fungsi |
|---|---|---|
| 1.1.20 | Persediaan Bahan Baku | Inventory bahan baku |
| 1.1.21 | Persediaan Barang Jadi | Inventory finished goods |
| 1.1.22 | Persediaan WIP | Work in Process (advanced) |
| 4.1.02 | Pendapatan Penjualan | Revenue dari penjualan |
| 5.1.01 | HPP Bahan Baku | COGS bahan baku |
| 5.2.01 | HPP Barang Jadi | COGS finished goods |
| 5.3.01 | Biaya Produksi | Direct labor & overhead |
Lihat 12-lampiran-akun.md untuk daftar lengkap.
Template Transaksi
| Template | Fungsi |
|---|---|
| Pembelian Bahan Baku | Purchase raw materials |
| Transfer Produksi | PRODUCTION_OUT & PRODUCTION_IN |
| Penjualan + COGS | Sale dengan auto-COGS |
| Stock Adjustment | Koreksi stok (kerusakan, selisih) |
Lihat 12-lampiran-template.md untuk detail.
Kesimpulan
Modul manufaktur aplikasi ini cocok untuk:
- ✅ Home industry (kue, roti, katering)
- ✅ Bakery & coffee shop
- ✅ Small-scale manufacturing
- ✅ Simple BOM-based production
Fitur utama:
- Bill of Materials (BOM) management
- Production Order workflow dengan cost tracking
- Auto-COGS calculation
- FIFO & Weighted Average costing
- Production & profitability reports
Next Steps:
- Setup kategori produk (bahan baku vs barang jadi)
- Input master produk
- Buat BOM untuk setiap produk jadi
- Beli bahan baku
- Mulai produksi via production order
- Jual barang jadi dengan auto-COGS
Untuk pertanyaan lebih lanjut, lihat modul terkait di manual ini atau hubungi support.
Laporan Produksi
Laporan Saldo Stok
Menu Inventori > Laporan > Saldo Stok

Menampilkan snapshot stok semua produk pada tanggal tertentu.
Kolom:
- Produk
- Kategori
- Quantity
- Unit Cost
- Total Value
Export: PDF / Excel
Laporan Penilaian Persediaan
Menu Inventori > Laporan > Penilaian Persediaan

Menampilkan valuasi persediaan:
- FIFO: Breakdown per layer dengan tanggal, quantity, unit cost
- Weighted Average: Breakdown per transaksi dengan running average
Filter:
- Periode tanggal
- Kategori produk
- Metode costing
Laporan Profitabilitas Produk
Menu Inventori > Laporan > Profitabilitas Produk

Analisis margin per produk:
| Produk | Units Sold | Revenue | COGS | Gross Profit | Margin % |
|---|---|---|---|---|---|
| Croissant | 15 pcs | Rp 375.000 | Rp 66.825 | Rp 308.175 | 82.18% |
| Roti Bakar Coklat | 12 pcs | Rp 240.000 | Rp 61.476 | Rp 178.524 | 74.39% |
Insight:
- Produk mana yang paling profitable
- Evaluasi harga jual vs cost
- Keputusan produk mix
Karakteristik Industri Pendidikan
Ciri Khas
- Revenue berbasis semester - Pendapatan SPP, Uang Pangkal, Biaya Praktikum
- Accounts Receivable Management - Piutang mahasiswa dengan cicilan
- Scholarship & Discounts - Beasiswa prestasi dan kurang mampu
- Program-based Revenue - Laporan pendapatan per program studi
- Academic Calendar - Periode fiskal mengikuti tahun ajaran (Juli-Juni)
- Payroll Kompleks - Gaji dosen tetap, honorarium dosen tidak tetap, gaji karyawan
Alur Bisnis Tipikal
Pendaftaran → Tagihan SPP → Pembayaran (Lunas/Cicilan) → Beasiswa → Laporan Piutang
Contoh Kasus: STMIK Tazkia
Sekolah Tinggi Manajemen Informatika & Komputer dengan:
- 3 Program studi: Teknik Informatika (S1), Sistem Informasi (S1), Manajemen Informatika (D3)
- Pendapatan: SPP, Uang Pangkal, Biaya Praktikum, Wisuda
- Beasiswa: Prestasi (50%), Tidak Mampu (75%)
- Tahun ajaran: Juli-Juni
Chart of Accounts Khusus Pendidikan
Melihat Daftar Akun
Buka menu Akuntansi > Bagan Akun.

Akun Piutang Mahasiswa
| Kode | Nama Akun | Normal Balance |
|---|---|---|
| 1.1.10 | Piutang SPP Mahasiswa | Debit |
| 1.1.11 | Piutang Uang Pangkal | Debit |
| 1.1.12 | Piutang Biaya Praktikum | Debit |
| 1.1.13 | Piutang Wisuda | Debit |
Akun Pendapatan
| Kode | Nama Akun | Normal Balance |
|---|---|---|
| 4.1.01 | Pendapatan SPP | Kredit |
| 4.1.02 | Pendapatan Uang Pangkal | Kredit |
| 4.1.03 | Pendapatan Biaya Praktikum | Kredit |
| 4.1.04 | Pendapatan Wisuda | Kredit |
| 4.1.05 | Pendapatan Ujian | Kredit |
| 4.1.06 | Pendapatan Sertifikasi | Kredit |
Akun Beban Akademik
| Kode | Nama Akun | Normal Balance |
|---|---|---|
| 5.1.01 | Beban Gaji Dosen Tetap | Debit |
| 5.1.02 | Beban Honorarium Dosen Tidak Tetap | Debit |
| 5.1.10 | Beban Bahan Praktikum | Debit |
| 5.1.11 | Beban Pemeliharaan Lab | Debit |
Akun Beasiswa
| Kode | Nama Akun | Normal Balance |
|---|---|---|
| 5.3.01 | Beban Beasiswa Prestasi | Debit |
| 5.3.02 | Beban Beasiswa Tidak Mampu | Debit |

Template Transaksi Pendidikan
Melihat Template
Buka menu Pengaturan > Template.

Template Standar
| Template | Kategori | Fungsi |
|---|---|---|
| Tagihan SPP Mahasiswa | INCOME | Membuat piutang SPP per semester |
| Pembayaran SPP | RECEIPT | Mencatat pembayaran SPP (lunas/cicilan) |
| Tagihan Uang Pangkal | INCOME | Membuat piutang uang pangkal mahasiswa baru |
| Pembayaran Uang Pangkal | RECEIPT | Mencatat pembayaran uang pangkal |
| Tagihan Biaya Praktikum | INCOME | Membuat piutang biaya praktikum |
| Pembayaran Biaya Praktikum | RECEIPT | Mencatat pembayaran biaya praktikum |
| Tagihan Wisuda | INCOME | Membuat piutang biaya wisuda |
| Pembayaran Wisuda | RECEIPT | Mencatat pembayaran wisuda |
| Beasiswa Prestasi | EXPENSE | Memberikan beasiswa (mengurangi piutang) |
| Beasiswa Tidak Mampu | EXPENSE | Memberikan beasiswa (mengurangi piutang) |
Template Gaji & Operasional
| Template | Kategori | Fungsi |
|---|---|---|
| Gaji Dosen Tetap | EXPENSE | Pembayaran gaji bulanan dosen tetap |
| Honorarium Dosen Tidak Tetap | EXPENSE | Honorarium per SKS dosen tidak tetap |
| Gaji Karyawan | EXPENSE | Pembayaran gaji karyawan administrasi |
| Bayar BPJS Dosen | EXPENSE | BPJS Kesehatan & Ketenagakerjaan dosen |
| Bayar BPJS Karyawan | EXPENSE | BPJS Kesehatan & Ketenagakerjaan karyawan |
| Setor PPh 21 | PAYMENT | Penyetoran PPh 21 ke kas negara |

Transaksi Harian: Contoh Praktis
Transaksi 1: Tagihan SPP Semester Ganjil
Konteks: Ahmad Fauzi (NIM 2201010001) mahasiswa Teknik Informatika semester 3, tagihan SPP semester ganjil 2024/2025.
Data Mahasiswa:
- NIM: 2201010001
- Nama: Ahmad Fauzi
- Program Studi: Teknik Informatika (S1)
- Semester: 3
- SPP per semester: Rp 7.500.000
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Tagihan SPP Mahasiswa
Isi Data:
- Tanggal: 1 Juli 2024
- Jumlah: Rp 7.500.000
- Keterangan: Tagihan SPP Semester Ganjil 2024/2025 - Ahmad Fauzi (2201010001)
- Referensi: INV-SPP-2024-001
Jurnal Otomatis:
Dr. 1.1.10 Piutang SPP Mahasiswa Rp 7.500.000
Cr. 4.1.01 Pendapatan SPP Rp 7.500.000
Impact:
- Piutang SPP mahasiswa: +Rp 7.500.000
- Pendapatan SPP diakui: +Rp 7.500.000
- Outstanding receivable untuk Ahmad Fauzi: Rp 7.500.000
Transaksi 2: Pembayaran SPP (Lunas)
Konteks: Ahmad Fauzi membayar lunas SPP semester ganjil via transfer bank.
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Pembayaran SPP
Isi Data:
- Tanggal: 5 Juli 2024
- Jumlah: Rp 7.500.000
- Rekening: Bank BCA
- Keterangan: Pembayaran SPP Lunas - Ahmad Fauzi (2201010001)
- Referensi: PMT-SPP-2024-001
Jurnal Otomatis:
Dr. 1.1.02 Bank BCA Rp 7.500.000
Cr. 1.1.10 Piutang SPP Mahasiswa Rp 7.500.000
Impact:
- Kas bertambah: +Rp 7.500.000
- Piutang SPP berkurang: -Rp 7.500.000
- Outstanding receivable Ahmad Fauzi: Rp 0 (LUNAS)
Transaksi 3: Tagihan Uang Pangkal Mahasiswa Baru
Konteks: Siti Aminah (NIM 2401010001) mahasiswa baru Sistem Informasi, tagihan uang pangkal.
Data Mahasiswa:
- NIM: 2401010001
- Nama: Siti Aminah
- Program Studi: Sistem Informasi (S1)
- Semester: 1 (Mahasiswa Baru)
- Uang Pangkal: Rp 5.000.000
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Tagihan Uang Pangkal
Isi Data:
- Tanggal: 10 Juli 2024
- Jumlah: Rp 5.000.000
- Keterangan: Tagihan Uang Pangkal - Siti Aminah (2401010001) - Sistem Informasi
- Referensi: INV-UP-2024-001
Jurnal Otomatis:
Dr. 1.1.11 Piutang Uang Pangkal Rp 5.000.000
Cr. 4.1.02 Pendapatan Uang Pangkal Rp 5.000.000
Impact:
- Piutang Uang Pangkal: +Rp 5.000.000
- Pendapatan Uang Pangkal: +Rp 5.000.000
- Outstanding receivable Siti Aminah: Rp 5.000.000
Transaksi 4: Pembayaran Uang Pangkal (Cicilan 1)
Konteks: Siti Aminah membayar cicilan pertama Rp 2.500.000 (50% dari total).
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Pembayaran Uang Pangkal
Isi Data:
- Tanggal: 15 Juli 2024
- Jumlah: Rp 2.500.000
- Rekening: Bank Mandiri
- Keterangan: Pembayaran UP Cicilan 1/2 - Siti Aminah (2401010001)
- Referensi: PMT-UP-2024-001-1
Jurnal Otomatis:
Dr. 1.1.03 Bank Mandiri Rp 2.500.000
Cr. 1.1.11 Piutang Uang Pangkal Rp 2.500.000
Impact:
- Kas bertambah: +Rp 2.500.000
- Piutang berkurang: -Rp 2.500.000
- Outstanding receivable Siti Aminah: Rp 2.500.000 (masih kurang)
Transaksi 5: Beasiswa Prestasi
Konteks: Budi Hartono (NIM 2201020001) mahasiswa MI semester 5 mendapat beasiswa prestasi 50% karena IPK 3.8.
Data:
- NIM: 2201020001
- Nama: Budi Hartono
- Program: Manajemen Informatika (D3)
- Tagihan SPP: Rp 6.000.000
- Beasiswa: 50% = Rp 3.000.000
Langkah 1: Buat Tagihan SPP
Template Tagihan SPP Mahasiswa
- Jumlah: Rp 6.000.000
- Keterangan: Tagihan SPP Semester Ganjil - Budi Hartono (2201020001)
Langkah 2: Berikan Beasiswa
Menu Transaksi > Buat Transaksi > Pilih template Beasiswa Prestasi
Isi Data:
- Tanggal: 1 Juli 2024
- Jumlah: Rp 3.000.000
- Keterangan: Beasiswa Prestasi 50% IPK 3.8 - Budi Hartono (2201020001)
- Referensi: BEASISWA-PRESTASI-001
Jurnal Otomatis:
Dr. 5.3.01 Beban Beasiswa Prestasi Rp 3.000.000
Cr. 1.1.10 Piutang SPP Mahasiswa Rp 3.000.000
Impact:
- Beban beasiswa: +Rp 3.000.000
- Piutang SPP berkurang: -Rp 3.000.000
- Outstanding receivable Budi: Rp 3.000.000 (setelah beasiswa)

Transaksi 6: Beasiswa Tidak Mampu
Konteks: Agus Wijaya (NIM 2301010003) mahasiswa SI semester 3 mendapat beasiswa kurang mampu 75%.
Data:
- NIM: 2301010003
- Nama: Agus Wijaya
- Program: Sistem Informasi (S1)
- Tagihan SPP: Rp 7.500.000
- Beasiswa: 75% = Rp 5.625.000
Langkah 1: Buat Tagihan SPP
Template Tagihan SPP Mahasiswa
- Jumlah: Rp 7.500.000
- Keterangan: Tagihan SPP Semester Ganjil - Agus Wijaya (2301010003)
Langkah 2: Berikan Beasiswa
Menu Transaksi > Buat Transaksi > Pilih template Beasiswa Tidak Mampu
Isi Data:
- Tanggal: 1 Juli 2024
- Jumlah: Rp 5.625.000
- Keterangan: Beasiswa Tidak Mampu 75% - Agus Wijaya (2301010003)
- Referensi: BEASISWA-TM-001
Jurnal Otomatis:
Dr. 5.3.02 Beban Beasiswa Tidak Mampu Rp 5.625.000
Cr. 1.1.10 Piutang SPP Mahasiswa Rp 5.625.000
Impact:
- Beban beasiswa: +Rp 5.625.000
- Piutang SPP berkurang: -Rp 5.625.000
- Outstanding receivable Agus: Rp 1.875.000 (setelah beasiswa 75%)
Transaksi 7: Gaji Dosen Tetap
Konteks: Pembayaran gaji bulanan Agustus 2024 untuk Dr. Siti Nurjanah M.Kom (dosen tetap TI).
Data Dosen:
- NIK: EMP-D001
- Nama: Dr. Siti Nurjanah M.Kom
- Jabatan: Dosen Tetap Teknik Informatika
- Gaji Pokok: Rp 8.500.000
- Tunjangan Fungsional: Rp 2.000.000
- Total Gaji: Rp 10.500.000
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Gaji Dosen Tetap
Isi Data:
- Tanggal: 25 Agustus 2024
- Jumlah: Rp 10.500.000
- Rekening: Bank BCA
- Keterangan: Gaji Agustus 2024 - Dr. Siti Nurjanah M.Kom (EMP-D001)
- Referensi: PAYROLL-DSN-202408-001
Jurnal Otomatis:
Dr. 5.1.01 Beban Gaji Dosen Tetap Rp 10.500.000
Cr. 1.1.02 Bank BCA Rp 10.500.000
Catatan: Untuk penggajian lengkap dengan BPJS dan PPh 21, lihat Bab 5: Penggajian.
Transaksi 8: Honorarium Dosen Tidak Tetap
Konteks: Pembayaran honorarium untuk dosen tidak tetap yang mengajar 4 SKS di bulan Agustus.
Data:
- Nama: Ir. Hendra Saputra M.T
- Mata Kuliah: Algoritma & Pemrograman (4 SKS)
- Honorarium: Rp 150.000/SKS
- Total: 4 SKS × Rp 150.000 = Rp 600.000
Langkah:
Menu Transaksi > Buat Transaksi > Pilih template Honorarium Dosen Tidak Tetap
Isi Data:
- Tanggal: 30 Agustus 2024
- Jumlah: Rp 600.000
- Rekening: Bank BCA
- Keterangan: Honorarium 4 SKS Agustus 2024 - Ir. Hendra Saputra M.T
- Referensi: HON-DSN-202408-001
Jurnal Otomatis:
Dr. 5.1.02 Beban Honorarium Dosen Tidak Tetap Rp 600.000
Cr. 1.1.02 Bank BCA Rp 600.000
Daftar Transaksi
Semua transaksi yang telah dibuat dapat dilihat di menu Akuntansi > Transaksi.

Laporan Keuangan Khusus Pendidikan
Laporan Laba Rugi
Buka menu Laporan > Laporan Laba Rugi.

Pendapatan Operasional:
- Pendapatan SPP
- Pendapatan Uang Pangkal
- Pendapatan Biaya Praktikum
- Pendapatan Wisuda
Beban Akademik:
- Beban Gaji Dosen Tetap
- Beban Honorarium Dosen Tidak Tetap
- Beban Bahan Praktikum
- Beban Pemeliharaan Lab
Beban Kemahasiswaan:
- Beban Beasiswa Prestasi
- Beban Beasiswa Tidak Mampu

Neraca (Balance Sheet)
Buka menu Laporan > Neraca.

Aset Lancar - Piutang:
- Piutang SPP Mahasiswa
- Piutang Uang Pangkal
- Piutang Biaya Praktikum
- Piutang Wisuda

Interpretasi:
- Piutang SPP tinggi → Banyak mahasiswa belum bayar/cicilan
- Piutang Uang Pangkal tinggi → Mahasiswa baru yang belum lunas
- Aging Analysis → Perlu strategi penagihan untuk piutang > 90 hari
Laporan Pendapatan per Program Studi
Konsep:
Laporan ini memecah pendapatan berdasarkan program studi untuk analisis profitabilitas.
Cara Manual (via Keterangan Transaksi):
Pastikan setiap transaksi pendapatan mencantumkan kode program di keterangan:
[TI]untuk Teknik Informatika[SI]untuk Sistem Informasi[MI]untuk Manajemen Informatika
Contoh:
Tagihan SPP Semester Ganjil 2024/2025 - Ahmad Fauzi (2201010001) - [TI]
Export & Analisis:
- Buka Laporan > Buku Besar > Akun 4.1.01 (Pendapatan SPP)
- Filter periode (1 semester)
- Export ke Excel
- Pivot table dengan kolom:
- Program (extract dari keterangan)
- Total Pendapatan
- Jumlah Mahasiswa
- Rata-rata per Mahasiswa
Hasil Analisis Contoh:
| Program | Total Pendapatan SPP | Jumlah Mahasiswa | Avg per Mhs |
|---|---|---|---|
| Teknik Informatika (S1) | Rp 375.000.000 | 50 | Rp 7.500.000 |
| Sistem Informasi (S1) | Rp 300.000.000 | 40 | Rp 7.500.000 |
| Manajemen Informatika (D3) | Rp 180.000.000 | 30 | Rp 6.000.000 |
| Total | Rp 855.000.000 | 120 | Rp 7.125.000 |

Laporan Piutang Mahasiswa
Receivables Aging Report
Konsep:
Analisis umur piutang untuk identifikasi mahasiswa yang perlu ditagih.
Kategori:
- Current (0-30 hari): Baru jatuh tempo
- 30-60 hari: Perlu reminder
- 60-90 hari: Perlu teguran
- > 90 hari: Perlu tindakan tegas (surat peringatan, blokir KRS)
Cara Manual:
- Buka Laporan > Buku Besar > Akun 1.1.10 (Piutang SPP)
- Export transaksi
- Analisis di Excel:
- Hitung selisih hari dari tanggal tagihan
- Group berdasarkan aging bucket
- Sort by amount descending
Contoh Hasil:
| NIM | Nama | Jumlah Piutang | Tgl Tagihan | Umur (Hari) | Status |
|---|---|---|---|---|---|
| 2201010005 | Rina Wati | Rp 7.500.000 | 01-Jul-24 | 95 | Overdue |
| 2301010007 | Hendra Saputra | Rp 3.750.000 | 15-Jul-24 | 80 | Overdue |
| 2401010002 | Dewi Lestari | Rp 7.500.000 | 01-Aug-24 | 35 | Current |
Enkripsi Dokumen & PII
Field-Level Encryption
Aplikasi mengenkripsi data sensitif (PII) menggunakan AES-256-GCM:
Data yang dienkripsi:
- NPWP karyawan
- Nomor rekening bank
- Alamat
- Nomor BPJS
- Nomor telepon
Document Storage Encryption
Dokumen yang diupload (struk, invoice, bukti potong) dienkripsi:
- Encryption at rest
- Unique key per document
- Backward compatible dengan dokumen lama
Implikasi untuk User
- Data terenkripsi tidak bisa di-query langsung di database
- Export data tetap menampilkan data asli (untuk authorized user)
- Backup database tetap aman (data terenkripsi)
Audit Log Keamanan
Apa yang Di-log?
| Aktivitas | Contoh |
|---|---|
| Login | User login/logout, failed attempts |
| Data Access | View data sensitif |
| Data Modification | Create, Update, Delete |
| Export | Download report, export data |
| Security Events | Password change, role change |
Melihat Audit Log
Buka menu Pengaturan > Audit Log.

Filter yang tersedia:
- Tanggal (dari-sampai)
- User
- Tipe aktivitas
- Entity yang diakses
Retention Policy
- Audit log disimpan minimal 2 tahun
- Log tidak bisa dihapus oleh user biasa
- Hanya ADMIN yang bisa mengakses audit log
Kebijakan Data (GDPR/UU PDP)
Panduan fitur keamanan dan kepatuhan regulasi (GDPR, UU PDP).
Kebijakan Data (GDPR / UU PDP)
Prinsip yang Diimplementasikan
| Prinsip | Implementasi |
|---|---|
| Lawfulness | Consent management |
| Purpose limitation | Data hanya untuk tujuan yang dinyatakan |
| Data minimization | Hanya kumpulkan data yang diperlukan |
| Accuracy | User bisa update data sendiri |
| Storage limitation | Retention policy |
| Integrity | Encryption, audit log |
| Accountability | Audit trail |
Data Subject Management
Buka menu Pengaturan > Data Subjects.

Fitur:
- Register data subject (karyawan, klien)
- Track consent
- Manage data processing activities
Privacy Settings
Buka menu Pengaturan > Privacy.

Konfigurasi:
- Data retention period
- Consent requirements
- Data masking rules
Keamanan Password
Kebijakan Password
| Requirement | Value |
|---|---|
| Minimum length | 12 karakter |
| Uppercase | Minimal 1 |
| Lowercase | Minimal 1 |
| Number | Minimal 1 |
| Special char | Minimal 1 |
Account Lockout
| Parameter | Value |
|---|---|
| Max failed attempts | 5 |
| Lockout duration | 30 menit |
| Reset after | Successful login |
Password Reset
- User request reset via "Lupa Password"
- Sistem kirim link ke email
- Link valid 1 jam
- User set password baru
Rate Limiting
Login Endpoint
| Parameter | Value |
|---|---|
| Max requests | 10 per menit |
| Block duration | 5 menit |
API Endpoints
| Parameter | Value |
|---|---|
| Max requests | 100 per menit |
| Block duration | 1 menit |
Data Anonymization
Kapan Digunakan?
- Data subject request deletion
- Retention period expired
- Test/development environment
Proses
- Identifikasi data subject
- Anonymize PII fields:
- Nama → "Anonymized User #123"
- NPWP → "XX.XXX.XXX.X-XXX.XXX"
- Alamat → "Anonymized Address"
- Retain non-PII untuk reporting
Data yang TIDAK di-anonymize
- Transaction amounts
- Account codes
- Dates
- Aggregated reports
Breach Response
Prosedur Breach
- Detect - Sistem mendeteksi anomali
- Contain - Isolasi sistem terdampak
- Assess - Evaluasi scope dan impact
- Notify - Lapor ke:
- Regulator (72 jam untuk GDPR)
- Data subjects yang terdampak
- Remediate - Perbaiki vulnerability
- Document - Catat seluruh proses
Monitoring
Sistem memonitor:
- Unusual login patterns
- Bulk data access
- Failed authentication spikes
- API abuse
Compliance Checklist
GDPR
- [x] Lawful basis for processing
- [x] Privacy notice
- [x] Consent management
- [x] Data subject rights (access, rectification, erasure)
- [x] Data breach notification procedure
- [x] Encryption at rest
- [x] Audit logging
UU PDP (Indonesia)
- [x] Persetujuan pemrosesan
- [x] Hak akses data pribadi
- [x] Hak koreksi
- [x] Hak penghapusan
- [x] Keamanan data
- [ ] Consent management UI (pending)
- [ ] DPO appointment (organizational)
Tips Keamanan
- Strong passwords - Gunakan password manager
- Regular review - Audit log review mingguan
- Principle of least privilege - Berikan akses minimal
- Update software - Patch security updates
- Backup encrypted - Backup database yang sudah terenkripsi
- Train users - Edukasi tentang phishing
Lihat Juga
- Setup Awal - User management
- Penggajian - Data PII karyawan
- Tutorial Akuntansi - Audit trail transaksi
Ekspor Data Subjek (DSAR)
Apa itu DSAR?
Data Subject Access Request - Hak subjek data untuk mendapatkan salinan data pribadinya.
Proses DSAR
- Terima request dari data subject
- Verifikasi identitas
- Generate export:
- Data pribadi
- History transaksi terkait
- Log aktivitas
- Deliver dalam format portable (JSON/PDF)
Batas Waktu
- GDPR: 30 hari
- UU PDP: 3×24 jam
Cara Generate Export
- Buka Pengaturan > Data Subjects
- Cari data subject
- Klik Export Data
- Sistem generate file
- Download dan deliver ke subject
Konsep Rekonsiliasi Bank
Apa Itu Rekonsiliasi Bank
Rekonsiliasi bank adalah proses mencocokkan catatan transaksi di buku besar (book) dengan mutasi rekening koran dari bank. Tujuannya memastikan bahwa saldo kas di pembukuan sesuai dengan saldo aktual di bank.
Mengapa Diperlukan
Saldo buku dan saldo bank sering berbeda karena:
| Penyebab | Contoh | Ada di |
|---|---|---|
| Biaya administrasi bank | Biaya admin bulanan Rp 15.000 | Bank saja |
| Pendapatan bunga | Bunga deposito yang belum dicatat | Bank saja |
| Cek beredar (outstanding check) | Cek yang sudah dicatat tapi belum dicairkan | Buku saja |
| Transfer belum dicatat | Pembayaran masuk yang belum di-input | Bank saja |
Rekonsiliasi mengidentifikasi selisih ini sehingga pembukuan dapat dikoreksi.
Alur Kerja
1. Import CSV 2. Buat Rekonsiliasi 3. Pencocokan 4. Laporan
dari bank (pilih statement) (auto/manual) (print/export)
Konfigurasi Parser Bank
Parser Bawaan
Aplikasi menyediakan parser bawaan untuk bank-bank utama Indonesia. Buka menu Rekonsiliasi Bank > Konfigurasi Parser.

Setiap parser mendefinisikan posisi kolom dalam file CSV: kolom tanggal, keterangan, debit, kredit, dan saldo.
Parser bawaan:
| Bank | Format Tanggal | Kolom |
|---|---|---|
| BCA | dd/MM/yyyy | Tanggal, Keterangan, Cabang, Debit, Credit, Saldo |
| Mandiri | dd/MM/yyyy | Tanggal, Keterangan, Debit, Kredit, Saldo |
| BNI | dd-MMM-yyyy | Tanggal, Keterangan, Cabang, Debit, Kredit, Saldo |
| BSI | dd/MM/yyyy | Tanggal, Keterangan, Debit, Kredit, Saldo |
| CIMB | dd/MM/yyyy | Tanggal, Keterangan, Debit, Kredit, Saldo |
Custom Parser
Jika bank tidak tersedia dalam daftar, buat parser kustom. Buka Konfigurasi Parser > Parser Baru.

Field yang perlu diisi:
- Tipe Bank: CUSTOM
- Nama Config: Nama deskriptif (contoh: "Bank Jatim CSV")
- Kolom Tanggal: Index kolom tanggal (dimulai dari 0)
- Kolom Keterangan: Index kolom deskripsi transaksi
- Format Tanggal: Pattern Java DateTimeFormatter (contoh:
dd/MM/yyyy)
Import Mutasi Bank
Persiapan File CSV
Download mutasi rekening dari internet banking dalam format CSV. Pastikan file memiliki header dan format sesuai dengan parser yang dipilih.
Contoh CSV BCA (bca-statement-202401.csv):
Tanggal,Keterangan,Cabang,Debit,Credit,Saldo
01/01/2024,"Setoran Modal Awal 2024",0316,,,500000000.00
15/01/2024,"Transfer Masuk - Konsultasi Core Banking",0316,,196200000.00,696200000.00
15/01/2024,"Transfer Keluar - JetBrains License",0316,3330000.00,,692870000.00
31/01/2024,"Transfer Keluar - AWS Cloud",0316,5550000.00,,687320000.00
31/01/2024,"Biaya Admin Bank BCA",0316,15000.00,,687305000.00
Form Import
Buka menu Rekonsiliasi Bank > Import Mutasi.

Isi data import:
- Rekening Bank: Pilih rekening (contoh: BCA - 1234567890)
- Parser Config: Pilih parser sesuai bank
- Periode Mulai: Tanggal awal mutasi (01/01/2024)
- Periode Akhir: Tanggal akhir mutasi (31/01/2024)
- File CSV: Upload file yang sudah didownload
Klik Import untuk memproses.
Daftar Mutasi
Setelah import, mutasi tampil di menu Rekonsiliasi Bank > Daftar Mutasi.

Detail Mutasi
Klik pada mutasi untuk melihat detail item yang berhasil di-parse.

Informasi yang ditampilkan:
- Bank: BCA
- Total Item: 5 transaksi
- Tabel Item: Tanggal, keterangan, debit/kredit, saldo
Proses Rekonsiliasi
Membuat Rekonsiliasi Baru
Buka menu Rekonsiliasi Bank > Rekonsiliasi Baru.

Pilih mutasi bank yang akan direkonsiliasi dari dropdown, lalu klik Buat Rekonsiliasi.
Detail Rekonsiliasi
Setelah dibuat, halaman detail menampilkan ringkasan:

Informasi yang ditampilkan:
- Status: IN_PROGRESS / COMPLETED
- Saldo Bank: Saldo akhir menurut bank (Rp 687.305.000)
- Saldo Buku: Saldo akhir menurut pembukuan
- Item Cocok: Jumlah transaksi yang sudah dicocokkan
- Selisih: Perbedaan antara saldo bank dan buku
Auto-Match (Pencocokan Otomatis)
Klik tombol Auto-Match untuk menjalankan pencocokan otomatis 3 tahap:
| Tahap | Metode | Kriteria |
|---|---|---|
| 1. Exact Match | Tanggal + jumlah persis sama | Tanggal dan nominal harus identik |
| 2. Fuzzy Date | Jumlah sama, tanggal berdekatan | Nominal identik, selisih tanggal maks 3 hari |
| 3. Keyword Match | Kata kunci di keterangan | Mencocokkan kata kunci keterangan bank vs buku |

Contoh hasil auto-match dengan data PT ArtiVisi:
| # | Item Bank | Jumlah | Match | Item Buku |
|---|---|---|---|---|
| 1 | Setoran Modal Awal 2024 | Rp 500.000.000 | Exact | Setoran Modal Awal 2024 |
| 2 | Transfer Masuk - Konsultasi Core Banking | Rp 196.200.000 | Exact | Konsultasi Core Banking - Milestone 1 |
| 3 | Transfer Keluar - JetBrains License | Rp 3.330.000 | Exact | JetBrains IntelliJ License 2024 |
| 4 | Transfer Keluar - AWS Cloud | Rp 5.550.000 | Exact | AWS Cloud Services Jan 2024 |
| 5 | Biaya Admin Bank BCA | Rp 15.000 | Bank Only | (tidak ada di buku) |
Manual Match
Item yang tidak ter-match otomatis dapat dicocokkan secara manual:
- Klik item bank yang belum cocok
- Pilih transaksi buku yang sesuai
- Konfirmasi pencocokan
Mark Bank-Only / Book-Only
Untuk item yang memang hanya ada di satu sisi:
-
Bank Only: Transaksi yang ada di bank tapi belum dicatat di buku. Contoh: Biaya Admin Bank BCA Rp 15.000 — perlu dibuat jurnal penyesuaian:
Dr. 6.1.01 Biaya Administrasi Bank Rp 15.000 Cr. 1.1.02 Bank BCA Rp 15.000 -
Book Only: Transaksi yang sudah dicatat di buku tapi belum muncul di bank. Contoh: cek yang sudah diterbitkan tapi belum dicairkan oleh penerima.
Laporan Rekonsiliasi
Buka laporan dari halaman detail rekonsiliasi, klik Laporan.

Laporan menampilkan:
- Header: Periode, rekening bank, tanggal rekonsiliasi
- Ringkasan saldo: Saldo bank vs saldo buku
- Item cocok: Daftar transaksi yang berhasil dicocokkan
- Item Bank Only: Transaksi bank tanpa pasangan di buku
- Item Book Only: Transaksi buku tanpa pasangan di bank
- Selisih: Total selisih yang perlu ditindaklanjuti
Gunakan tombol Print untuk mencetak atau export laporan.
Contoh Kasus Lengkap
Walk-through rekonsiliasi PT ArtiVisi Intermedia untuk periode Januari 2024.
Data Awal
- Rekening: BCA 1234567890, KCU Sudirman
- Akun GL: 1.1.02 Bank BCA
- Saldo awal: Rp 500.000.000
- Saldo akhir (bank): Rp 687.305.000
Langkah 1: Import Mutasi
Import file bca-statement-202401.csv yang berisi 5 item transaksi.
Langkah 2: Buat Rekonsiliasi
Pilih mutasi Januari 2024 dan buat rekonsiliasi baru. Sistem menampilkan 5 item bank dan transaksi buku yang tersedia.
Langkah 3: Jalankan Auto-Match
Klik Auto-Match. Hasil: 4 dari 5 item berhasil dicocokkan (Exact Match), 1 item tersisa (Biaya Admin Bank BCA).
Langkah 4: Tandai Bank Only
Item "Biaya Admin Bank BCA" Rp 15.000 tidak ada di pembukuan. Tandai sebagai Bank Only.
Tindak lanjut: buat jurnal penyesuaian untuk mencatat biaya admin tersebut di buku besar.
Langkah 5: Review Laporan
Buka laporan rekonsiliasi untuk verifikasi:
| Item | Bank | Buku | Status |
|---|---|---|---|
| Setoran Modal Awal 2024 | Rp 500.000.000 | Rp 500.000.000 | Cocok |
| Konsultasi Core Banking | Rp 196.200.000 | Rp 196.200.000 | Cocok |
| JetBrains License | Rp 3.330.000 | Rp 3.330.000 | Cocok |
| AWS Cloud | Rp 5.550.000 | Rp 5.550.000 | Cocok |
| Biaya Admin Bank BCA | Rp 15.000 | — | Bank Only |
Setelah semua item diproses, rekonsiliasi dapat di-complete.
Operasi Aplikasi dengan Bantuan AI
Aplikasi ini dirancang untuk dioperasikan sepenuhnya oleh AI assistant (Claude Code, Gemini CLI, atau AI lainnya). AI dapat menangani seluruh siklus hidup aplikasi — mulai dari instalasi server, migrasi data dari Excel, pencatatan transaksi harian, penggajian, pelaporan keuangan, hingga pelaporan pajak.
Cakupan AI:
- Instalasi dan deploy ke VPS via Ansible
- Analisis data Excel existing (transaksi, saldo awal) dan generate seed data
- Pencatatan transaksi harian (struk, invoice, text input)
- Penggajian dan PPh 21
- Tagihan vendor (bills)
- Rekonsiliasi bank
- Laporan keuangan dan analisis bisnis
- Pelaporan pajak (PPN, PPh 21, PPh Badan)
Gambaran Umum
Siklus Hidup Operasi AI
1. Instalasi & Deploy
AI clone repo GitHub → setup VPS via Ansible → aplikasi live
|
2. Analisis Data Existing
AI baca file Excel (transaksi, neraca) → analisis struktur akun
|
3. Inisialisasi Data
AI generate CSV (COA, template, saldo awal) → ZIP → POST /api/data-import
|
4. Operasi Harian
AI baca struk/invoice → matching template → posting transaksi
AI buat tagihan vendor → approve → mark paid
AI import mutasi bank → auto-match → rekonsiliasi
|
5. Penggajian Bulanan
AI buat payroll run → hitung PPh 21 → approve → posting ke jurnal
|
6. Laporan & Analisis
AI baca laporan keuangan → analisis → publikasi insight
|
7. Pelaporan Pajak
AI export e-Faktur, Bukti Potong → generate SPT → koreksi fiskal
Prasyarat
- AI assistant dengan kemampuan HTTP API (Claude Code, Gemini CLI, atau tool dengan
curl/HTTP client) - VPS dengan Ubuntu 22.04+ dan akses SSH (untuk instalasi)
- Domain dengan DNS pointing ke VPS (untuk HTTPS)
- Aplikasi sudah ter-deploy dan dapat diakses via HTTPS
API Discovery via OpenAPI Spec
Sebelum mulai berinteraksi dengan API, AI assistant membaca OpenAPI spec yang mendeskripsikan seluruh kemampuan API. Spec ini di-generate otomatis oleh springdoc-openapi dan tersedia tanpa autentikasi.
Endpoint
GET /v3/api-docs
# Tidak perlu Authorization header
# Returns OpenAPI 3.x JSON spec
Swagger UI juga tersedia di /swagger-ui.html untuk eksplorasi interaktif.
Isi OpenAPI Spec
| Bagian | Deskripsi |
|---|---|
paths | Seluruh endpoint API, auto-generated dari controller annotations |
components.schemas | Request/response schema dari DTO records |
security | Bearer token authentication scheme |
x-authentication | Alur OAuth 2.0 Device Flow lengkap (step 1-3), daftar scope, expiry |
x-workflows | 13 alur kerja end-to-end (receipt-based, text-based, direct posting, financial analysis, bank reconciliation, client onboarding, correction workflows, tax export) |
x-csv-files | 16 spesifikasi CSV untuk data import (nama kolom, tipe data, catatan) |
x-industries | Daftar kode industri yang didukung (it-service, online-seller, coffee-shop, campus) |
x-error-codes | 7 kode error dan HTTP status |
Cara AI Menggunakan OpenAPI Spec
1. AI membaca OpenAPI spec (GET /v3/api-docs)
|
2. AI memahami:
- Endpoint apa saja yang tersedia (dari paths)
- Field apa yang wajib/opsional per endpoint (dari schemas)
- Scope apa yang diperlukan (dari x-authentication)
- Alur kerja (workflow) yang benar (dari x-workflows)
|
3. AI mengikuti alur autentikasi dari x-authentication
|
4. AI memanggil endpoint sesuai x-workflows
Langkah pertama integrasi: Selalu
GET /v3/api-docsuntuk mengetahui endpoint, schema, dan workflow yang tersedia. Metadata AI ada dix-extensions.
Setup Autentikasi
AI assistant memerlukan autentikasi untuk mengakses aplikasi. Proses ini menggunakan OAuth 2.0 Device Flow yang aman.
Langkah 1: AI Meminta Kode
AI assistant akan meminta device code dari aplikasi:
POST /api/device/code
{
"clientId": "claude-code"
}
Response:
{
"deviceCode": "a79d766e4972e61d...",
"userCode": "MBJN-KRFJ",
"verificationUri": "http://localhost:8080/device",
"interval": 5,
"expiresIn": 900
}
Langkah 2: User Otorisasi di Browser
AI akan menampilkan URL dan kode:
Please authorize this device:
URL: http://localhost:8080/device
Code: MBJN-KRFJ
Buka URL tersebut di browser, login, dan masukkan kode:

Langkah otorisasi:
- Login dengan username dan password Anda
- Verifikasi kode perangkat yang ditampilkan
- (Opsional) Beri nama perangkat, misalnya: "Claude Code di MacBook"
- Klik "Otorisasi Perangkat"
Keamanan: Kode device hanya berlaku 15 menit dan hanya bisa digunakan sekali.
Langkah 3: AI Mendapat Access Token
Setelah Anda otorisasi, AI akan mendapat access token:
{
"accessToken": "15d07ef9030cba7b...",
"tokenType": "Bearer",
"expiresIn": 2592000
}
Token ini berlaku 30 hari. AI akan menyimpannya untuk digunakan di request berikutnya.
Scope yang Tersedia
Token yang diterbitkan melalui Device Flow memiliki scope berikut:
| Scope | Hak Akses |
|---|---|
drafts:create | Membuat dan mengedit draft transaksi |
drafts:approve | Approve/reject draft |
drafts:read | Membaca draft |
analysis:read | Membaca laporan keuangan |
analysis:write | Mempublikasikan laporan analisis |
transactions:post | Posting, koreksi, dan hapus transaksi DRAFT |
data:import | Import data dari file ZIP |
bills:read | Membaca vendor bills |
bills:create | Membuat vendor bills |
bills:approve | Approve dan mark-paid vendor bills |
bank-recon:read | Membaca data rekonsiliasi bank |
bank-recon:write | Import statement, matching, complete reconciliation |
tax-export:read | Export data pajak dan membaca data karyawan/payroll |
Tanpa scope yang sesuai, request akan ditolak dengan HTTP 403.
Instalasi dan Deploy
AI assistant dapat menginstal aplikasi dari nol ke VPS kosong menggunakan Ansible playbook yang tersedia di repository.
Prasyarat
- VPS dengan Ubuntu 22.04+ (minimal 2GB RAM, 20GB disk)
- Domain yang sudah pointing ke IP VPS
- SSH key access ke VPS (root atau user dengan sudo)
Alur Kerja
1. AI clone repository
git clone https://github.com/artivisi/balaka.git
|
2. AI konfigurasi inventory Ansible
Edit deploy/ansible/inventory.ini — set IP, domain, credentials
|
3. AI jalankan full setup (pertama kali)
ansible-playbook -i inventory.ini site.yml
|
Roles yang dijalankan:
- common: Java 21, system packages, firewall
- postgresql: PostgreSQL 17, database + user
- app: Systemd service, build JAR, Flyway migration
- nginx: Reverse proxy, HTTPS (Let's Encrypt)
|
4. AI verifikasi aplikasi berjalan
curl -s https://domain.example.com/actuator/health
→ {"status":"UP"}
|
5. Untuk deploy selanjutnya (update kode):
ansible-playbook -i inventory.ini deploy.yml
Struktur Ansible
deploy/ansible/
site.yml # Full setup (pertama kali)
deploy.yml # Deploy update (build + restart)
setup-ssl.yml # Setup Let's Encrypt SSL
backup.yml # Backup database
restore.yml # Restore database
requirements.yml # Ansible Galaxy dependencies
roles/
common/tasks/ # Java, packages, firewall
postgresql/tasks/ # PostgreSQL setup
app/tasks/ # Application service
nginx/tasks/ # Reverse proxy
backup/tasks/ # Automated backup
Konfigurasi Inventory
AI perlu membuat file inventory.ini dengan konfigurasi server:
[app]
server1 ansible_host=IP_VPS ansible_user=root
[app:vars]
app_domain=balaka.example.com
db_name=accountingdb
db_user=akunting
db_password=SECURE_PASSWORD
Verifikasi
Setelah deploy, AI memverifikasi:
# Health check
curl -s https://balaka.example.com/actuator/health
# OpenAPI spec tersedia
curl -s https://balaka.example.com/v3/api-docs | head -c 200
# Login page accessible
curl -s -o /dev/null -w "%{http_code}" https://balaka.example.com/login
# → 200
Analisis Data Existing
Sebelum menginisialisasi aplikasi, AI menganalisis data keuangan yang sudah ada (biasanya dalam format Excel) untuk merancang struktur Chart of Accounts (COA) dan template jurnal yang sesuai.
Alur Kerja
1. User memberikan file Excel ke AI
- Laporan keuangan (neraca, laba rugi)
- Buku besar / general ledger
- Data transaksi harian
- Daftar aset tetap
- Data karyawan dan gaji
|
2. AI menganalisis struktur data
- Mengidentifikasi akun-akun yang digunakan
- Mengelompokkan ke ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE
- Menentukan parent-child hierarchy
- Mengidentifikasi pola transaksi berulang
|
3. AI merancang COA
- Memetakan akun Excel ke format aplikasi
- Menentukan account_code, account_type, normal_balance
- Mengatur hierarki (parent_code)
|
4. AI merancang template jurnal
- Mengidentifikasi pola transaksi berulang (listrik, gaji, penjualan, dll)
- Membuat template dengan formula yang sesuai
- Mengisi metadata AI (keywords, merchant patterns, semantic description)
|
5. AI menghitung saldo awal
- Mengambil saldo per akun dari neraca terakhir
- Membuat transaksi saldo awal (template "Saldo Awal")
|
6. AI generate CSV files → ZIP → POST /api/data-import
Contoh Analisis Excel
Input: File Excel "Buku Besar 2025.xlsx" dengan kolom:
Tanggal | Kode Akun | Nama Akun | Debit | Kredit | Keterangan
Output AI:
-
COA yang diidentifikasi:
1.1.01Kas (ASSET, DEBIT)1.1.02Bank BCA (ASSET, DEBIT)2.1.01Hutang Usaha (LIABILITY, CREDIT)4.1.01Pendapatan Jasa (REVENUE, CREDIT)5.1.01Beban Gaji (EXPENSE, DEBIT)- ... dst
-
Template yang disarankan:
- "Pendapatan Jasa Konsultasi" — pola: klien bayar ke bank, keywords: konsultasi, jasa, proyek
- "Bayar Beban Listrik" — pola: kas/bank keluar ke PLN, keywords: listrik, pln
- "Bayar Gaji Karyawan" — pola: kas/bank keluar untuk gaji, keywords: gaji, salary
- ... dst
-
Saldo awal per 31 Desember 2025:
- Kas: Rp 25.000.000 (D)
- Bank BCA: Rp 100.000.000 (D)
- Hutang Usaha: Rp 15.000.000 (C)
- Modal: Rp 110.000.000 (C)
Referensi Industry Seed Pack
Untuk mempercepat analisis, AI dapat melihat contoh seed data per industri di repository:
industry-seed/
it-service/seed-data/ # Jasa IT & Konsultasi
online-seller/seed-data/ # Toko Online / E-Commerce
coffee-shop/seed-data/ # Kedai Kopi / F&B
campus/seed-data/ # Kampus / Pendidikan
Setiap seed pack berisi file CSV lengkap (COA, template, produk, BOM, dll) yang bisa dijadikan referensi struktur.
Inisialisasi Data
Setelah menganalisis data existing, AI membuat file CSV dan mengirimnya ke aplikasi via POST /api/data-import.
Alur Kerja
1. AI generate file CSV sesuai format yang diharapkan
|
2. AI membuat ZIP dari file-file CSV
|
3. AI mengirim ZIP ke POST /api/data-import
|
4. Aplikasi memproses ZIP: truncate tabel yang ada CSV-nya, lalu import
|
5. AI memverifikasi data via GET /api/analysis/accounts
|
6. AI membuat transaksi saldo awal jika diperlukan
Format CSV
ZIP berisi file CSV dengan nama berurut (dependency order). File utama untuk onboarding:
01_company_config.csv -- Konfigurasi perusahaan (1 baris data):
company_name,company_address,company_phone,company_email,tax_id,npwp,nitku,fiscal_year_start_month,currency_code,signing_officer_name,signing_officer_title,company_logo_path,established_date,is_pkp,pkp_since,industry
02_chart_of_accounts.csv -- Daftar akun:
account_code,account_name,account_type,parent_code,normal_balance,active,is_permanent
account_type:ASSET,LIABILITY,EQUITY,REVENUE,EXPENSEnormal_balance:DEBITatauCREDITparent_code: kosong jika akun top-level, isi kode parent jika sub-akun
04_journal_templates.csv -- Template jurnal:
template_name,category,cash_flow_category,template_type,description,is_system,active,version,usage_count,last_used_at,semantic_description,keywords,example_merchants,typical_amount_min,typical_amount_max,merchant_patterns
category:REVENUE,EXPENSE,TRANSFER,ADJUSTMENT,PAYROLL,TAX,RECEIVABLE,PAYABLE,ASSET_PURCHASE,ASSET_DEPRECIATIONcash_flow_category:OPERATING,INVESTING,FINANCINGtemplate_type:SIMPLE,VARIABLE,SPLIT,MULTI_LINEkeywords,example_merchants,merchant_patterns: nilai dipisahkan dengan|(pipe)
05_journal_template_lines.csv -- Baris template jurnal:
template_name,line_order,account_code,account_hint,position,formula,description
position:DEBITatauCREDITformula:AMOUNT(nilai penuh),AMOUNT * 0.11(PPN 11%), dsb.
API Import
curl -X POST https://balaka.example.com/api/data-import \
-H "Authorization: Bearer {accessToken}" \
-F "file=@seed-data.zip"
Response (HTTP 201):
{
"totalRecords": 45,
"documentCount": 0,
"durationMs": 1234
}
Populasi Saldo Awal
Setelah COA dan template ter-import, AI membuat transaksi saldo awal:
POST /api/transactions
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"templateId": "UUID-template-saldo-awal",
"description": "Saldo awal per 31 Desember 2025",
"amount": 125000000,
"transactionDate": "2025-12-31",
"source": "claude-code",
"userApproved": true
}
Ulangi untuk setiap akun yang memiliki saldo awal. Atau gunakan data import dengan file 18_transactions.csv yang berisi transaksi saldo awal.
Verifikasi
# Cek COA ter-import
GET /api/analysis/accounts
# Cek saldo awal tercatat
GET /api/analysis/trial-balance?asOfDate=2025-12-31
# Cek neraca balance
GET /api/analysis/balance-sheet?asOfDate=2025-12-31
Catatan
- Import mengganti (truncate) data pada tabel yang memiliki CSV di dalam ZIP. Tabel tanpa CSV di ZIP tidak terpengaruh
- File CSV boleh hanya berisi header (tanpa data) -- tabel tersebut akan dilewati
- Lihat direktori
industry-seed/di source code untuk contoh lengkap seed data per industri
Pencatatan Transaksi
AI assistant mencatat transaksi akuntansi melalui API -- baik dari struk, invoice, text input, maupun input langsung.
Template Journal dengan Metadata
AI memilih template journal berdasarkan metadata semantik. Untuk melihat template yang tersedia:
GET /api/templates
Authorization: Bearer {accessToken}
Response (contoh 1 template):
[
{
"id": "1bbc7ccc-4e8f-44ef-87d3-0cd011fbc56d",
"name": "Bayar Beban Listrik",
"category": "EXPENSE",
"semanticDescription": "Gunakan template ini untuk mencatat pembayaran tagihan listrik bulanan ke PLN.",
"keywords": ["listrik", "electricity", "pln", "token", "utility"],
"exampleMerchants": ["PLN", "PLN Mobile", "Tokopedia PLN"],
"typicalAmountMin": 50000,
"typicalAmountMax": 5000000,
"merchantPatterns": [".*pln.*", ".*listrik.*"],
"lines": [
{
"lineOrder": 1,
"position": "DEBIT",
"accountCode": "5.1.05",
"accountName": "Beban Listrik",
"accountHint": null,
"formula": "AMOUNT"
},
{
"lineOrder": 2,
"position": "CREDIT",
"accountId": null,
"accountCode": null,
"accountName": null,
"accountHint": "Kas / Bank",
"formula": "AMOUNT"
}
]
}
]
Keterangan:
- accountCode/accountName: Akun tetap (sudah ditentukan di template)
- accountHint: Akun yang perlu dipilih saat transaksi (gunakan
accountSlotsdengan accountHint sebagai key)
AI mencocokkan template berdasarkan: keyword matching, merchant matching, regex pattern (merchantPatterns), amount range, dan semantic similarity.
Posting Transaksi Langsung
Setelah matching template dan user approve:
POST /api/transactions
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"templateId": "UUID-template",
"merchant": "PLN",
"amount": 350000,
"transactionDate": "2026-02-10",
"description": "Bayar listrik Januari 2026",
"source": "claude-code",
"userApproved": true,
"accountSlots": {
"Kas / Bank": "UUID-akun-bank-bca"
}
}
accountSlots memetakan accountHint dari template ke UUID akun yang dipilih.
Untuk template DETAILED (formula non-standar), tambahkan variables:
{
"templateId": "UUID-template-pembelian-aset",
"amount": 3681200,
"transactionDate": "2026-02-12",
"description": "Pembelian laptop Lenovo",
"source": "claude-code",
"userApproved": true,
"accountSlots": {
"ASET_TETAP": "UUID-akun-peralatan",
"BANK": "UUID-akun-bank"
},
"variables": {
"assetCost": 3681200
}
}
Response:
{
"transactionId": "83da31e4-acdc-4ca9-898e-df2cefbe95c7",
"transactionNumber": "TRX-2026-0001",
"status": "POSTED",
"amount": 350000,
"journalEntries": [
{
"accountCode": "5.1.05",
"accountName": "Beban Listrik",
"debitAmount": 350000,
"creditAmount": 0
},
{
"accountCode": "1.1.02",
"accountName": "Bank BCA",
"debitAmount": 0,
"creditAmount": 350000
}
]
}
Transaksi yang dibuat via AI terlihat di halaman Transaksi:

Alur Draft (Review Sebelum Posting)
Jika AI ingin user review sebelum posting, gunakan alur draft:
POST /api/drafts → buat DRAFT
GET /api/transactions/{id}/journal-preview → preview jurnal
PUT /api/transactions/{id} → koreksi (opsional)
POST /api/transactions/{id}/post → posting
Buat draft:
POST /api/drafts
{
"templateId": "UUID-template",
"description": "Bayar listrik Januari 2026",
"amount": 350000,
"transactionDate": "2026-02-10",
"accountSlots": {
"Kas / Bank": "UUID-akun-bank-bca"
}
}
Preview jurnal:
GET /api/transactions/{id}/journal-preview
{
"valid": true,
"errors": [],
"entries": [
{ "accountCode": "5.1.05", "accountName": "Beban Listrik", "debitAmount": 350000, "creditAmount": 0 },
{ "accountCode": "1.1.02", "accountName": "Bank BCA", "debitAmount": 0, "creditAmount": 350000 }
],
"totalDebit": 350000,
"totalCredit": 350000
}
Jika valid bernilai false, field errors berisi daftar masalah.
Posting:
POST /api/transactions/{id}/post
Batch posting:
POST /api/transactions/bulk-post
{
"transactionIds": ["uuid-1", "uuid-2", "uuid-3"]
}
Koreksi dan Pembatalan
Koreksi draft PENDING:
PATCH /api/drafts/{id}
Koreksi transaksi DRAFT (belum posted):
PUT /api/transactions/{id}
Hapus transaksi DRAFT:
DELETE /api/transactions/{id}
Void transaksi POSTED (reversing entries otomatis):
POST /api/transactions/{id}/void
Purge transaksi VOID (hapus permanen):
DELETE /api/transactions/purge-voided
DELETE /api/transactions/purge-voided?before=2026-01-01
Purge transaksi VOID:
Menghapus permanen semua transaksi berstatus VOID beserta journal entries-nya. Detail transaksi yang dihapus dikembalikan dalam response sebagai backup.
DELETE /api/transactions/purge-voided
DELETE /api/transactions/purge-voided?before=2026-01-01
{
"purgedTransactions": [
{
"id": "uuid",
"transactionNumber": "TRX-2026-0042",
"transactionDate": "2025-12-15",
"amount": 500000,
"description": "Pembayaran duplikat",
"voidReason": "DUPLICATE",
"voidedAt": "2026-01-05T10:30:00",
"voidedBy": "admin"
}
],
"purgedCount": 1
}
Parameter:
before(opsional): Hanya purge transaksi dengan tanggal sebelum tanggal ini (eksklusif, formatYYYY-MM-DD)- Tanpa parameter: purge semua transaksi VOID
Koreksi transaksi DRAFT:
PUT /api/transactions/{id}
{
"templateId": "UUID-template-yang-benar",
"description": "Deskripsi yang diperbaiki",
"amount": 350000,
"transactionDate": "2026-02-10",
"accountSlots": {
"Kas / Bank": "UUID-akun-bank-lain"
}
}
Validasi:
- Hanya transaksi berstatus DRAFT yang bisa dikoreksi
- Tanggal transaksi tidak boleh di masa depan
accountSlotsdapat dikirim berulang kali (idempotent) -- slot sebelumnya akan diganti
Template CRUD via API
AI juga dapat membuat dan mengelola template jurnal:
GET /api/templates → list semua template
GET /api/templates/{id} → detail template
POST /api/templates → buat template baru
PUT /api/templates/{id} → update template
DELETE /api/templates/{id} → hapus (soft delete)
Penggajian (Payroll)
AI mengelola siklus penggajian lengkap -- dari setup karyawan hingga posting jurnal gaji dan perhitungan PPh 21.
Alur Kerja
1. Setup komponen gaji
POST /api/salary-components (Gaji Pokok, Tunjangan Transport, dll)
|
2. Setup karyawan
POST /api/employees
POST /api/employees/{id}/salary-components (assign komponen + nominal)
|
3. Buat payroll run bulanan
POST /api/payroll { "month": 1, "year": 2026, "description": "Gaji Januari 2026" }
|
4. Hitung PPh 21
POST /api/payroll/{id}/calculate
→ Sistem menghitung: bruto → biaya jabatan → neto → PTKP → PKP → tarif progresif
|
5. Review dan approve
GET /api/payroll/{id} (review detail per karyawan)
POST /api/payroll/{id}/approve
|
6. Posting ke jurnal akuntansi
POST /api/payroll/{id}/post
|
7. Generate data pajak
GET /api/payroll/employees/{id}/1721-a1?year=2026
GET /api/payroll/pph21/summary?year=2026
Komponen Gaji
# List komponen aktif
GET /api/salary-components
# Buat komponen
POST /api/salary-components
{
"name": "Gaji Pokok",
"type": "EARNING",
"taxable": true,
"description": "Gaji pokok bulanan"
}
# Update
PUT /api/salary-components/{id}
# Nonaktifkan
DELETE /api/salary-components/{id}
Karyawan
# List karyawan (filter: active, status)
GET /api/employees?active=true
# Buat karyawan
POST /api/employees
{
"employeeId": "EMP-001",
"fullName": "Ahmad Fauzi",
"email": "ahmad@example.com",
"joinDate": "2024-01-15",
"ptkpStatus": "K_1",
"npwp": "12.345.678.9-012.000",
"bankAccountNumber": "1234567890",
"bankName": "BCA"
}
# Assign komponen gaji
POST /api/employees/{id}/salary-components
{
"salaryComponentId": "UUID-gaji-pokok",
"amount": 8000000,
"effectiveDate": "2024-01-15"
}
Payroll Run
# Buat payroll (DRAFT)
POST /api/payroll
{
"month": 1,
"year": 2026,
"description": "Gaji Januari 2026"
}
# Hitung PPh 21 (annualized progressive rate)
POST /api/payroll/{id}/calculate
# Review detail
GET /api/payroll/{id}
# → Response berisi detail per karyawan: bruto, potongan, neto, PPh 21
# Approve
POST /api/payroll/{id}/approve
# Post ke jurnal akuntansi
POST /api/payroll/{id}/post
# Hapus (hanya DRAFT)
DELETE /api/payroll/{id}
PPh 21
Perhitungan PPh 21 menggunakan metode annualisasi (Pasal 17 UU HPP):
| Lapisan PKP | Tarif |
|---|---|
| 0 - 60 juta | 5% |
| 60 - 250 juta | 15% |
| 250 - 500 juta | 25% |
| 500 juta - 5 miliar | 30% |
| > 5 miliar | 35% |
PTKP (PMK 101/2016): TK/0 = Rp 54.000.000, K/0 = Rp 58.500.000, dst.
# Data 1721-A1 per karyawan
GET /api/payroll/employees/{id}/1721-a1?year=2026
# → Monthly breakdown: bruto, biaya jabatan, neto, PTKP, PKP, PPh 21
# Summary PPh 21 seluruh karyawan
GET /api/payroll/pph21/summary?year=2026
Tagihan Vendor (Bills)
AI membuat tagihan vendor dari invoice/dokumen yang diterima, lalu melacak pembayarannya.
Alur Kerja
1. AI menerima invoice vendor (PDF/foto)
|
2. AI ekstrak data: vendor, tanggal, item, nominal
|
3. AI buat bill
POST /api/bills
|
4. Review dan approve
POST /api/bills/{id}/approve
|
5. Setelah dibayar
POST /api/bills/{id}/mark-paid
API
# List bills (filter: status, vendor, date range)
GET /api/bills?status=DRAFT&vendorId=UUID&dateFrom=2026-01-01&dateTo=2026-01-31
# Detail bill
GET /api/bills/{id}
# Buat bill
POST /api/bills
{
"vendorName": "PT Telkom Indonesia",
"billDate": "2026-02-01",
"dueDate": "2026-02-28",
"vendorInvoiceNumber": "INV-TLK-2026-001",
"notes": "Tagihan internet Februari 2026",
"lines": [
{
"description": "Internet Dedicated 100 Mbps",
"quantity": 1,
"unitPrice": 5500000,
"taxRate": 11,
"expenseAccountCode": "5.1.06"
}
]
}
# Approve
POST /api/bills/{id}/approve
# Mark paid
POST /api/bills/{id}/mark-paid
vendorName akan otomatis membuat vendor baru jika belum ada di database.
Rekonsiliasi Bank
AI mengimpor mutasi bank, mencocokkan dengan transaksi di buku, dan menyelesaikan rekonsiliasi.
Alur Kerja
1. Setup parser config (format CSV bank)
GET /api/bank-reconciliation/parser-configs
POST /api/bank-reconciliation/parser-configs (jika belum ada)
|
2. Import statement bank
POST /api/bank-reconciliation/statements/import
|
3. Buat reconciliation session
POST /api/bank-reconciliation/reconciliations
|
4. Auto-match (3 pass: exact → fuzzy date → keyword)
POST /api/bank-reconciliation/reconciliations/{id}/auto-match
|
5. Manual match untuk item yang tidak ter-match otomatis
POST /api/bank-reconciliation/reconciliations/{id}/match
|
6. Tandai item bank-only atau book-only
POST /api/bank-reconciliation/reconciliations/{id}/mark-bank-only
POST /api/bank-reconciliation/reconciliations/{id}/mark-book-only
|
7. Buat transaksi dari item bank yang belum tercatat
POST /api/bank-reconciliation/reconciliations/{id}/create-transaction
|
8. Review summary
GET /api/bank-reconciliation/reconciliations/{id}/summary
|
9. Complete reconciliation
POST /api/bank-reconciliation/reconciliations/{id}/complete
Import Statement
POST /api/bank-reconciliation/statements/import
Content-Type: multipart/form-data
# Form fields:
# - file: CSV file mutasi bank
# - bankAccountId: UUID akun bank (dari COA)
# - parserConfigId: UUID parser config
# - statementDate: tanggal statement (yyyy-MM-dd)
Auto-Match
POST /api/bank-reconciliation/reconciliations/{id}/auto-match
Sistem menjalankan 3 pass:
- Exact match: Jumlah dan tanggal persis sama
- Fuzzy date: Jumlah sama, tanggal selisih 1-3 hari
- Keyword: Deskripsi bank mengandung keyword transaksi
Manual Match
POST /api/bank-reconciliation/reconciliations/{id}/match
{
"bankStatementItemId": "UUID-item-bank",
"transactionId": "UUID-transaksi"
}
Buat Transaksi dari Item Bank
Untuk mutasi bank yang belum ada transaksinya di buku:
POST /api/bank-reconciliation/reconciliations/{id}/create-transaction
{
"bankStatementItemId": "UUID-item-bank",
"templateId": "UUID-template",
"description": "Deskripsi transaksi"
}
Outstanding Items
# Item yang belum ter-match
GET /api/bank-reconciliation/reconciliations/{id}/unmatched-book
# Outstanding items (bank vs book)
GET /api/bank-reconciliation/reconciliations/{id}/outstanding
Perpajakan
AI mengelola pelaporan pajak -- dari pengisian detail pajak per transaksi hingga export data untuk e-Faktur, e-Bupot, dan SPT.
Alur Kerja Pajak Bulanan
1. Transaksi harian sudah ter-posting dengan template yang benar
(template PPN otomatis menghitung PPN 11%)
|
2. AI mengisi detail pajak per transaksi
POST /api/transactions/{id}/tax-details
|
3. AI upload dokumen pendukung (faktur, bukti potong)
POST /api/transactions/{id}/documents
|
4. Akhir bulan: AI export data pajak
GET /api/tax-export/efaktur-keluaran?startMonth=2026-01&endMonth=2026-01&format=json
GET /api/tax-export/efaktur-masukan?startMonth=2026-01&endMonth=2026-01&format=json
GET /api/tax-export/bupot-unifikasi?startMonth=2026-01&endMonth=2026-01&format=json
|
5. AI review ringkasan
GET /api/tax-export/ppn-detail?startMonth=2026-01&endMonth=2026-01
GET /api/tax-export/pph23-detail?startMonth=2026-01&endMonth=2026-01
|
6. AI generate data SPT PPh Badan (tahunan)
GET /api/tax-export/pph-badan?year=2025
GET /api/tax-export/rekonsiliasi-fiskal?year=2025
Detail Pajak per Transaksi
Setiap transaksi PPN/PPh perlu dilengkapi detail pajak (nomor faktur, NPWP lawan transaksi, dll):
# List tax details
GET /api/transactions/{id}/tax-details
# Tambah detail
POST /api/transactions/{id}/tax-details
{
"taxType": "PPN_KELUARAN",
"taxNumber": "010.000-26.00000001",
"counterpartyNpwp": "01.234.567.8-901.000",
"counterpartyName": "PT Klien ABC",
"taxBase": 10000000,
"taxAmount": 1100000,
"taxDate": "2026-01-15"
}
# Update
PUT /api/transactions/{id}/tax-details/{detailId}
# Hapus
DELETE /api/transactions/{id}/tax-details/{detailId}
# Bulk operations
POST /api/tax-details/bulk
Dokumen Pendukung
# Upload dokumen
POST /api/transactions/{id}/documents
Content-Type: multipart/form-data
# Form field: file (PDF, image)
# List dokumen
GET /api/transactions/{id}/documents
# Download
GET /api/transactions/{id}/documents/{docId}
# Hapus
DELETE /api/transactions/{id}/documents/{docId}
Export Pajak
Semua endpoint export mendukung format=json (untuk AI) dan format=excel (untuk upload ke DJP):
# e-Faktur Keluaran (PPN yang dipungut)
GET /api/tax-export/efaktur-keluaran?startMonth=2026-01&endMonth=2026-01&format=json
# e-Faktur Masukan (PPN yang dibayar)
GET /api/tax-export/efaktur-masukan?startMonth=2026-01&endMonth=2026-01&format=json
# Bukti Potong Unifikasi (PPh 23/26)
GET /api/tax-export/bupot-unifikasi?startMonth=2026-01&endMonth=2026-01&format=json
# Detail PPN (ringkasan Keluaran vs Masukan)
GET /api/tax-export/ppn-detail?startMonth=2026-01&endMonth=2026-12
# Detail PPh 23 (ringkasan potongan)
GET /api/tax-export/pph23-detail?startMonth=2026-01&endMonth=2026-12
Koreksi Fiskal (SPT PPh Badan)
Untuk penyusunan SPT PPh Badan tahunan, AI mengelola koreksi fiskal:
# List koreksi fiskal per tahun
GET /api/fiscal-adjustments?year=2025
# Buat koreksi
POST /api/fiscal-adjustments
{
"year": 2025,
"category": "ENTERTAINMENT",
"direction": "POSITIVE",
"amount": 5000000,
"description": "Biaya entertainment tanpa daftar nominatif",
"notes": "Pasal 6 ayat 1 huruf a UU PPh"
}
# Update
PUT /api/fiscal-adjustments/{id}
# Hapus
DELETE /api/fiscal-adjustments/{id}
Rekonsiliasi Fiskal dan PPh Badan
# Rekonsiliasi fiskal (laba komersial → laba fiskal)
GET /api/tax-export/rekonsiliasi-fiskal?year=2025
# → Laba komersial, koreksi positif, koreksi negatif, laba fiskal
# Perhitungan PPh Badan
GET /api/tax-export/pph-badan?year=2025
# → PKP, tarif, PPh terutang, kredit pajak, kurang/lebih bayar
PPh 21 Karyawan
Data PPh 21 tersedia via Payroll API (lihat bagian Penggajian):
# 1721-A1 per karyawan
GET /api/payroll/employees/{id}/1721-a1?year=2026
# Summary PPh 21 seluruh karyawan
GET /api/payroll/pph21/summary?year=2026
Monitoring & Audit
Audit Log
Semua API call tercatat di audit log dengan detail:
- Event Type:
API_CALL - User: Username yang otorisasi device
- IP Address: IP address request
- Details: Source (claude-code), merchant, amount, confidence
Token Management (Self-Service)
Setiap user dapat melihat dan mencabut device token miliknya di halaman Perangkat API.
Lokasi: Sidebar > Master Data > Perangkat API, atau langsung buka /settings/devices

Informasi per token:
| Kolom | Deskripsi |
|---|---|
| Perangkat | Nama device (jika diisi saat otorisasi) |
| Client ID | Identifier aplikasi (contoh: claude-code) |
| Scope | Hak akses token (contoh: drafts:create,analysis:read) |
| Status | Aktif (hijau) atau Kedaluwarsa (abu-abu) |
| Dibuat | Waktu token diterbitkan |
| Terakhir Digunakan | Waktu terakhir token digunakan |
| IP Terakhir | IP address terakhir yang menggunakan token |
Aksi:
- Cabut (per token): Mencabut satu token tertentu
- Cabut Semua: Mencabut semua token aktif sekaligus
Catatan: Setelah token dicabut, AI assistant yang menggunakan token tersebut tidak dapat mengakses API lagi. User perlu melakukan device flow ulang untuk mendapatkan token baru.
Admin view: Administrator juga dapat melihat dan mencabut token dari halaman detail pengguna di menu Pengguna > klik user > bagian Sesi Perangkat Aktif.
API Reference
Discovery (public, tanpa autentikasi)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /v3/api-docs | OpenAPI spec -- seluruh endpoint, schema, x- extensions |
| GET | /swagger-ui.html | Swagger UI -- eksplorasi API interaktif |
Autentikasi (public)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/device/code | Request device code |
| POST | /api/device/token | Poll for access token |
Draft Transaksi (scope: drafts:*, transactions:post)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/drafts | Buat DRAFT transaction dengan template + overrides |
| POST | /api/drafts/from-receipt | Buat draft dari struk |
| POST | /api/drafts/from-text | Buat draft dari teks |
| GET | /api/drafts/{id} | Get draft by ID |
| PATCH | /api/drafts/{id} | Koreksi draft PENDING |
| POST | /api/drafts/{id}/approve | Approve draft |
| POST | /api/drafts/{id}/reject | Reject draft |
Template (scope: drafts:read, drafts:create)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/templates | List templates dengan metadata dan lines |
| GET | /api/templates/{id} | Get single template dengan lines |
| POST | /api/templates | Buat template baru |
| PUT | /api/templates/{id} | Update template |
| DELETE | /api/templates/{id} | Hapus template (soft delete) |
Transaksi (scope: transactions:post)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/transactions | Post transaction langsung |
| PUT | /api/transactions/{id} | Koreksi transaksi DRAFT |
| DELETE | /api/transactions/{id} | Hapus transaksi DRAFT |
| POST | /api/transactions/{id}/post | Post satu transaksi DRAFT |
| POST | /api/transactions/{id}/void | Void transaksi POSTED |
| GET | /api/transactions/{id}/journal-preview | Preview jurnal entries |
| POST | /api/transactions/bulk-post | Batch post transaksi DRAFT |
| DELETE | /api/transactions/purge-voided | Hapus permanen transaksi VOID |
Analisis Keuangan (scope: analysis:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/analysis/company | Konfigurasi perusahaan |
| GET | /api/analysis/snapshot | KPI bulanan |
| GET | /api/analysis/trial-balance | Neraca saldo |
| GET | /api/analysis/income-statement | Laporan laba rugi |
| GET | /api/analysis/balance-sheet | Neraca |
| GET | /api/analysis/cash-flow | Laporan arus kas |
| GET | /api/analysis/tax-summary | Ringkasan pajak |
| GET | /api/analysis/receivables | Piutang usaha |
| GET | /api/analysis/payables | Hutang usaha |
| GET | /api/analysis/accounts | Daftar akun (COA) |
| GET | /api/analysis/accounts/{id}/ledger | Buku besar per akun |
| GET | /api/analysis/drafts | Draft transaksi pending |
| GET | /api/analysis/transactions | List transaksi dengan filter |
| GET | /api/analysis/transactions/{id} | Detail transaksi + jurnal entries |
| GET | /api/analysis/reports | Daftar laporan analisis |
Publikasi Laporan Analisis (scope: analysis:write)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/analysis/reports | Publikasi laporan analisis terstruktur |
Tagihan Vendor (scope: bills:*)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/bills | List bills dengan filter |
| GET | /api/bills/{id} | Detail bill |
| POST | /api/bills | Buat bill baru |
| POST | /api/bills/{id}/approve | Approve bill |
| POST | /api/bills/{id}/mark-paid | Mark bill as paid |
Rekonsiliasi Bank (scope: bank-recon:*)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/bank-reconciliation/parser-configs | List parser configs |
| POST | /api/bank-reconciliation/parser-configs | Buat parser config |
| POST | /api/bank-reconciliation/statements/import | Import statement CSV |
| GET | /api/bank-reconciliation/statements/{id} | Detail statement |
| GET | /api/bank-reconciliation/statements/{id}/items | Items statement |
| POST | /api/bank-reconciliation/reconciliations | Buat reconciliation session |
| GET | /api/bank-reconciliation/reconciliations/{id} | Detail reconciliation |
| POST | /api/bank-reconciliation/reconciliations/{id}/auto-match | Auto-match 3 pass |
| POST | /api/bank-reconciliation/reconciliations/{id}/match | Manual match |
| POST | /api/bank-reconciliation/reconciliations/{id}/mark-bank-only | Mark bank-only |
| POST | /api/bank-reconciliation/reconciliations/{id}/mark-book-only | Mark book-only |
| DELETE | /api/bank-reconciliation/reconciliations/{id}/items/{itemId} | Remove match |
| POST | /api/bank-reconciliation/reconciliations/{id}/create-transaction | Create from bank item |
| POST | /api/bank-reconciliation/reconciliations/{id}/complete | Complete reconciliation |
| GET | /api/bank-reconciliation/reconciliations/{id}/unmatched-book | Unmatched book items |
| GET | /api/bank-reconciliation/reconciliations/{id}/summary | Reconciliation summary |
| GET | /api/bank-reconciliation/reconciliations/{id}/statement | Statement data |
| GET | /api/bank-reconciliation/reconciliations/{id}/outstanding | Outstanding items |
Komponen Gaji (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/salary-components | Daftar komponen gaji aktif |
| POST | /api/salary-components | Buat komponen gaji |
| PUT | /api/salary-components/{id} | Update komponen gaji |
| DELETE | /api/salary-components/{id} | Nonaktifkan komponen gaji |
Karyawan (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/employees | Daftar karyawan |
| POST | /api/employees | Buat karyawan |
| GET | /api/employees/{id} | Detail karyawan + komponen gaji |
| PUT | /api/employees/{id} | Update data karyawan |
| POST | /api/employees/{id}/salary-components | Assign komponen gaji |
| PUT | /api/employees/{id}/salary-components/{componentId} | Update assignment |
Payroll (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/payroll | Daftar payroll run |
| POST | /api/payroll | Buat payroll run (DRAFT) |
| GET | /api/payroll/{id} | Detail payroll + semua detail karyawan |
| POST | /api/payroll/{id}/calculate | Hitung PPh 21 |
| POST | /api/payroll/{id}/approve | Set APPROVED |
| POST | /api/payroll/{id}/post | Posting ke jurnal |
| DELETE | /api/payroll/{id} | Hapus payroll DRAFT |
| GET | /api/payroll/employees/{id}/1721-a1?year=YYYY | Data 1721-A1 per karyawan |
| GET | /api/payroll/pph21/summary?year=YYYY | Ringkasan PPh 21 |
Detail Pajak (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/transactions/{id}/tax-details | List tax details per transaksi |
| GET | /api/transactions/{id}/tax-details/{detailId} | Detail satu tax detail |
| POST | /api/transactions/{id}/tax-details | Tambah tax detail |
| PUT | /api/transactions/{id}/tax-details/{detailId} | Update tax detail |
| DELETE | /api/transactions/{id}/tax-details/{detailId} | Hapus tax detail |
| POST | /api/tax-details/bulk | Bulk operations |
Dokumen (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/transactions/{id}/documents | Upload dokumen |
| GET | /api/transactions/{id}/documents | List dokumen |
| GET | /api/transactions/{id}/documents/{docId} | Download dokumen |
| DELETE | /api/transactions/{id}/documents/{docId} | Hapus dokumen |
Export Pajak (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/tax-export/efaktur-keluaran | Export e-Faktur Keluaran |
| GET | /api/tax-export/efaktur-masukan | Export e-Faktur Masukan |
| GET | /api/tax-export/bupot-unifikasi | Export Bukti Potong Unifikasi |
| GET | /api/tax-export/ppn-detail | Detail PPN (Keluaran vs Masukan) |
| GET | /api/tax-export/pph23-detail | Detail PPh 23 |
| GET | /api/tax-export/rekonsiliasi-fiskal | Rekonsiliasi fiskal |
| GET | /api/tax-export/pph-badan | Perhitungan PPh Badan |
Koreksi Fiskal (scope: tax-export:read)
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/fiscal-adjustments?year=YYYY | Daftar koreksi fiskal per tahun |
| POST | /api/fiscal-adjustments | Buat koreksi fiskal baru |
| PUT | /api/fiscal-adjustments/{id} | Update koreksi fiskal |
| DELETE | /api/fiscal-adjustments/{id} | Hapus koreksi fiskal |
Manajemen Data (scope: data:import)
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/data-import | Import data dari file ZIP |
Authentication
Endpoint yang tidak memerlukan autentikasi:
GET /v3/api-docsGET /swagger-ui.htmlPOST /api/device/codePOST /api/device/token
Semua endpoint lainnya memerlukan Bearer token:
Authorization: Bearer {accessToken}
Rate Limiting
- Draft creation: 10 requests/menit per IP
- Transaction posting: 30 requests/menit per IP
Error Codes
| Code | Error | Deskripsi |
|---|---|---|
| 400 | MISSING_PARAMETER | Parameter wajib tidak dikirim |
| 400 | INVALID_REQUEST | Request tidak valid |
| 401 | unauthorized | Token tidak valid atau expired |
| 403 | -- | Scope tidak memadai |
| 404 | NOT_FOUND | Resource tidak ditemukan |
| 409 | CONFLICT | State conflict (contoh: transaksi sudah POSTED) |
| 429 | RATE_LIMIT_EXCEEDED | Terlalu banyak request |
| 500 | INTERNAL_ERROR | Server error |
FAQ
Apakah data saya aman?
Ya. Autentikasi menggunakan OAuth 2.0 Device Flow yang merupakan standard industri. Access token:
- Tersimpan hanya di AI assistant Anda (tidak di server pihak ketiga)
- Berlaku maksimal 30 hari
- Dapat dicabut kapan saja di Settings
AI mana yang didukung?
API ini generik dan dapat digunakan oleh AI assistant apapun yang mendukung HTTP API:
- Claude Code
- Gemini CLI
- ChatGPT dengan plugin
- Custom script (curl, Python, dll)
Bagaimana jika AI salah pilih template?
- Koreksi draft:
PATCH /api/drafts/{id}sebelum approve - Koreksi transaksi DRAFT:
PUT /api/transactions/{id}sebelum posting - Hapus dan buat ulang:
DELETE /api/transactions/{id}lalu buat baru - Void transaksi POSTED:
POST /api/transactions/{id}/void(reversing entries otomatis) - Edit di web: Setelah posted, edit di web UI
Bagaimana cara menambah metadata ke template?
- Web UI: Buka template > Edit > bagian Metadata AI > isi field > Simpan. Lihat Referensi Template untuk detail field.
- API:
PUT /api/templates/{id}
Apakah AI bisa deploy aplikasi dari nol?
Ya. Berikan AI akses SSH ke VPS kosong dan arahkan ke repository GitHub. AI akan menjalankan Ansible playbook untuk instalasi lengkap (Java, PostgreSQL, Nginx, SSL, aplikasi). Lihat bagian "Instalasi dan Deploy".
Apakah AI bisa migrasi data dari Excel?
Ya. Berikan AI file Excel (buku besar, neraca, data transaksi). AI akan menganalisis struktur akun, merancang COA dan template jurnal, generate file CSV, lalu import ke aplikasi. Lihat bagian "Analisis Data Existing" dan "Inisialisasi Data".
Troubleshooting
Error: "Authentication required" (401)
Penyebab: Token tidak valid atau expired
Solusi:
- Lakukan device flow authentication ulang
- Pastikan token disimpan dengan benar di AI assistant
- Cek apakah token sudah expired (30 hari)
Error: "Template not found" (404)
Penyebab: Template ID tidak valid
Solusi:
- Refresh template list:
GET /api/templates - Pastikan template ID ada di list
- Jangan hardcode template ID, selalu fetch dari API
AI matching template yang salah
Penyebab: Metadata template belum lengkap atau keyword tidak match
Solusi:
- Lengkapi metadata template: buka template > Edit > bagian Metadata AI
- Tambahkan keyword yang lebih spesifik
- Tambahkan merchant patterns (regex)
- User bisa override template saat approve
Transaction failed to post
Penyebab:
- Template tidak balanced (debit != credit)
- Account tidak valid
- Tanggal transaksi invalid
Solusi:
- Cek template lines (harus ada debit dan credit)
- Cek account mapping
- Pastikan tanggal tidak di masa depan
Data import gagal
Penyebab: Format CSV tidak sesuai
Solusi:
- Cek nama file CSV (harus berurut:
01_company_config.csv,02_chart_of_accounts.csv, dst) - Cek header CSV (harus persis sesuai format yang didokumentasikan)
- Cek dependency order (template lines membutuhkan template dan COA sudah ter-import)
- Lihat contoh di
industry-seed/untuk referensi format
Ansible deploy gagal
Penyebab: Konfigurasi server atau inventory tidak benar
Solusi:
- Verifikasi SSH access:
ssh user@server 'echo ok' - Pastikan server memenuhi prasyarat (Ubuntu 22.04+, 2GB RAM)
- Cek Ansible inventory file (IP, user, variables)
- Jika Flyway migration gagal, cek log:
sudo journalctl -u aplikasi-akunting
Info: Dokumentasi ini ditulis berdasarkan test scenario yang sebenarnya. Semua screenshot dan JSON response diambil dari functional test yang berjalan pada aplikasi.
Laporan Keuangan dan Analisis
AI membaca laporan keuangan terstruktur via /api/analysis/*, menganalisis data, dan mempublikasikan insight kembali ke aplikasi.
Endpoint Laporan
| Endpoint | Deskripsi | Parameter |
|---|---|---|
GET /api/analysis/company | Konfigurasi perusahaan (industry, currency, fiscal year) | -- |
GET /api/analysis/snapshot | KPI bulanan (revenue, expense, profit, cash) | month (yyyy-MM) |
GET /api/analysis/trial-balance | Neraca saldo | asOfDate (yyyy-MM-dd) |
GET /api/analysis/income-statement | Laporan laba rugi | startDate, endDate |
GET /api/analysis/balance-sheet | Neraca | asOfDate |
GET /api/analysis/cash-flow | Laporan arus kas | startDate, endDate |
GET /api/analysis/tax-summary | Ringkasan pajak (PPN, PPh) | startDate, endDate |
GET /api/analysis/receivables | Piutang usaha | asOfDate |
GET /api/analysis/payables | Hutang usaha | asOfDate |
GET /api/analysis/accounts | Daftar akun (COA) | -- |
GET /api/analysis/accounts/{id}/ledger | Buku besar per akun (running balance) | startDate, endDate |
GET /api/analysis/drafts | Draft transaksi pending | -- |
GET /api/analysis/transactions | List transaksi (filter: status, category, date, search) | multiple |
GET /api/analysis/transactions/{id} | Detail transaksi dengan jurnal entries | -- |
Semua parameter wajib (tidak ada nilai default). Request tanpa parameter mengembalikan HTTP 400.
Format Response
Semua endpoint mengembalikan format AnalysisResponse yang konsisten:
{
"reportType": "trial-balance",
"generatedAt": "2026-02-17T14:30:00",
"parameters": {
"asOfDate": "2026-01-31"
},
"data": { ... },
"metadata": {
"currency": "IDR",
"accountingBasis": "accrual",
"description": "Trial balance as of 2026-01-31..."
}
}
Field metadata memberikan konteks yang membantu AI memahami data (mata uang, basis akuntansi, penjelasan arti debit/credit).
Contoh: KPI Snapshot
GET /api/analysis/snapshot?month=2026-01
Authorization: Bearer {accessToken}
{
"reportType": "snapshot",
"data": {
"month": "2026-01",
"revenue": 50000000,
"revenueChange": 12.5,
"expense": 35000000,
"expenseChange": -3.2,
"netProfit": 15000000,
"profitMargin": 30.0,
"cashBalance": 125000000,
"receivablesBalance": 20000000,
"payablesBalance": 15000000,
"transactionCount": 47,
"cashBankItems": [
{ "accountName": "Kas", "balance": 25000000 },
{ "accountName": "Bank BCA", "balance": 100000000 }
]
}
}
Publikasi Laporan Analisis
Setelah AI menganalisis data, hasilnya dipublikasikan kembali ke aplikasi agar tim dapat membacanya di web UI (menu Laporan > Analisis AI).
POST /api/analysis/reports
Authorization: Bearer {accessToken}
Content-Type: application/json
Laporan terdiri dari 5 bagian terstruktur:
| Bagian | Deskripsi |
|---|---|
| Ringkasan Eksekutif | Paragraf singkat kondisi keuangan periode ini |
| Indikator Utama | Metrik KPI spesifik industri dengan perubahan vs periode sebelumnya |
| Temuan | Hal-hal yang perlu diperhatikan, dengan kategori dan severity |
| Rekomendasi | Langkah-langkah yang disarankan, dengan prioritas dan dampak |
| Penilaian Risiko | Risiko yang teridentifikasi beserta mitigasi |
Sebelum analisis, AI membaca konfigurasi industri via GET /api/analysis/company untuk menentukan metrik yang relevan.
Analisis per Industri
Jasa IT & Konsultasi (it-service)
Tipe laporan: utilization-review, project-profitability, receivables-aging, client-concentration, tax-withholding-recon
| Metrik | Formula | Benchmark |
|---|---|---|
| Utilisasi Billable | Jam billable / Total jam tersedia | 70-80% |
| DSO (Days Sales Outstanding) | (Piutang / Pendapatan) x Hari | < 45 hari |
| Rasio Biaya Tenaga Kerja | Total gaji / Pendapatan | 55-65% |
| Margin Proyek | (Revenue proyek - Biaya langsung) / Revenue proyek | > 15% sehat, > 25% kuat |
| Konsentrasi Klien Top-3 | Revenue 3 klien terbesar / Total revenue | < 60% sehat |
Risiko: konsentrasi klien, bench time, DSO creep, Bukti Potong PPh 23 hilang, key-person dependency.
Toko Online / E-Commerce (online-seller)
Tipe laporan: marketplace-profitability, inventory-health, cash-conversion-cycle, channel-comparison, shipping-cost-analysis
| Metrik | Formula | Benchmark |
|---|---|---|
| Gross Margin per Channel | (Revenue - HPP - Fee marketplace) / Revenue | > 30% |
| Inventory Turnover | HPP / Rata-rata persediaan | 4-8x/tahun |
| Dead Stock Ratio | Nilai stok mati / Total nilai persediaan | < 10% |
| Fee Marketplace Ratio | Total fee marketplace / Revenue | < 12% |
| Cash Conversion Cycle | DIO + DSO - DPO | < 60 hari |
Risiko: kenaikan fee marketplace, dead stock, cash conversion cycle panjang, ketergantungan satu marketplace.
Kedai Kopi / F&B (coffee-shop)
Tipe laporan: food-cost-review, labor-efficiency, menu-engineering, production-cost, daily-sales-analysis
| Metrik | Formula | Benchmark |
|---|---|---|
| Food Cost % | HPP / Revenue | 20-30% |
| Labor Cost % | Total biaya tenaga kerja / Revenue | 25-30% |
| Prime Cost % | (HPP + Biaya tenaga kerja) / Revenue | < 60% |
| Waste % | Nilai bahan terbuang / Total HPP | < 2-4% |
| Variance Resep | (HPP aktual - HPP teoritis) / HPP teoritis | < 2% |
Risiko: spoilage bahan perishable, over-portioning, kenaikan harga komoditas, prime cost > 65%.
Kampus / Pendidikan (campus)
Tipe laporan: tuition-collection, budget-realization, scholarship-impact, faculty-cost-analysis, enrollment-forecast
| Metrik | Formula | Benchmark |
|---|---|---|
| SPP Collection Rate | SPP terkumpul / SPP tertagih | > 90% |
| Tuition Dependency Ratio | Pendapatan SPP / Total pendapatan | < 85% |
| Operating Margin | (Total pendapatan - Total beban) / Total pendapatan | > 5% |
| Days Cash on Hand | Kas / (Total beban / 365) | > 90 hari |
| Piutang SPP > 90 Hari | Piutang aging > 90 hari / Total piutang SPP | < 5% |
Risiko: penurunan mahasiswa baru, ketergantungan SPP > 90%, cash flow musiman, piutang SPP tidak tertagih.
Format Field Laporan Analisis
Indikator Utama (metrics):
| Field | Wajib | Deskripsi |
|---|---|---|
name | Ya | Nama metrik sesuai industri |
value | Ya | Nilai saat ini |
previousValue | Tidak | Nilai periode sebelumnya |
change | Tidak | Perubahan (contoh: "+12.5%", "+4pp") |
status | Tidak | positive (hijau), negative (merah), warning (kuning), neutral |
Temuan (findings):
| Field | Wajib | Deskripsi |
|---|---|---|
category | Ya | Kategori sesuai industri |
severity | Ya | info, warning, critical |
description | Ya | Deskripsi temuan |
Rekomendasi (recommendations):
| Field | Wajib | Deskripsi |
|---|---|---|
priority | Ya | high, medium, low |
description | Ya | Deskripsi rekomendasi |
impact | Tidak | Dampak yang diharapkan |
Risiko (risks):
| Field | Wajib | Deskripsi |
|---|---|---|
severity | Ya | high, medium, low |
description | Ya | Deskripsi risiko |
mitigation | Tidak | Langkah mitigasi |
Melihat Laporan di Web UI
Laporan yang sudah dipublikasikan tersedia di menu Laporan > Analisis AI.



Alur Lengkap
1. AI membaca data keuangan
GET /api/analysis/snapshot?month=2026-01
GET /api/analysis/income-statement?startDate=2026-01-01&endDate=2026-01-31
GET /api/analysis/receivables?asOfDate=2026-01-31
|
2. AI menganalisis data dan membuat laporan terstruktur
|
3. AI mempublikasikan laporan
POST /api/analysis/reports
|
4. Tim membuka menu Laporan > Analisis AI di web browser
|
5. Akuntan membaca temuan, rekomendasi, dan risiko
|
6. Tindak lanjut: buat jurnal penyesuaian, tagih piutang, dll.
Konsep Peringatan
Apa Itu Peringatan
Peringatan (Smart Alerts) adalah sistem notifikasi otomatis yang memantau kondisi keuangan perusahaan dan memberitahu pengguna jika ada anomali atau risiko yang perlu ditindaklanjuti. Sistem mengevaluasi 7 jenis aturan setiap hari dan menghasilkan event peringatan ketika ambang batas terlampaui.
Jenis Peringatan
| Tipe | Nama Indonesia | Deskripsi | Satuan Ambang Batas |
|---|---|---|---|
| CASH_LOW | Kas Rendah | Saldo kas + bank di bawah ambang batas | Rp |
| RECEIVABLE_OVERDUE | Piutang Jatuh Tempo | Ada piutang yang sudah jatuh tempo | — (0 = aktif) |
| EXPENSE_SPIKE | Lonjakan Biaya | Biaya bulan ini naik melebihi X% dari rata-rata 3 bulan sebelumnya | % |
| PROJECT_COST_OVERRUN | Proyek Melebihi Anggaran | Ada proyek yang biayanya melebihi anggaran | — (0 = aktif) |
| PROJECT_MARGIN_DROP | Margin Proyek Turun | Margin proyek turun di bawah X% | % |
| COLLECTION_SLOWDOWN | Penagihan Melambat | Rata-rata hari penagihan melebihi X hari | hari |
| CLIENT_CONCENTRATION | Konsentrasi Klien | Satu klien menyumbang lebih dari X% pendapatan | % |
Tingkat Keparahan (Severity)
| Severity | Indonesia | Warna Badge | Keterangan |
|---|---|---|---|
| INFO | Informasi | Biru | Kondisi yang perlu diketahui, tidak mendesak |
| WARNING | Peringatan | Kuning | Kondisi yang perlu segera diperhatikan |
| CRITICAL | Kritis | Merah | Kondisi darurat yang harus ditindaklanjuti segera |
Evaluasi Harian
Sistem menjalankan evaluasi seluruh aturan yang aktif setiap hari pukul 08:00 secara otomatis. Mekanisme:
- Setiap aturan yang
enabled = truedievaluasi - Jika kondisi ambang batas terpenuhi, event peringatan dibuat
- Deduplikasi 24 jam: jika sudah ada event yang belum dikonfirmasi untuk aturan yang sama dalam 24 jam terakhir, event baru tidak dibuat (mencegah duplikasi peringatan)
Konfigurasi Peringatan
Halaman Konfigurasi
Buka menu Laporan > Peringatan, lalu klik tab Konfigurasi atau navigasi langsung ke /alerts/config.

Halaman menampilkan daftar 7 aturan peringatan bawaan. Setiap aturan menampilkan:
- Nama tipe: Nama Indonesia dari jenis peringatan
- Deskripsi: Penjelasan kondisi yang dievaluasi
- Ambang Batas (Threshold): Nilai numerik yang menjadi batas pemicu
- Status Aktif: Checkbox untuk mengaktifkan/menonaktifkan aturan
Mengubah Ambang Batas
- Isi nilai baru pada field Ambang Batas sesuai jenis aturan:
- Kas Rendah: nominal dalam Rupiah (contoh:
10000000= Rp 10 juta) - Lonjakan Biaya: persentase (contoh:
30= 30%) - Margin Proyek Turun: persentase (contoh:
10= 10%) - Penagihan Melambat: jumlah hari (contoh:
30= 30 hari) - Konsentrasi Klien: persentase (contoh:
50= 50%) - Piutang Jatuh Tempo / Proyek Melebihi Anggaran:
0berarti selalu aktif
- Kas Rendah: nominal dalam Rupiah (contoh:
- Klik Simpan pada aturan yang diubah
Menonaktifkan Aturan
Hapus centang pada checkbox Aktif, lalu klik Simpan. Aturan yang nonaktif tidak akan dievaluasi pada jadwal harian.
Permission yang diperlukan: ALERT_CONFIG
Tampilan Layar
Screenshot belum tersedia
Halaman konfigurasi aturan peringatan: ambang batas dan status aktif
Peringatan Aktif
Halaman Peringatan Aktif
Buka menu Laporan > Peringatan atau navigasi ke /alerts.

Halaman menampilkan daftar peringatan yang belum dikonfirmasi (unacknowledged). Setiap peringatan menampilkan:
- Badge severity: Warna menunjukkan tingkat keparahan (biru = INFO, kuning = WARNING, merah = CRITICAL)
- Tipe peringatan: Nama Indonesia dari jenis peringatan
- Pesan: Detail kondisi yang memicu peringatan
- Waktu: Timestamp kapan peringatan dipicu
- Tombol Konfirmasi: Untuk menandai peringatan sudah ditindaklanjuti
Mengonfirmasi Peringatan
Klik tombol Konfirmasi pada peringatan yang sudah ditindaklanjuti. Peringatan yang dikonfirmasi berpindah ke halaman riwayat dan tidak lagi muncul di daftar aktif.
Permission yang diperlukan: ALERT_ACKNOWLEDGE
Tampilan Layar
Screenshot belum tersedia
Daftar peringatan aktif yang belum dikonfirmasi
Widget Dashboard
Widget Peringatan
Widget peringatan ditampilkan di halaman Dashboard (/dashboard), dimuat secara dinamis via HTMX.

Widget menampilkan:
- Jumlah peringatan per severity: Berapa peringatan aktif bertipe INFO, WARNING, dan CRITICAL
- 5 peringatan terbaru: Daftar singkat peringatan aktif dengan badge severity dan pesan
- Link ke halaman peringatan: Klik untuk melihat seluruh peringatan aktif
Widget ini membantu memantau kondisi keuangan tanpa harus membuka halaman peringatan secara terpisah.
Tampilan Layar
Screenshot belum tersedia
Widget peringatan pada halaman dashboard
Riwayat Peringatan
Halaman Riwayat
Buka navigasi ke /alerts/history atau klik tab Riwayat dari halaman peringatan.

Halaman menampilkan seluruh peringatan (aktif dan yang sudah dikonfirmasi) dalam tabel paginated. Informasi yang ditampilkan:
- Tipe: Jenis peringatan
- Severity: Tingkat keparahan
- Pesan: Detail peringatan
- Waktu Trigger: Kapan peringatan dipicu
- Status: Dikonfirmasi (dengan nama dan waktu) atau belum
Permission yang diperlukan: ALERT_VIEW
Tampilan Layar
Screenshot belum tersedia
Riwayat semua peringatan dengan filter
Faktur (Invoice)
Konsep
Faktur adalah dokumen penagihan yang dikirim ke klien setelah pekerjaan selesai. Setiap faktur memiliki line item (rincian jasa/barang), tanggal jatuh tempo, dan status yang berubah sesuai alur kerja.
Alur Kerja Faktur
DRAFT → SENT → PARTIAL → PAID
↑ ↑
(sebagian) (lunas)
| Status | Keterangan |
|---|---|
| DRAFT | Baru dibuat, bisa diedit |
| SENT | Sudah dikirim ke klien, menunggu pembayaran |
| PARTIAL | Sebagian dibayar |
| PAID | Lunas |
| OVERDUE | Melewati tanggal jatuh tempo |
Membuat Faktur
Buka menu Proyek > Faktur > Faktur Baru.
Isi data faktur:
- Klien: Pilih dari daftar klien
- Tanggal Faktur: Tanggal penerbitan
- Tanggal Jatuh Tempo: Batas waktu pembayaran
- Proyek (opsional): Kaitkan ke proyek tertentu
Tambahkan line item:
- Deskripsi: Keterangan jasa/barang
- Quantity: Jumlah
- Harga Satuan: Harga per unit
- Total: Dihitung otomatis (qty x harga satuan)
Klik Simpan untuk menyimpan sebagai DRAFT.

Mengirim Faktur
Dari halaman detail faktur, klik Kirim untuk mengubah status dari DRAFT ke SENT. Faktur yang sudah dikirim tidak bisa diedit.

Setelah dikirim, faktur masuk ke laporan umur piutang dan siap menerima pembayaran.
Tampilan Layar
Screenshot belum tersedia
Halaman detail faktur yang baru dibuat
Screenshot belum tersedia
Faktur setelah dikirim ke klien
Tagihan Vendor (Bill)
Konsep
Tagihan (bill) adalah dokumen yang diterima dari vendor untuk pembelian barang atau jasa. Alur kerjanya mirip faktur, tapi dari sisi pengeluaran.
Alur Kerja Tagihan
DRAFT → APPROVED → PARTIAL → PAID
↑ ↑
(sebagian) (lunas)
| Status | Keterangan |
|---|---|
| DRAFT | Baru dibuat, menunggu approval |
| APPROVED | Disetujui, menunggu pembayaran |
| PARTIAL | Sebagian dibayar |
| PAID | Lunas |
| OVERDUE | Melewati tanggal jatuh tempo |
Membuat Tagihan
Buka menu Pembelian > Tagihan > Tagihan Baru.
Isi data:
- Vendor: Pilih dari daftar vendor
- Tanggal Tagihan: Tanggal penerbitan oleh vendor
- Tanggal Jatuh Tempo: Batas pembayaran
- Nomor Referensi Vendor (opsional): Nomor tagihan dari vendor
Tambahkan line item seperti pada faktur.
Menyetujui Tagihan
Dari halaman detail tagihan, klik Setujui untuk mengubah status dari DRAFT ke APPROVED.

Tagihan yang disetujui masuk ke laporan umur hutang dan siap menerima pembayaran.
Tampilan Layar
Screenshot belum tersedia
Halaman detail tagihan vendor yang disetujui
Pelacakan Pembayaran
Mencatat Pembayaran Faktur
Buka halaman detail faktur yang berstatus SENT, PARTIAL, atau OVERDUE. Klik Catat Pembayaran untuk membuka form pembayaran.
Isi data pembayaran:
- Tanggal Pembayaran: Tanggal dana diterima
- Jumlah: Nominal pembayaran (bisa sebagian)
- Metode Pembayaran: Transfer, Cash, Cek, Kartu Kredit, E-Wallet, Lainnya
- Nomor Referensi: Nomor bukti transfer/kuitansi
- Catatan (opsional): Keterangan tambahan
Klik Simpan Pembayaran.
Pembayaran sebagian (partial): Jika jumlah pembayaran kurang dari total faktur, status berubah ke PARTIAL. Sisa tagihan (balance due) ditampilkan di halaman detail.

Pembayaran lunas: Jika total semua pembayaran sama dengan total faktur, status otomatis berubah ke PAID.

Mencatat Pembayaran Tagihan
Prosesnya sama dengan faktur. Buka halaman detail tagihan berstatus APPROVED, PARTIAL, atau OVERDUE, lalu catat pembayaran.

Riwayat Pembayaran
Setiap faktur/tagihan menampilkan tabel riwayat pembayaran di halaman detail:
- Tanggal pembayaran
- Jumlah
- Metode pembayaran
- Nomor referensi
Validasi
- Pembayaran hanya bisa dicatat pada faktur/tagihan dengan status yang tepat
- Jumlah pembayaran tidak boleh melebihi sisa tagihan (overpayment ditolak)
- Total pembayaran + pembayaran baru <= total faktur/tagihan
Tampilan Layar
Screenshot belum tersedia
Faktur dengan pembayaran sebagian dan sisa tagihan
Screenshot belum tersedia
Faktur yang sudah lunas
Screenshot belum tersedia
Tagihan vendor yang sudah dibayar lunas
Laporan Umur Piutang & Hutang
Konsep Aging
Laporan umur (aging report) mengelompokkan faktur/tagihan yang belum lunas berdasarkan berapa lama sudah jatuh tempo. Berguna untuk memantau risiko piutang tak tertagih dan prioritas pembayaran.
Bucket Aging
| Bucket | Keterangan |
|---|---|
| Belum Jatuh Tempo | Belum melewati due date |
| 1-30 hari | Terlambat 1-30 hari |
| 31-60 hari | Terlambat 31-60 hari |
| 61-90 hari | Terlambat 61-90 hari |
| > 90 hari | Terlambat lebih dari 90 hari |
Umur Piutang (Receivables Aging)
Buka menu Laporan > Umur Piutang.

Menampilkan:
- Ringkasan per bucket: Total piutang per kategori umur
- Tabel per klien: Rincian saldo per klien di setiap bucket
- Filter tanggal: Pilih tanggal acuan (as-of date)
Setelah pembayaran sebagian, saldo di aging report berkurang sesuai jumlah yang sudah dibayar.

Setelah lunas, klien hilang dari laporan aging.

Umur Hutang (Payables Aging)
Buka menu Laporan > Umur Hutang. Format sama dengan umur piutang, tapi untuk tagihan vendor.

Tampilan Layar
Screenshot belum tersedia
Laporan aging receivables dengan faktur belum dibayar
Screenshot belum tersedia
Laporan aging setelah pembayaran sebagian
Screenshot belum tersedia
Laporan aging setelah semua faktur lunas
Screenshot belum tersedia
Laporan aging payables dengan tagihan belum dibayar
Laporan Klien & Vendor
Konsep Statement
Laporan per klien/vendor (statement) menampilkan riwayat transaksi secara kronologis dengan saldo berjalan (running balance). Berguna untuk rekonsiliasi dengan klien/vendor dan verifikasi posisi piutang/hutang.
Laporan Klien
Akses dari halaman detail klien: klik Lihat Laporan, atau langsung ke Laporan > Laporan Klien.

Informasi yang ditampilkan:
- Periode: Filter tanggal mulai dan akhir
- Saldo Awal: Total piutang sebelum periode
- Tabel Transaksi: Setiap baris menampilkan:
- Tanggal
- Tipe (Invoice atau Pembayaran)
- Nomor referensi
- Keterangan
- Jumlah invoice / jumlah pembayaran
- Saldo berjalan
- Saldo Akhir: Posisi piutang akhir periode
- Cetak: Buka versi cetak (print-friendly, A4 landscape)
Laporan Vendor
Format sama dengan laporan klien, tapi menampilkan tagihan (bill) dan pembayaran ke vendor.

Akses dari halaman detail vendor: klik Lihat Laporan.
Tampilan Layar
Screenshot belum tersedia
Laporan per klien dengan saldo berjalan
Screenshot belum tersedia
Laporan per vendor dengan saldo berjalan
Contoh Alur Lengkap
Walk-through siklus penagihan dari awal sampai lunas.
Langkah 1: Buat Faktur
Buat faktur untuk klien PT Telkom dengan 2 line item:
- Jasa Pengembangan Aplikasi: 1 x Rp 10.000.000
- Jasa Maintenance Bulanan: 5 x Rp 1.000.000
- Total: Rp 15.000.000
Langkah 2: Kirim Faktur
Kirim faktur. Status berubah ke SENT. Faktur muncul di laporan umur piutang pada bucket "Belum Jatuh Tempo".
Langkah 3: Terima Pembayaran Sebagian
Klien membayar Rp 5.000.000 via transfer. Status berubah ke PARTIAL. Sisa tagihan: Rp 10.000.000.
Di laporan aging, nominal berubah dari Rp 15.000.000 menjadi Rp 10.000.000.
Langkah 4: Terima Pembayaran Final
Klien membayar sisa Rp 10.000.000. Status berubah ke PAID. Faktur hilang dari laporan aging.
Langkah 5: Periksa Laporan Klien
Buka laporan klien PT Telkom. Terlihat:
- Invoice Rp 15.000.000 → saldo naik
- Pembayaran Rp 5.000.000 → saldo turun
- Pembayaran Rp 10.000.000 → saldo menjadi 0
Konsep Transaksi Berulang
Apa Itu Transaksi Berulang
Transaksi Berulang adalah fitur untuk mengotomatisasi pencatatan transaksi yang terjadi secara rutin dengan jumlah tetap. Contoh: sewa kantor bulanan, biaya langganan, pembayaran retainer, atau cicilan.
Sistem menjalankan scheduler harian pada pukul 05:00 yang memproses seluruh transaksi berulang yang sudah jatuh tempo, membuat transaksi baru secara otomatis, dan mencatat hasilnya.
Frekuensi yang Didukung
| Frekuensi | Indonesia | Keterangan |
|---|---|---|
| DAILY | Harian | Setiap hari |
| WEEKLY | Mingguan | Hari tertentu dalam minggu (Senin-Minggu) |
| MONTHLY | Bulanan | Tanggal tertentu dalam bulan (1-28) |
| QUARTERLY | Triwulanan | Setiap 3 bulan pada tanggal tertentu |
| YEARLY | Tahunan | Setiap tahun pada tanggal tertentu |
Status Transaksi Berulang
| Status | Indonesia | Warna Badge | Keterangan |
|---|---|---|---|
| ACTIVE | Aktif | Hijau | Dijadwalkan dan dieksekusi otomatis |
| PAUSED | Dijeda | Kuning | Dihentikan sementara, bisa dilanjutkan |
| COMPLETED | Selesai | Abu-abu | Tidak akan dieksekusi lagi |
Membuat Transaksi Berulang
Halaman Daftar
Buka menu Akuntansi > Transaksi Berulang di sidebar, atau navigasi langsung ke /recurring.

Halaman menampilkan:
- Kartu ringkasan: jumlah Aktif, Dijeda, Selesai
- Filter status: filter berdasarkan status
- Tabel: nama, template, frekuensi, jumlah, jadwal berikut, total eksekusi, status
Formulir Pembuatan
Klik tombol + Transaksi Berulang Baru untuk membuka formulir.
Field yang harus diisi:
| Field | Wajib | Keterangan |
|---|---|---|
| Nama | Ya | Nama deskriptif (contoh: "Sewa Kantor Bulanan") |
| Template Jurnal | Ya | Template yang digunakan untuk membuat transaksi |
| Jumlah (Rp) | Ya | Nominal transaksi |
| Deskripsi | Ya | Deskripsi yang akan muncul di transaksi |
| Frekuensi | Ya | Harian/Mingguan/Bulanan/Triwulanan/Tahunan |
| Tanggal | Kondisional | Tanggal 1-28 untuk Bulanan/Triwulanan/Tahunan |
| Hari | Kondisional | Senin-Minggu untuk Mingguan |
| Tanggal Mulai | Ya | Tanggal pertama eksekusi |
| Tanggal Selesai | Tidak | Kosongkan jika tanpa batas waktu |
| Maks. Eksekusi | Tidak | Jumlah maksimum eksekusi, kosongkan jika tanpa batas |
Opsi tambahan:
- Lewati Akhir Pekan: Jika jadwal jatuh pada Sabtu/Minggu, eksekusi dipindah ke Senin berikutnya
- Posting Otomatis: Jika dicentang, transaksi langsung diposting. Jika tidak, disimpan sebagai Draft
Detail dan Pengelolaan
Halaman Detail
Klik nama transaksi berulang di daftar untuk melihat detail.

Halaman menampilkan:
- Informasi: jumlah, frekuensi, deskripsi, tanggal mulai/selesai, jadwal berikut, total eksekusi
- Jadwal 5 Eksekusi Berikutnya: preview tanggal-tanggal eksekusi mendatang
- Riwayat Eksekusi: log setiap eksekusi (Berhasil/Gagal/Dilewati) beserta link ke transaksi yang dibuat
Aksi yang Tersedia
| Aksi | Kondisi | Keterangan |
|---|---|---|
| Edit | Status bukan Selesai | Mengubah konfigurasi |
| Jeda | Status Aktif | Menghentikan sementara eksekusi |
| Lanjutkan | Status Dijeda | Melanjutkan eksekusi, jadwal dihitung ulang dari hari ini |
| Selesaikan | Status bukan Selesai | Menghentikan permanen |
| Hapus | Semua status | Soft delete, transaksi yang sudah dibuat tidak terpengaruh |
Tampilan Layar
Screenshot belum tersedia
Halaman detail transaksi berulang dengan jadwal dan riwayat eksekusi
Eksekusi Otomatis (Scheduler)
Jadwal Eksekusi
Scheduler berjalan setiap hari pukul 05:00 (sebelum amortisasi pukul 06:00). Proses:
- Query semua transaksi berulang dengan status ACTIVE dan
nextRunDate <= hari ini - Untuk setiap item:
- Jika Lewati Akhir Pekan aktif dan tanggal jatuh pada Sabtu/Minggu: dipindah ke Senin
- Buat transaksi baru dari template + jumlah + deskripsi + mapping akun
- Jika Posting Otomatis aktif: posting transaksi
- Catat log eksekusi (SUCCESS)
- Update
nextRunDate,lastRunDate,totalRuns
- Jika
maxOccurrencestercapai ataunextRunDatemelewatiendDate: set status COMPLETED - Jika terjadi error: catat log (FAILED) dengan pesan error, lanjut ke item berikutnya
Status Log Eksekusi
| Status | Indonesia | Keterangan |
|---|---|---|
| SUCCESS | Berhasil | Transaksi berhasil dibuat |
| FAILED | Gagal | Terjadi error saat pembuatan transaksi |
| SKIPPED | Dilewati | Dilewati karena jatuh pada akhir pekan |
Hak Akses
| Permission | Admin | Owner | Accountant | Staff | Auditor |
|---|---|---|---|---|---|
| RECURRING_VIEW | Ya | Ya | Ya | Ya | Ya |
| RECURRING_CREATE | Ya | Ya | Ya | — | — |
| RECURRING_EDIT | Ya | Ya | Ya | — | — |
| RECURRING_DELETE | Ya | Ya | Ya | — | — |
Glosarium

Istilah Akuntansi
A
Akumulasi Amortisasi Kontra akun aset tak berwujud yang mencatat total amortisasi sejak aset diperoleh.
Amortisasi Proses pengalokasian biaya aset tak berwujud atau beban dibayar dimuka secara bertahap ke periode-periode yang menerima manfaat.
Aset Sumber daya yang dimiliki perusahaan yang memiliki nilai ekonomi. Contoh: kas, piutang, peralatan.
Aset Tak Berwujud Aset non-fisik yang memiliki nilai ekonomi jangka panjang. Contoh: website, software, hak paten.
B
Beban Pengeluaran yang terjadi dalam rangka menghasilkan pendapatan. Contoh: beban gaji, beban sewa.
Beban Dibayar Dimuka Pembayaran yang dilakukan di muka untuk jasa atau barang yang akan diterima di masa depan. Contoh: asuransi, sewa.
BOM (Bill of Materials) Daftar komponen yang diperlukan untuk memproduksi satu unit produk. Digunakan di industri manufaktur.
BPJS Badan Penyelenggara Jaminan Sosial. BPJS Kesehatan untuk jaminan kesehatan, BPJS Ketenagakerjaan untuk jaminan ketenagakerjaan (JHT, JKK, JKM, JP).
Buku Besar Kumpulan semua akun yang mencatat setiap transaksi secara kronologis.
C
COA (Chart of Accounts) Bagan Akun - daftar semua akun yang digunakan untuk mencatat transaksi keuangan.
D
Debit Sisi kiri dalam pencatatan akuntansi. Menambah aset dan beban, mengurangi kewajiban dan pendapatan.
Depresiasi (Penyusutan) Alokasi biaya aset tetap selama masa manfaatnya.
DPP (Dasar Pengenaan Pajak) Nilai yang menjadi dasar perhitungan pajak. Untuk PPN, DPP adalah harga sebelum pajak.
Draft Status transaksi atau dokumen yang tersimpan tapi belum final/diposting.
E
Ekuitas Hak pemilik atas aset perusahaan setelah dikurangi kewajiban. Ekuitas = Aset - Kewajiban.
F
Faktur Pajak Dokumen bukti pungutan PPN yang dibuat oleh PKP saat menyerahkan BKP/JKP.
FIFO (First In First Out) Metode penilaian persediaan di mana barang yang masuk lebih dulu, keluar lebih dulu.
H
HPP (Harga Pokok Penjualan) Biaya langsung yang dikeluarkan untuk menghasilkan barang/jasa yang dijual.
J
Jurnal Catatan kronologis transaksi keuangan dengan format debit dan kredit.
Jurnal Penyesuaian Jurnal yang dibuat di akhir periode untuk menyesuaikan saldo akun. Contoh: amortisasi, penyusutan.
K
Kas Uang tunai dan setara kas yang dimiliki perusahaan.
Kewajiban Hutang perusahaan kepada pihak lain. Contoh: hutang usaha, hutang pajak.
Kredit Sisi kanan dalam pencatatan akuntansi. Menambah kewajiban dan pendapatan, mengurangi aset dan beban.
L
Laba Bersih Selisih antara total pendapatan dan total beban dalam suatu periode.
Laba Kotor Pendapatan dikurangi biaya langsung, sebelum dikurangi beban operasional.
Laporan Laba Rugi Laporan keuangan yang menunjukkan pendapatan dan beban selama periode tertentu.
M
Margin Persentase laba terhadap pendapatan. Margin = (Laba / Pendapatan) × 100%.
Milestone Tahapan penting dalam proyek yang menandai pencapaian tertentu.
N
Neraca Laporan posisi keuangan yang menunjukkan aset, kewajiban, dan ekuitas pada tanggal tertentu.
Neraca Saldo Daftar semua akun beserta saldo debit dan kredit untuk memvalidasi keseimbangan pembukuan.
NTPN (Nomor Transaksi Penerimaan Negara) Nomor bukti penerimaan negara yang diterbitkan saat penyetoran pajak.
P
Pendapatan Penerimaan dari aktivitas utama bisnis. Contoh: pendapatan jasa, penjualan.
Pendapatan Akrual Pendapatan yang sudah menjadi hak perusahaan tapi belum diterima pembayarannya.
Pendapatan Diterima Dimuka Pembayaran yang diterima sebelum jasa/barang diserahkan. Dicatat sebagai kewajiban.
Piutang Hak perusahaan atas uang dari pelanggan yang belum diterima.
Posting Proses memindahkan transaksi dari status draft menjadi final dan mempengaruhi saldo akun.
PPN (Pajak Pertambahan Nilai) Pajak yang dikenakan atas penyerahan barang/jasa kena pajak. Tarif standar 11%.
PPN Keluaran PPN yang dipungut dari penjualan. Dicatat sebagai hutang pajak.
PPN Masukan PPN yang dibayar pada pembelian. Dapat dikreditkan dengan PPN Keluaran.
PPh (Pajak Penghasilan) Pajak atas penghasilan. PPh 21 untuk karyawan, PPh 23 untuk jasa, PPh 4(2) untuk final.
PTKP (Penghasilan Tidak Kena Pajak) Batas penghasilan yang tidak dikenakan pajak. Berbeda berdasarkan status pernikahan dan tanggungan.
R
Revenue Recognition Prinsip akuntansi yang menentukan kapan pendapatan diakui dalam laporan keuangan.
S
Saldo Berjalan Saldo akun yang terus diperbarui setiap kali ada transaksi.
SPT (Surat Pemberitahuan) Surat yang digunakan untuk melaporkan perhitungan dan pembayaran pajak.
T
Template Jurnal Pola pencatatan yang sudah dikonfigurasi untuk mempermudah pencatatan transaksi berulang.
Termin Pembayaran Jadwal pembayaran yang disepakati dalam kontrak, biasanya terkait dengan milestone proyek.
Transaksi Aktivitas keuangan yang dicatat dalam sistem akuntansi.
V
Void Pembatalan transaksi yang sudah diposting. Menghasilkan jurnal reversal otomatis.
W
Weighted Average Metode penilaian persediaan berdasarkan harga rata-rata tertimbang.
WIP (Work in Progress) Barang setengah jadi dalam proses produksi.
Singkatan
| Singkatan | Kepanjangan |
|---|---|
| BKP | Barang Kena Pajak |
| BOM | Bill of Materials |
| BPJS | Badan Penyelenggara Jaminan Sosial |
| COA | Chart of Accounts (Bagan Akun) |
| DPP | Dasar Pengenaan Pajak |
| FIFO | First In First Out |
| HPP | Harga Pokok Penjualan |
| JHT | Jaminan Hari Tua |
| JKK | Jaminan Kecelakaan Kerja |
| JKM | Jaminan Kematian |
| JKP | Jasa Kena Pajak |
| JP | Jaminan Pensiun |
| KPI | Key Performance Indicator |
| NPWP | Nomor Pokok Wajib Pajak |
| NTPN | Nomor Transaksi Penerimaan Negara |
| Portable Document Format | |
| PII | Personally Identifiable Information |
| PKP | Pengusaha Kena Pajak |
| PPN | Pajak Pertambahan Nilai |
| PPh | Pajak Penghasilan |
| PSAK | Pernyataan Standar Akuntansi Keuangan |
| PTKP | Penghasilan Tidak Kena Pajak |
| SPT | Surat Pemberitahuan |
| TER | Tarif Efektif Rata-rata |
| UKM | Usaha Kecil dan Menengah |
| WA | Weighted Average |
| WIP | Work in Progress |
Rumus Dasar
Persamaan Akuntansi
Aset = Kewajiban + Ekuitas
Laba Bersih
Laba = Pendapatan - Beban
PPN
PPN = DPP × 11%
DPP = Harga Inklusif / 1.11
PPh 23
PPh 23 = DPP × 2%
Margin Laba
Margin = (Laba / Pendapatan) × 100%
ROI (Return on Investment)
ROI = (Laba / Biaya) × 100%
Depresiasi Garis Lurus
Depresiasi/Tahun = (Harga Perolehan - Nilai Residu) / Masa Manfaat
HPP (FIFO)
HPP = Σ (Qty Terjual × Harga Beli dari Batch Terlama)
HPP (Weighted Average)
Avg Cost = Total Nilai Persediaan / Total Qty
HPP = Qty Terjual × Avg Cost
Lihat Juga
- Tutorial Akuntansi - Penjelasan konsep akuntansi dasar
- Referensi Akun - Daftar kode akun
- Referensi Template - Daftar template bawaan
Referensi Template

Daftar template transaksi standar yang tersedia dalam seed data. Template mempermudah pencatatan transaksi karena akun-akun sudah dikonfigurasi.
Kategori Template
| Kategori | Jumlah | Deskripsi |
|---|---|---|
| Pendapatan | 9 | Template untuk mencatat penerimaan |
| Pengeluaran | 12 | Template untuk mencatat pembayaran |
| Transfer | 3 | Template untuk transfer antar akun |
| Pajak | 6 | Template untuk setoran pajak |
| Payroll | 4 | Template untuk penggajian |
| Inventory | 4 | Template untuk persediaan |
Template Pendapatan
Pendapatan Jasa + PPN (PKP)
Digunakan: Menerima pembayaran jasa dari klien (PKP). DPP Nilai Lain (PMK 131/2024).
| Field | Input |
|---|---|
| Jumlah | Harga Jual (sebelum PPN) |
Jurnal:
Dr. Bank/Kas amount * 1.11
Cr. Hutang PPN amount * 0.11
Cr. Pendapatan Jasa amount
Formula PPN:
amount * 0.11= nominal 12% × DPP Nilai Lain (11/12 × Harga Jual). Lihat Perpajakan — Konsep PPN.
Pendapatan Jasa (Non-PKP)
Digunakan: Menerima pembayaran jasa tanpa PPN
Jurnal:
Dr. Bank/Kas amount
Cr. Pendapatan Jasa amount
Terima DP Proyek
Digunakan: Menerima uang muka proyek
Jurnal:
Dr. Bank/Kas amount
Cr. Pendapatan Diterima Dimuka amount
Pengakuan Pendapatan (Revenue Recognition)
Digunakan: Mengakui pendapatan saat milestone selesai
Jurnal:
Dr. Pendapatan Diterima Dimuka amount
Cr. Pendapatan Jasa amount
Terima Pelunasan Piutang
Digunakan: Klien melunasi piutang
Jurnal:
Dr. Bank/Kas amount
Cr. Piutang Usaha amount
Pendapatan Bunga
Digunakan: Terima bunga deposito/tabungan
Jurnal:
Dr. Bank amount
Cr. Pendapatan Bunga amount
Penjualan Barang + PPN
Digunakan: Menjual barang dengan PPN. DPP Nilai Lain (PMK 131/2024).
Jurnal:
Dr. Bank/Kas amount * 1.11
Cr. Hutang PPN amount * 0.11
Cr. Penjualan amount
Formula PPN:
amount * 0.11= nominal 12% × DPP Nilai Lain (11/12 × Harga Jual).
Penjualan Barang (Non-PKP)
Digunakan: Menjual barang tanpa PPN
Jurnal:
Dr. Bank/Kas amount
Cr. Penjualan amount
Pendapatan Jasa BUMN (FP 03)
Digunakan: Pendapatan jasa ke klien BUMN/Pemerintah. PPN dipungut pembeli (Faktur Pajak kode 03), PPh 23 dipotong.
| Field | Input |
|---|---|
| Jumlah | Harga Jual |
Jurnal:
Dr. Bank/Kas amount * 0.98
Dr. Kredit PPh 23 amount * 0.02
Cr. Pendapatan Jasa amount
Template Pengeluaran
Beban Operasional
Digunakan: Pengeluaran operasional umum (listrik, internet, dll)
Field:
- Jumlah
- Akun Beban (dropdown)
Jurnal:
Dr. [Akun Beban] amount
Cr. Bank/Kas amount
Beban dengan PPN (dapat dikreditkan)
Digunakan: Pembelian dengan faktur pajak. DPP Nilai Lain (PMK 131/2024).
Jurnal:
Dr. [Akun Beban] amount
Dr. PPN Masukan amount * 0.11
Cr. Bank/Kas amount * 1.11
Formula PPN:
amount * 0.11= nominal 12% × DPP Nilai Lain (11/12 × Harga Jual).
Pembelian Aset Tetap
Digunakan: Beli peralatan, kendaraan, dll
Jurnal:
Dr. Aset Tetap amount
Cr. Bank/Kas amount
Bayar Jasa + PPh 23
Digunakan: Bayar jasa freelancer/vendor dengan potong PPh 23
Jurnal:
Dr. Beban Jasa amount
Cr. Hutang PPh 23 amount * 2%
Cr. Bank/Kas amount * 98%
Bayar Sewa + PPh 4(2)
Digunakan: Bayar sewa gedung/tanah
Jurnal:
Dr. Beban Sewa amount
Cr. Hutang PPh 4(2) amount * 10%
Cr. Bank/Kas amount * 90%
Beban Gaji (Simple)
Digunakan: Bayar gaji tanpa proses payroll penuh
Jurnal:
Dr. Beban Gaji amount
Cr. Bank/Kas amount
Template Transfer
Transfer Antar Bank
Digunakan: Pindah dana antar rekening
Field:
- Dari Akun (dropdown)
- Ke Akun (dropdown)
- Jumlah
Jurnal:
Dr. [Bank Tujuan] amount
Cr. [Bank Asal] amount
Tarik Tunai
Digunakan: Tarik uang dari bank ke kas
Jurnal:
Dr. Kas amount
Cr. Bank amount
Setor Tunai
Digunakan: Setor uang dari kas ke bank
Jurnal:
Dr. Bank amount
Cr. Kas amount
Template Pajak
Setor PPN
Digunakan: Bayar PPN ke negara
Jurnal:
Dr. Hutang PPN amount
Cr. Bank amount
Setor PPh 21
Digunakan: Bayar PPh 21 karyawan ke negara
Jurnal:
Dr. Hutang PPh 21 amount
Cr. Bank amount
Setor PPh 23
Digunakan: Bayar PPh 23 ke negara
Jurnal:
Dr. Hutang PPh 23 amount
Cr. Bank amount
Setor PPh 25
Digunakan: Bayar angsuran PPh bulanan
Jurnal:
Dr. Hutang PPh 25 amount
Cr. Bank amount
Setor PPh 4(2)
Digunakan: Bayar PPh final
Jurnal:
Dr. Hutang PPh 4(2) amount
Cr. Bank amount
Setor PPh 29
Digunakan: Bayar PPh kurang bayar tahunan
Jurnal:
Dr. Hutang PPh 29 amount
Cr. Bank amount
Template Payroll
Posting Gaji
Digunakan: Posting hasil perhitungan payroll
Jurnal:
Dr. Beban Gaji gross_salary
Dr. Beban BPJS Perusahaan bpjs_company
Cr. Hutang Gaji net_salary
Cr. Hutang BPJS bpjs_total
Cr. Hutang PPh 21 pph21
Bayar Gaji
Digunakan: Transfer gaji ke rekening karyawan
Jurnal:
Dr. Hutang Gaji amount
Cr. Bank amount
Setor BPJS
Digunakan: Bayar iuran BPJS ke BPJS
Jurnal:
Dr. Hutang BPJS amount
Cr. Bank amount
Template Inventory
Pembelian Barang Dagang
Digunakan: Beli barang untuk dijual kembali
Jurnal:
Dr. Persediaan Barang Dagang amount
Cr. Bank/Kas amount
Penjualan dengan HPP
Digunakan: Jual barang (sistem hitung HPP otomatis)
Jurnal:
Dr. Bank/Kas selling_price
Cr. Penjualan selling_price
Dr. HPP cogs
Cr. Persediaan Barang Dagang cogs
Adjustment Stok (+)
Digunakan: Tambah stok (stock opname surplus)
Jurnal:
Dr. Persediaan amount
Cr. Selisih Persediaan amount
Adjustment Stok (-)
Digunakan: Kurang stok (rusak, hilang)
Jurnal:
Dr. Beban Selisih Persediaan amount
Cr. Persediaan amount
Membuat Template Baru
Jika template standar tidak mencukupi:
- Buka menu Pengaturan > Template
- Klik Template Baru
- Isi:
- Nama template
- Kategori (Pendapatan, Pengeluaran, Transfer, dll)
- Klasifikasi Arus Kas (Operasional, Investasi, Pendanaan)
- Tipe Template (Sederhana / Terperinci)
- Baris jurnal dengan formula
- (Opsional) Buka bagian Metadata AI untuk mengisi metadata yang digunakan AI assistant saat mencocokkan template
- Klik Simpan
Lihat Setup Awal untuk panduan detail.
Metadata AI pada Template
Setiap template memiliki field metadata opsional yang digunakan oleh AI assistant untuk mencocokkan template secara otomatis saat mencatat transaksi. Metadata ini dapat dikelola melalui bagian Metadata AI (collapsible) pada form template.
Field Metadata
| Field | Deskripsi | Contoh |
|---|---|---|
| Deskripsi Semantik | Penjelasan kapan dan bagaimana template digunakan | "Gunakan template ini untuk mencatat pembayaran tagihan listrik bulanan ke PLN" |
| Keywords | Kata kunci untuk matching, dipisah koma | listrik, pln, token, utility |
| Contoh Merchant | Nama merchant yang biasa menggunakan template ini | PLN, PLN Mobile, Tokopedia PLN |
| Rentang Nominal | Rentang jumlah transaksi tipikal (min-max) | Rp 50.000 - Rp 5.000.000 |
| Pola Merchant | Regex pattern untuk matching merchant name | .*pln.*, .*listrik.* |
Tampilan di Halaman Detail
Pada halaman detail template, metadata ditampilkan sebagai card Metadata AI dengan:
- Deskripsi semantik sebagai paragraf teks
- Keywords sebagai badge hijau
- Contoh merchant sebagai badge biru
- Rentang nominal dalam format
Rp X - Rp Y - Pola merchant sebagai badge monospace
Card ini hanya muncul jika minimal satu field metadata terisi.

Form Edit Metadata
Buka bagian Metadata AI (collapsible) pada form edit template untuk mengisi atau mengubah metadata.

Cara AI Menggunakan Metadata
Lihat Bantuan AI untuk penjelasan cara AI matching template berdasarkan metadata.
Lihat Juga
- Setup Awal - Mengelola template
- Tutorial Akuntansi - Cara menggunakan template
- Referensi Akun - Daftar akun yang digunakan
Referensi Amortisasi & Depresiasi
Tabel masa manfaat dan tarif penyusutan sesuai regulasi Indonesia.
Kelompok Aset Tetap (PMK 96/PMK.03/2009)
Kelompok 1 (Masa Manfaat 4 Tahun)
| Tarif | Garis Lurus | Saldo Menurun |
|---|---|---|
| Per Tahun | 25% | 50% |
Contoh Aset:
- Komputer dan laptop
- Printer dan scanner
- Mesin ketik
- Peralatan komunikasi (telepon, fax)
- Kendaraan roda 2 (motor)
- Mebel dan peralatan dari kayu/rotan
Kelompok 2 (Masa Manfaat 8 Tahun)
| Tarif | Garis Lurus | Saldo Menurun |
|---|---|---|
| Per Tahun | 12.5% | 25% |
Contoh Aset:
- Kendaraan roda 4 (mobil)
- Mebel dan peralatan dari logam
- Peralatan AC dan refrigerator
- Mesin produksi ringan
- Perabotan kantor
Kelompok 3 (Masa Manfaat 16 Tahun)
| Tarif | Garis Lurus | Saldo Menurun |
|---|---|---|
| Per Tahun | 6.25% | 12.5% |
Contoh Aset:
- Mesin produksi berat
- Peralatan pabrik
- Instalasi listrik
- Tangki dan kontainer
Kelompok 4 (Masa Manfaat 20 Tahun)
| Tarif | Garis Lurus | Saldo Menurun |
|---|---|---|
| Per Tahun | 5% | 10% |
Contoh Aset:
- Bangunan permanen
- Konstruksi
- Jalan, jembatan
- Saluran air
Aset Tak Berwujud
Amortisasi Standar
| Jenis | Masa Manfaat | Tarif/Tahun |
|---|---|---|
| Software | 4 tahun | 25% |
| Website | 4 tahun | 25% |
| Lisensi | Sesuai masa lisensi | Varies |
| Hak Paten | 20 tahun | 5% |
| Hak Cipta | Usia ekonomis | Varies |
Beban Dibayar Dimuka
Amortisasi Bulanan
| Jenis | Masa Amortisasi |
|---|---|
| Sewa Tahunan | 12 bulan |
| Asuransi Tahunan | 12 bulan |
| Langganan Software | Sesuai periode |
| Domain & Hosting | 12 bulan |
Contoh Perhitungan
Sewa Kantor:
- Total: Rp 60.000.000/tahun
- Periode: Januari - Desember 2025
- Amortisasi/bulan: Rp 5.000.000
Jurnal awal (bayar sewa):
Dr. Sewa Dibayar Dimuka 60.000.000
Cr. Bank 60.000.000
Jurnal bulanan (amortisasi):
Dr. Beban Sewa 5.000.000
Cr. Sewa Dibayar Dimuka 5.000.000
Metode Penyusutan
Garis Lurus (Straight Line)
Rumus:
Penyusutan/Tahun = (Harga Perolehan - Nilai Residu) / Masa Manfaat
Karakteristik:
- Beban sama setiap tahun
- Sederhana
- Cocok untuk aset dengan pemakaian merata
Contoh: | Data | Nilai | |------|-------| | Harga Perolehan | Rp 12.000.000 | | Nilai Residu | Rp 0 | | Masa Manfaat | 4 tahun | | Penyusutan/Tahun | Rp 3.000.000 |
Saldo Menurun (Declining Balance)
Rumus:
Penyusutan Tahun ke-n = Nilai Buku Awal Tahun × Tarif
Karakteristik:
- Beban besar di awal
- Sesuai untuk aset yang kehilangan nilai cepat di awal
- Lebih agresif dari garis lurus
Contoh: | Tahun | Nilai Buku Awal | Penyusutan (50%) | Nilai Buku Akhir | |-------|-----------------|------------------|------------------| | 1 | 12.000.000 | 6.000.000 | 6.000.000 | | 2 | 6.000.000 | 3.000.000 | 3.000.000 | | 3 | 3.000.000 | 1.500.000 | 1.500.000 | | 4 | 1.500.000 | 1.500.000 | 0 |
Kategori Aset Standar (Seed Data)
| Kategori | Kelompok | Masa Manfaat | Metode |
|---|---|---|---|
| Komputer & Laptop | 1 | 4 tahun | Garis Lurus |
| Peralatan Kantor | 1 | 4 tahun | Garis Lurus |
| Printer & Scanner | 1 | 4 tahun | Garis Lurus |
| Kendaraan Roda 2 | 1 | 4 tahun | Garis Lurus |
| Kendaraan Roda 4 | 2 | 8 tahun | Garis Lurus |
| Perabotan | 2 | 8 tahun | Garis Lurus |
| AC & Refrigerator | 2 | 8 tahun | Garis Lurus |
| Mesin Produksi | 3 | 16 tahun | Garis Lurus |
| Bangunan | 4 | 20 tahun | Garis Lurus |
Implikasi Pajak
Deductibility
- Penyusutan aset adalah beban yang dapat mengurangi penghasilan kena pajak
- Metode dan masa manfaat harus sesuai PMK 96/PMK.03/2009
- Aset di bawah Rp 10.000.000 boleh langsung dibebankan (tidak di-kapitalisasi)
Dokumentasi
Untuk keperluan audit pajak, simpan:
- Faktur pembelian aset
- Bukti pembayaran
- Kartu aset dengan jadwal penyusutan
- Laporan Penyusutan format Lampiran 1A
Lihat Juga
- Aset Tetap - Pencatatan dan manajemen aset
- Perpajakan - Deductibility beban
- Glosarium - Definisi istilah
Referensi Akun

Daftar akun standar yang tersedia dalam seed data. Akun dikelompokkan berdasarkan tipe dan sub-tipe.
Struktur Kode Akun
| Kode | Tipe | Saldo Normal |
|---|---|---|
| 1.x.xx | Aset | Debit |
| 2.x.xx | Kewajiban | Kredit |
| 3.x.xx | Ekuitas | Kredit |
| 4.x.xx | Pendapatan | Kredit |
| 5.x.xx | Beban | Debit |
1. Aset (Assets)
1.1 Aset Lancar (Current Assets)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 1.1.01 | Kas Kecil | Uang tunai di tangan |
| 1.1.02 | Kas Besar | Kas operasional |
| 1.1.10 | Bank BCA | Rekening Bank BCA |
| 1.1.11 | Bank Mandiri | Rekening Bank Mandiri |
| 1.1.12 | Bank BNI | Rekening Bank BNI |
| 1.1.15 | Deposito | Deposito berjangka |
| 1.1.20 | Piutang Usaha | Tagihan ke pelanggan |
| 1.1.21 | Piutang Karyawan | Pinjaman ke karyawan |
| 1.1.25 | PPN Masukan | PPN yang dapat dikreditkan |
| 1.1.30 | Sewa Dibayar Dimuka | Sewa yang belum jatuh tempo |
| 1.1.31 | Asuransi Dibayar Dimuka | Premi yang belum jatuh tempo |
| 1.1.35 | Perlengkapan | Perlengkapan kantor |
| 1.1.40 | Persediaan Barang Dagang | Barang untuk dijual (Dagang) |
| 1.1.41 | Persediaan Bahan Baku | Bahan untuk produksi (Manufaktur) |
| 1.1.42 | Persediaan Barang Jadi | Hasil produksi (Manufaktur) |
1.2 Aset Tetap (Fixed Assets)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 1.2.01 | Peralatan Kantor | Komputer, printer, dll |
| 1.2.02 | Akum. Penyusutan Peralatan | Kontra akun peralatan |
| 1.2.05 | Kendaraan | Kendaraan operasional |
| 1.2.06 | Akum. Penyusutan Kendaraan | Kontra akun kendaraan |
| 1.2.10 | Perabotan | Meja, kursi, lemari |
| 1.2.11 | Akum. Penyusutan Perabotan | Kontra akun perabotan |
| 1.2.15 | Bangunan | Gedung dan bangunan |
| 1.2.16 | Akum. Penyusutan Bangunan | Kontra akun bangunan |
1.3 Aset Tak Berwujud (Intangible Assets)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 1.3.01 | Website | Biaya pengembangan website |
| 1.3.02 | Akum. Amortisasi Website | Kontra akun website |
| 1.3.05 | Software | Lisensi software |
| 1.3.06 | Akum. Amortisasi Software | Kontra akun software |
2. Kewajiban (Liabilities)
2.1 Kewajiban Lancar (Current Liabilities)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 2.1.01 | Hutang Usaha | Hutang ke vendor/supplier |
| 2.1.02 | Hutang Gaji | Gaji yang belum dibayar |
| 2.1.03 | Hutang PPN | PPN yang harus disetor |
| 2.1.07 | Hutang Gaji (Payroll) | Gaji neto dari payroll bulanan |
| 2.1.08 | Hutang BPJS | Iuran BPJS yang belum disetor |
| 2.1.10 | Pendapatan Diterima Dimuka | Pembayaran dimuka dari klien |
| 2.1.20 | Hutang PPh 21 | PPh 21 yang dipotong |
| 2.1.21 | Hutang PPh 23 | PPh 23 yang dipotong |
| 2.1.22 | Hutang PPh 4(2) | PPh final yang dipotong |
| 2.1.23 | Hutang PPh 25 | Angsuran PPh bulanan |
| 2.1.24 | Hutang PPh 29 | PPh kurang bayar tahunan |
2.2 Kewajiban Jangka Panjang (Long-term Liabilities)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 2.2.01 | Hutang Bank | Pinjaman bank jangka panjang |
| 2.2.05 | Hutang Leasing | Hutang sewa guna usaha |
3. Ekuitas (Equity)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 3.1.01 | Modal | Modal awal pemilik |
| 3.1.02 | Modal Disetor | Tambahan modal dari pemilik |
| 3.2.01 | Laba Ditahan | Akumulasi laba tahun lalu |
| 3.2.02 | Laba Tahun Berjalan | Laba periode berjalan |
| 3.3.01 | Prive | Pengambilan oleh pemilik |
4. Pendapatan (Revenue)
4.1 Pendapatan Operasional
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 4.1.01 | Pendapatan Jasa | Pendapatan dari jasa utama |
| 4.1.02 | Pendapatan Konsultasi | Pendapatan konsultasi |
| 4.1.05 | Pendapatan Maintenance | Pendapatan maintenance/retainer |
| 4.1.10 | Penjualan | Pendapatan dari penjualan barang |
4.2 Pendapatan Lain-lain
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 4.2.01 | Pendapatan Bunga | Bunga deposito/tabungan |
| 4.2.02 | Pendapatan Lain-lain | Pendapatan di luar operasional |
5. Beban (Expenses)
5.1 Beban Operasional
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 5.1.01 | Beban Gaji | Gaji karyawan tetap |
| 5.1.02 | Beban Sewa | Sewa kantor/gedung |
| 5.1.03 | Beban Listrik | Tagihan listrik |
| 5.1.04 | Beban Air | Tagihan air |
| 5.1.05 | Beban Telepon | Tagihan telepon |
| 5.1.06 | Beban Internet | Tagihan internet |
| 5.1.10 | Beban ATK | Alat tulis kantor |
| 5.1.11 | Beban BPJS | Kontribusi BPJS perusahaan |
| 5.1.12 | Beban Perlengkapan | Perlengkapan kantor |
| 5.1.15 | Beban Transportasi | Transport dan perjalanan |
| 5.1.16 | Beban Parkir | Biaya parkir |
| 5.1.20 | Beban Makan | Makan karyawan/meeting |
5.2 Beban Profesional
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 5.2.01 | Beban Jasa Profesional | Jasa konsultan/freelancer |
| 5.2.02 | Beban Jasa Hukum | Jasa notaris/pengacara |
| 5.2.03 | Beban Jasa Akuntan | Jasa akuntan/audit |
| 5.2.05 | Beban Software | Subscription software |
| 5.2.06 | Beban Hosting | Hosting dan domain |
5.3 Beban Administrasi
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 5.3.01 | Beban Administrasi Bank | Biaya admin bank |
| 5.3.02 | Beban Materai | Bea materai |
| 5.3.05 | Beban Asuransi | Premi asuransi |
5.4 Beban Penyusutan & Amortisasi
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 5.4.01 | Beban Penyusutan | Penyusutan aset tetap |
| 5.4.02 | Beban Amortisasi | Amortisasi aset tak berwujud |
5.5 Harga Pokok (Cost of Goods)
| Kode | Nama Akun | Keterangan |
|---|---|---|
| 5.5.01 | HPP Barang Dagang | HPP untuk industri dagang |
| 5.5.02 | HPP Produksi | HPP untuk industri manufaktur |
| 5.5.10 | Beban Selisih Persediaan | Selisih stock opname |
Cara Menambah Akun
Jika akun yang Anda butuhkan tidak ada dalam daftar:
- Tentukan tipe akun (Aset/Kewajiban/Ekuitas/Pendapatan/Beban)
- Tentukan sub-tipe yang sesuai
- Buat kode akun mengikuti struktur yang ada
- Lihat Setup Awal untuk panduan menambah akun
Lihat Juga
- Setup Awal - Menambah dan mengelola akun
- Tutorial Akuntansi - Memahami debit dan kredit
- Glosarium - Penjelasan istilah
