Penjualan
Siklus penjualan lengkap: penawaran harga, pesanan penjualan, surat jalan, faktur pajak yang sesuai ketentuan ZATCA, retur (nota kredit) dan nota debit — ditambah pengelolaan pelanggan dan wiraniaga.
Pelanggan
Rute: Penjualan › Pelanggan — /commercial/customers


Fungsi: kartu master pelanggan. Setiap dokumen penjualan diawali dengan memilih pelanggan, dan nilai bawaan pada kartunya (metode pembayaran, wiraniaga, daftar harga, diskon) otomatis disalin ke setiap dokumen baru.
Kolom kartu
| Kolom | Deskripsi & validasi |
|---|---|
| Kode | Dibuat otomatis untuk pelanggan baru (hanya-baca, disimpan dalam HURUF BESAR). Ditetapkan sekali saat pembuatan; harus unik. |
| Nama (Arab) | Wajib. Nama yang ditampilkan di seluruh sistem dan pada dokumen cetak. |
| Nama (Inggris) | Opsional — jika dikosongkan, nama Arab yang digunakan. |
| Nomor VAT | Nomor registrasi pajak pelanggan (hingga 20 karakter). Nomor VAT KSA yang valid terdiri dari 15 digit yang diawali dan diakhiri angka 3 (mis. 3XXXXXXXXXXXXX3); ZATCA menolak faktur B2B yang nomor VAT pembelinya tidak valid. Kosongkan untuk konsumen akhir (B2C). |
| Telepon / Email / Alamat | Data kontak; telepon dan alamat dicetak pada faktur. |
| Jalan, No. Gedung, Distrik, Kota, Kode Pos | Blok alamat nasional. No. Gedung dan Kode Pos adalah isian numerik. Dicetak pada faktur pajak dan dikirim ke ZATCA sebagai alamat pembeli. |
| Batas kredit | ≥ 0. Jika > 0, sistem memblokir posting faktur kredit apa pun yang akan membuat saldo berjalan melewati batas ini. 0 = tanpa batas. |
| Saldo awal | Saldo pelanggan saat mulai menggunakan sistem; diperhitungkan dalam saldo berjalan yang tampil di daftar. |
| Hari jatuh tempo | ≥ 0 — termin pembayaran yang disepakati, dalam hari. |
| Diskon bawaan | 0–100% yang disarankan pada dokumen. |
| Daftar harga | Opsional. Jika ditetapkan, harga daftar pelanggan menggantikan harga jual bawaan item pada dokumen baru (“Harga bawaan” = tanpa daftar). |
| Metode pembayaran | Tunai / Kredit — disalin ke setiap faktur baru untuk pelanggan ini. |
| Wiraniaga | Wiraniaga bawaan — terisi otomatis pada penawaran, pesanan dan faktur baru. |
| Aktif | Tampil saat mengedit. Pelanggan nonaktif tetap ada di riwayat tetapi sebaiknya tidak dipakai pada dokumen baru. |
Tombol dan panel samping
- Simpan / Simpan & Baru / Kembali — aksi edit standar; Simpan & Baru mengosongkan formulir dan mengambil kode berikutnya.
- Laporan Rekening (mode edit) — membuka pusat laporan dengan pelanggan ini sudah terpilih dan langsung menjalankan laporan rekening.
- Catatan — panel catatan teks bebas di samping kartu menyimpan riwayat catatan per pelanggan.
Tanya jawab
- Mengapa faktur pelanggan saya keluar sebagai faktur sederhana padahal nomor VAT sudah diisi? Alamat nasionalnya belum lengkap — isi jalan (atau alamat), no. gedung, kota dan kode pos, lalu terbitkan faktur lagi.
- Dari mana akun buku besar pelanggan berasal? Posting masuk ke akun piutang yang dikonfigurasi di pengaturan akun komersial; Anda tidak perlu membuat akun buku besar per pelanggan secara manual.
- Bisakah kode diubah nanti? Tidak — kode ditetapkan sekali saat pembuatan dan setelah itu hanya-baca.
- Apa arti batas kredit 0? Kredit tanpa batas — pengaman batas kredit hanya bekerja bila batasnya lebih besar dari nol.
Wiraniaga
Rute: Penjualan › Wiraniaga — /commercial/salesmen

Fungsi: mendefinisikan tenaga penjual yang Anda tugaskan pada dokumen. Kolom wiraniaga tersedia pada penawaran, pesanan, surat jalan, faktur, retur dan nota debit, sehingga Anda mendapatkan angka penjualan per wiraniaga dalam laporan.
| Kolom | Deskripsi |
|---|---|
| Kode | Dibuat otomatis, hanya-baca. |
| Nama Arab | Wajib. |
| Nama Inggris | Opsional. |
| Telepon | Opsional (isian angka). |
| Aktif | Hanya pada mode edit. Wiraniaga nonaktif hilang dari semua pilihan pada dokumen tetapi tetap tercantum pada dokumen historis. |
Tanya jawab
- Seorang wiraniaga keluar dari perusahaan — apakah harus dihapus? Tidak; hilangkan centang Aktif. Riwayatnya tetap utuh dan namanya hilang dari daftar pilihan.
- Mengapa seorang wiraniaga tidak muncul di dropdown faktur? Ia berstatus nonaktif — hanya wiraniaga aktif yang ditampilkan.
Editor dokumen — mekanisme bersama
Semua dokumen penjualan memakai satu tata letak editor yang sama: bilah alat, blok kolom header, kisi baris item, dan strip total yang diperbarui langsung. Pelajari sekali — perilakunya identik di mana pun.
Bilah alat dan status
| Elemen | Perilaku |
|---|---|
| Pil status | Draf — dapat diedit penuh; Disetujui / Terposting — terkunci hanya-baca. |
| Baru | Mengosongkan editor dan memulai dokumen baru (nomor berikutnya diberikan saat menyimpan). |
| Simpan | Menyimpan dokumen sebagai draf — bisa diedit, bisa dihapus, belum berdampak pada stok/buku besar. |
| Setujui / Posting | Menyimpan lalu mengunci dokumen. “Setujui” (penawaran, pesanan, surat jalan) hanya menguncinya dan mengaktifkan konversi; “Posting” (faktur, nota kredit, nota debit) selain itu juga menggerakkan stok dan menulis jurnal. |
| Cetak / Unduh | Pada dokumen terkunci: membuka pratinjau cetak A4 dwibahasa, atau menyimpannya sebagai PDF. Kedua aksi juga tampil sebagai ikon baris di setiap daftar. |
| Lihat jurnal | Pada dokumen finansial terposting: menampilkan jurnal Debit/Kredit yang dihasilkan dalam dialog beserta indikator seimbang/tidak seimbang. |
Kisi baris
| Kolom | Perilaku |
|---|---|
| # | Nomor baris. |
| Item | Dropdown yang dapat dicari. Memilih item mengisi satuan dasarnya dan harga jualnya (atau harga daftar harga pelanggan pada faktur). |
| Satuan | Satuan dasar item beserta satuan alternatifnya (mis. karton = 12). Memilih satuan menghitung ulang harga baris dengan harga satuan tersebut; stok selalu bergerak dalam satuan dasar (qty × faktor). |
| Kuantitas | Hingga 4 desimal; harus > 0 agar baris dapat disimpan. |
| Tersedia | Petunjuk hanya-baca: jumlah stok item di gudang terpilih (pada faktur: stok dikurangi kuantitas yang direservasi oleh pesanan penjualan yang disetujui). Berubah merah bila kuantitas yang dimasukkan melebihinya. Menampilkan “—” untuk item jasa. |
| Harga satuan | Dapat diedit; terisi awal dari item / daftar harga. |
| Diskon | Satu sel dengan tombol pengalih %/nominal: masukkan persentase atau jumlah — keduanya selalu sinkron, dan persentase tetap melekat saat kuantitas atau harga berubah. |
| PPN | Tombol pengalih yang menampilkan jumlah dan tarif PPN baris (bawaan 15%). Klik untuk menjadikan baris bertarif nol (bebas pajak); klik lagi untuk mengembalikan tarif sebelumnya. |
| Total baris | Qty × harga − diskon baris (+ PPN jika harga dimasukkan neto). |
| Lacak (hanya faktur) | Untuk item yang ditandai dengan kedaluwarsa/nomor seri: membuka dialog kedaluwarsa & nomor seri. Ikon label berwarna merah selama data belum lengkap, hijau bila sudah lengkap. |
| 🗑 | Menghapus baris (hanya pada draf). |
Strip total
- Diskon tambahan — diskon di tingkat header dengan tombol pengalih %/nominal yang sama. Diskon ini didistribusikan ke baris-baris secara proporsional terhadap nilai neto masing-masing (baris terakhir menyerap sisa pembulatan), sehingga total di layar selalu sama dengan total di server.
- Total diskon — semua diskon baris + diskon tambahan.
- Subtotal — dasar pengenaan pajak neto setelah semua diskon (sebelum PPN).
- Total PPN dan Total keseluruhan.
- Harga termasuk PPN — kotak centang di header. Bila dicentang, harga yang dimasukkan dianggap sudah termasuk PPN dan pajaknya diekstrak dari harga; bila tidak, PPN ditambahkan di atasnya.
Penawaran penjualan
Rute: Penjualan › Penawaran Penjualan — /commercial/sales-quotations

Fungsi: penawaran berharga kepada pelanggan dengan tanggal berlaku opsional — sama sekali tanpa dampak pada stok maupun akuntansi. Saat disepakati, setujui lalu konversikan menjadi pesanan penjualan atau langsung menjadi faktur dengan satu klik.
Kolom header
| Kolom | Catatan |
|---|---|
| Tanggal | Bawaan hari ini. |
| Berlaku hingga | Tanggal kedaluwarsa opsional, dicetak pada lembar penawaran. |
| Pelanggan | Wajib. Memilih pelanggan otomatis mengisi wiraniaga bawaannya. |
| Gudang | Wajib (bawaan gudang default pengguna Anda) — mengendalikan kolom “Tersedia”. |
| Wiraniaga / Catatan / Harga termasuk PPN | Seperti pada editor bersama. |
- Pilih pelanggan dan (opsional) tanggal berlaku.
- Tambahkan item dengan kuantitas dan harga — harga jual item disarankan dan dapat diubah; terapkan diskon baris dan/atau diskon tambahan.
- Simpan mempertahankannya sebagai draf; Setujui menguncinya (status menjadi Disetujui).
- Pada penawaran yang disetujui: Cetak / Unduh PDF dwibahasa, atau tekan Konversi ke Pesanan Penjualan / Konversi ke Faktur — dokumen baru terbuka dengan pelanggan, gudang dan semua baris sudah terisi.
Contoh perhitungan: 2 baris — 10 × 50.00 dan 4 × 75.00, diskon 10% pada baris kedua, PPN 15%, harga neto: bruto 500.00 + 300.00 = 800.00; diskon 30.00; subtotal 770.00; PPN 115.50; total 885.50.
Tanya jawab
- Apakah penawaran mereservasi stok? Tidak. Kolom Tersedia hanyalah petunjuk informasi.
- Pelanggan setuju lewat telepon — apakah harus lewat pesanan dulu? Tidak; “Konversi ke Faktur” menerbitkan faktur langsung dari penawaran.
- Bisakah penawaran yang kedaluwarsa dipakai lagi? Ya — konversi tidak diblokir oleh tanggal berlaku; tanggal itu hanyalah indikasi komersial bagi pelanggan.
Pesanan penjualan
Rute: Penjualan › Pesanan Penjualan — /commercial/sales-orders

Fungsi: mengunci pesanan pelanggan yang sudah pasti. Statusnya Draf → Disetujui; persetujuan membuat pesanan dapat dikonversi menjadi surat jalan atau faktur, dan — yang penting — mereservasi kuantitasnya: kolom “Tersedia” di editor faktur menampilkan stok dikurangi apa yang sudah dijanjikan pesanan-pesanan yang disetujui kepada pelanggan lain.
Header dan kisi baris identik dengan penawaran (tanggal, pelanggan, gudang, wiraniaga, catatan, opsi harga termasuk PPN; tanpa tanggal berlaku). Pesanan yang dibuat dari penawaran menyimpan penawaran sumbernya untuk keterlacakan.
Pengiriman parsial
- Setujui pesanan, lalu tekan Konversi ke Surat Jalan — surat jalan terbuka dengan seluruh baris pesanan terisi.
- Untuk pengiriman parsial, kurangi kuantitas (atau hapus baris) sebelum menyetujui surat jalan.
- Untuk pengiriman berikutnya, konversi lagi dari pesanan yang sama dan sisakan hanya kuantitas yang tersisa — setiap konversi mengisi baris pesanan secara penuh, jadi sesuaikan dengan yang benar-benar dikirim.
- Fakturkan setiap pengiriman (atau seluruh pesanan sekaligus) dengan Konversi ke Faktur.
Contoh perhitungan: pesanan 100 × 20.00 dengan diskon tambahan 5%, PPN 15%: bruto 2,000.00; diskon tambahan 100.00; subtotal 1,900.00; PPN 285.00; total 2,185.00. Surat jalan pertama: 60 unit; kedua: 40 unit — masing-masing menjadi fakturnya sendiri.
Tanya jawab
- Apakah pesanan yang disetujui menggerakkan stok? Tidak — ia hanya mereservasi kuantitas pada petunjuk ketersediaan faktur. Stok baru bergerak fisik saat faktur diposting.
- Bisakah satu pesanan dikonversi menjadi beberapa faktur? Ya — ulangi “Konversi ke Faktur” dan ubah kuantitasnya setiap kali.
- Di mana saya melihat bahwa pesanan berasal dari penawaran? Tautannya disimpan pada pesanan saat pembuatan (keterlacakan); sumbernya tampil di informasi kaki dokumen.
Surat jalan
Rute: Penjualan › Surat Jalan — /commercial/delivery-notes

Fungsi: dokumen pengiriman yang menyertai barang ke pelanggan sebelum penagihan — biasanya dibuat dari pesanan penjualan yang disetujui (Konversi ke Surat Jalan), atau dibuat langsung. Ia mendokumentasikan apa yang keluar, kapan, dan untuk siapa, dan menjadi berkas yang ditandatangani sopir dan pelanggan.
Tata letak editor, kolom dan kisinya sama dengan pesanan penjualan. Status: Draf (dapat diedit/dihapus) → Disetujui (terkunci). Surat jalan yang disetujui menyediakan Cetak / Unduh dan Konversi ke Faktur, yang mengisi faktur dengan pelanggan, gudang dan baris surat jalan tersebut.
- Buat surat jalan dari pesanan yang disetujui (kuantitas terisi otomatis) atau tambahkan baris secara manual.
- Sesuaikan kuantitas dengan yang benar-benar dikirim lalu Setujui.
- Cetak dua salinan — satu salinan yang ditandatangani kembali bersama sopir.
- Saat waktunya menagih, buka surat jalan yang disetujui dan tekan Konversi ke Faktur.
Contoh perhitungan: pengiriman 60 × 20.00, PPN 15%: subtotal 1,200.00; PPN 180.00; total 1,380.00 — angka-angka ini tampil sebagai referensi pada surat jalan; tidak ada yang diposting sampai fakturnya.
Tanya jawab
- Mengapa stok saya tidak berkurang setelah surat jalan disetujui? Memang begitu desainnya — stok dikeluarkan saat posting faktur, bukan saat persetujuan pengiriman.
- Bisakah satu surat jalan melayani beberapa faktur? Konversi menghasilkan satu faktur per proses; untuk penagihan terpisah, sesuaikan baris faktur setelah konversi.
- Bisakah surat jalan yang disetujui dihapus? Tidak — “Surat jalan yang telah disetujui tidak dapat dihapus.” Hanya draf yang dapat diedit/dihapus.
Faktur penjualan
Rute: Penjualan › Faktur Penjualan — /commercial/sales-invoices

Fungsi: dokumen sentral modul ini — faktur pajak (standar B2B atau sederhana B2C) yang memenuhi persyaratan ZATCA. Posting-nya adalah saat stok keluar dari gudang dan pendapatan dibukukan.

Kolom header
| Kolom | Catatan |
|---|---|
| Tanggal | Tanggal faktur; juga menentukan kebijakan diskon mana yang berlaku. |
| Cabang | Cabang posting; terkunci otomatis jika izin Anda dibatasi pada satu cabang. |
| Pelanggan | Wajib. Memilih pelanggan menyalin nilai bawaannya: metode pembayaran, wiraniaga, harga daftar harga, dan kebijakan diskon yang aktif pada tanggal faktur. |
| Gudang | Wajib (bawaan gudang default pengguna Anda). Mengendalikan kolom “Tersedia” dan menjadi tempat stok dikeluarkan. |
| Wiraniaga | Opsional; terisi awal dari pelanggan atau dari nilai bawaan pengguna Anda. |
| Metode pembayaran | Tunai / Kredit. Faktur kredit diperiksa terhadap batas kredit pelanggan saat posting. |
| Mata uang & kurs | Pemilih mata uang dengan nilai tukar — jurnal dikonversi dengan kurs ini. |
| Catatan / Harga termasuk PPN | Seperti pada editor bersama. |
Membuat dan mem-posting
- Pilih pelanggan — atau masuk dengan data terisi dari penawaran, pesanan atau surat jalan yang disetujui (konversi), atau dari Salin faktur yang sudah ada.
- Pilih gudang dan pastikan metode pembayaran.
- Tambahkan item. Perhatikan kolom Tersedia (stok − reservasi); ia berubah merah jika Anda menjual lebih dari yang tersedia.
- Untuk item yang dilacak dengan kedaluwarsa/nomor seri, buka dialog Lacak di setiap baris: pilih nomor seri dari registri stok (atau ketikkan — satu per baris; jumlahnya harus sama dengan qty × faktor satuan). Label tetap merah sampai lengkap.
- Tinjau strip total (diskon baris, diskon tambahan, PPN, neto).
- Posting. Sistem kemudian, secara berurutan: memeriksa gerbang persetujuan (nilai besar mungkin memerlukan persetujuan manajer), memeriksa batas kredit (faktur kredit), mengeluarkan stok dengan biaya rata-rata tertimbang (diblokir jika tidak mencukupi), menandai nomor seri sebagai Terjual, menulis jurnal, dan — jika “Kirim otomatis ke ZATCA saat posting” diaktifkan — menandatangani dan melaporkan faktur.
- Cetak format faktur pajak dengan kode QR yang sesuai ketentuan, atau unduh sebagai PDF.
Contoh perhitungan — matematika lengkap
Faktur dengan 3 baris, harga sebelum PPN, diskon 5% pada baris 1, diskon tambahan 100.00, PPN 15%:
| Baris | Qty × Harga | Bruto | Disk. baris | Porsi disk. tambahan | Kena pajak | PPN 15% |
|---|---|---|---|---|---|---|
| Item A | 10 × 50.00 | 500.00 | 5% = 25.00 | 38.78 | 436.22 | 65.43 |
| Item B | 3 × 200.00 | 600.00 | — | 48.98 | 551.02 | 82.65 |
| Item C | 5 × 30.00 | 150.00 | — | 12.24 | 137.76 | 20.66 |
| Total | 1,250.00 | 25.00 | 100.00 | 1,125.00 | 168.75 | |
Strip total: total diskon 125.00, subtotal 1,125.00, PPN 168.75, total keseluruhan 1,293.75. Diskon tambahan disebar ke baris-baris secara proporsional terhadap netonya; baris terakhir menyerap sisa pembulatan.
Jurnal yang dihasilkan (asumsikan harga pokok barang 700.00 dengan rata-rata tertimbang):
| Akun | Debit | Kredit |
|---|---|---|
| Piutang usaha | 1,293.75 | |
| Pendapatan penjualan | 1,125.00 | |
| PPN keluaran | 168.75 | |
| Harga pokok penjualan | 700.00 | |
| Persediaan | 700.00 |
Setelah posting — pelunasan dan ZATCA
- Chip Dibayar / Sisa menampilkan status pelunasan; daftar memiliki kolom Pelunasan (Lunas / Sebagian / Belum dibayar).
- QuickPay (di editor dan sebagai aksi baris daftar) menerima pembayaran saat itu juga: jumlah (terisi awal dengan sisanya), instrumen (Tunai / Transfer bank) dan kas atau rekening bank — ia membuat dan mem-posting bukti penerimaan dalam satu langkah.
- Kotak ZATCA menampilkan status e-faktur: “Belum dikirim” dengan tombol Tanda tangani & kirim ke ZATCA, atau status balasan beserta QR yang dapat dipindai setelah diterima.
- Lihat jurnal membuka jurnal Debit/Kredit yang dihasilkan.
Aksi baris daftar
| Aksi | Tersedia saat | Efek |
|---|---|---|
| ✏️ Edit / buka | Selalu | Draf terbuka dapat diedit; yang terposting terbuka hanya-baca. |
| 🖨 Cetak / ⬇ Unduh | Terposting | Lembar faktur pajak dwibahasa dengan QR. |
| ↩ Batalkan posting | Terposting | Membalik jurnal dan pergerakan stok lalu mengembalikan faktur menjadi draf — setelah konfirmasi. |
| 👛 QuickPay | Terposting & belum lunas penuh | Menerima pembayaran terhadap faktur. |
| ⧉ Salin | Selalu | Membuka draf baru yang terisi dengan syarat header dan baris faktur ini (nomor baru saat disimpan). |
| 🗑 Hapus | Hanya draf | Menghapus draf; “Faktur penjualan yang telah diposting tidak dapat dihapus.” |
Kesalahan validasi & kekeliruan umum
| Pesan / gejala | Penyebab & solusi |
|---|---|
| Notifikasi kolom wajib saat Simpan | Pelanggan, gudang atau baris belum ada — sebuah baris hanya dihitung bila memiliki item dan kuantitas > 0. |
| Posting diblokir: stok tidak mencukupi | Anda menjual lebih dari stok yang ada di gudang itu. Terima stok dulu, transfer masuk, atau kurangi kuantitasnya. Ingat satuan alternatif berlipat (2 karton × 12 = 24 satuan dasar). |
| “Batas kredit terlampaui untuk …: saldo akan mencapai X terhadap batas Y” | Sebuah faktur kredit akan membuat saldo berjalan melewati batas pelanggan. Terima pembayaran, jual tunai, atau naikkan batasnya. |
| Kesalahan jumlah nomor seri saat posting | Baris berseri harus membawa tepat qty × faktor nomor seri, dan masing-masing berstatus Dalam-Stok di gudang faktur. |
| “Hanya faktur penjualan draf yang dapat diedit.” | Faktur terposting tidak dapat diubah — batalkan posting dulu (jika diizinkan) atau koreksi dengan nota kredit/debit. |
| Pembatalan posting ditolak | Dua penghalang: faktur sudah dilaporkan ke ZATCA (tidak dapat diubah menurut hukum — gunakan nota kredit), atau memiliki penerimaan terposting (hapus/batalkan posting-nya lebih dulu). |
Tanya jawab
- Dari mana harga berasal? Daftar harga pelanggan lebih dulu, lalu harga jual item; mesin promosi menerapkan kebijakan diskon aktif terbaik (cakupan item mengalahkan kategori, kategori mengalahkan semua-item) sebagai diskon baris.
- Apakah faktur tunai otomatis menerima uangnya? Tidak — “Tunai” hanyalah istilah komersial di lembar faktur. Gunakan QuickPay segera setelah posting untuk membuat-dan-mem-posting penerimaan dalam satu klik.
- Mengapa Tersedia berbeda dengan layar stok? Petunjuk pada faktur mengurangi kuantitas yang direservasi oleh pesanan penjualan yang disetujui.
- Menjual jasa? Item jasa menampilkan “—” di Tersedia dan tidak pernah menggerakkan stok; hanya jurnal pendapatan yang diposting.
Retur penjualan (nota kredit)
Rute: Penjualan › Retur Penjualan — /commercial/sales-returns

Fungsi: pengembalian penuh atau sebagian atas barang yang telah dijual. Retur selalu merujuk pada faktur penjualan yang terposting — inilah nota kredit resmi (tipe ZATCA 381) yang tertaut kepadanya.
Membuat retur — impor dari faktur
- Buat retur baru. Kotak Faktur asal menampilkan semua faktur terposting — pilih salah satu.
- Baris-baris faktur dimuat secara penuh dan pelanggan, wiraniaga serta metode pembayaran diwariskan.
- Untuk retur sebagian: turunkan kuantitas atau hapus baris yang tidak dikembalikan. Untuk retur penuh: biarkan semuanya seperti saat dimuat.
- Isi Alasan retur (dianjurkan — dicetak pada nota), pilih cabang lalu Posting.
- Pada nota yang terposting: Cetak / Unduh lembar nota kredit, lihat jurnalnya, dan Tanda tangani & kirim ke ZATCA jika pengiriman otomatis dimatikan.
Efek posting: barang masuk kembali ke gudang dengan biaya rata-rata tertimbang saat ini milik item, nomor seri yang dikembalikan berbalik ke status Dalam-Stok, dan jurnal kebalikan dari penjualan ditulis.
Contoh perhitungan: retur 2 × 200.00 dari faktur di atas (PPN 15%): subtotal 400.00, PPN 60.00, total 460.00; harga pokok barang 220.00.
| Akun | Debit | Kredit |
|---|---|---|
| Pendapatan penjualan | 400.00 | |
| PPN keluaran | 60.00 | |
| Piutang usaha | 460.00 | |
| Persediaan | 220.00 | |
| Harga pokok penjualan | 220.00 |
Tanya jawab
- Bisakah saya meretur lebih banyak daripada yang difakturkan? Masukkan hanya yang benar-benar kembali; nota ini adalah bukti hukum Anda terhadap faktur asal — jaga kuantitas di dalam batasnya.
- Pelanggan sudah membayar — bagaimana dengan uangnya? Nota kredit mengurangi piutang; selesaikan selisihnya dengan bukti pengeluaran kas atau biarkan sebagai kredit untuk faktur berikutnya.
- Item bernomor seri? Nomor seri yang dikembalikan disebutkan pada baris dan masuk kembali ke registri seri dengan status Dalam-Stok.
- Biaya mana yang dipakai untuk barang retur? Biaya rata-rata tertimbang item saat retur, bukan biaya pada faktur asal.
Nota debit penjualan
Rute: Penjualan › Nota Debit Penjualan — /commercial/sales-debit-notes

Fungsi: membebankan tagihan tambahan kepada pelanggan setelah faktur diterbitkan — selisih harga, ongkos kirim, denda… Ia merujuk faktur terposting (tipe ZATCA 383) tetapi, berbeda dengan retur, tidak menggerakkan stok.
- Buat nota debit baru dan pilih faktur asal yang terposting — pelanggan dan referensi diwariskan, tetapi kisi baris dimulai kosong.
- Tambahkan baris beban tambahan secara manual (mis. item jasa “Ongkos kirim”), dengan PPN sebagaimana berlaku.
- Isi alasannya, lalu Posting — dan kirim ke ZATCA seperti halnya faktur.
Contoh perhitungan: ongkos kirim 200.00 + PPN 15% = 230.00. Jurnal: Debit Piutang usaha 230.00 / Kredit Pendapatan penjualan 200.00 / Kredit PPN keluaran 30.00 — arah yang sama dengan penjualan, tanpa baris persediaan.
Tanya jawab
- Nota debit atau faktur baru? Gunakan nota debit bila beban itu milik faktur yang sudah ada (koreksi harga, ongkos kirim pengiriman itu); gunakan faktur baru untuk penjualan baru.
- Mengapa saya tidak bisa menambahkan item stok yang menggerakkan kuantitas? Nota debit memang tidak pernah menggerakkan stok — ia murni beban finansial.
- Apakah memengaruhi saldo pelanggan? Ya — nota debit terposting menambah saldo berjalan (dan masuk dalam perhitungan batas kredit).
Kirim faktur ke ZATCA
Rute: Penjualan › Kirim Faktur ke ZATCA — /commercial/zatca-send

Fungsi: ruang kendali e-faktur. Saring faktur terposting berdasarkan status kirim (bawaan: Belum dikirim) dan rentang tanggal, pilih beberapa sekaligus dan kirim dalam satu batch — batch ditandatangani dan dikirim secara berurutan agar rantai hash PIH tetap utuh.
Elemen layar
| Elemen | Perilaku |
|---|---|
| Filter status | Semua / Terkirim / Belum dikirim (bawaan Belum dikirim) + tanggal Dari/Sampai + Segarkan. |
| Kolom kotak centang | Hanya baris yang belum dikirim yang dapat dipilih; kotak centang header memilih semua baris yang dapat dikirim. Bilah alat menampilkan jumlah yang dipilih. |
| Kirim ke ZATCA | Menandatangani dan melaporkan setiap faktur yang dipilih. Notifikasi sukses bila semua lolos; jika tidak, “Sebagian faktur tidak dapat dikirim (n/m)” beserta kesalahan pertama. |
| Kolom kisi | Gudang, no. faktur (klik untuk membuka faktur), tanggal, pelanggan, subtotal, PPN, total, status, dikirim oleh, tanggal kirim, respons. |
| Lencana status | Hijau = diterima (menampilkan status otoritas), merah/abu-abu = belum dikirim atau upaya terakhir gagal. |
| Tombol respons | Membuka respons mentah ZATCA (JSON) — pesan validasi persis dari otoritas. |
Status ZATCA
| Status | Arti |
|---|---|
| Belum dikirim | Terposting secara lokal, belum dilaporkan. Kirim dari sini atau dari kotak ZATCA di faktur. |
| CLEARED | Faktur standar (B2B) diterima dan disahkan otoritas. |
| REPORTED | Faktur sederhana (B2C) berhasil dilaporkan. |
| Teks kesalahan | Upaya gagal — baris tetap “Belum dikirim”, status/respons memuat alasannya. Perbaiki dan kirim ulang. |
Memperbaiki penolakan
- Buka dialog Respons dan baca pesan validasinya (kode BR-… menyebut aturan yang gagal).
- Penyebab umum: alamat nasional pembeli tidak lengkap pada faktur B2B (tambahkan kota/kode pos/no. gedung ke kartu pelanggan), nomor VAT pembeli tidak valid (15 digit, diawali/diakhiri angka 3), atau perusahaan belum onboarding (“selesaikan langkah-langkah e-faktur”).
- Perbaiki data master — faktur itu sendiri dibangun ulang dari data terkini saat dikirim — lalu pilih barisnya dan tekan Kirim ke ZATCA lagi.
- Jika angka fakturnya sendiri yang salah, jangan mencoba mengeditnya: terbitkan nota kredit (dan faktur baru bila diperlukan).
Tanya jawab
- Mengapa batch dikirim satu per satu? Hash setiap faktur berantai ke faktur sebelumnya (PIH); pengiriman paralel akan memutus rantainya.
- Satu faktur gagal di tengah batch — apakah yang lain hangus? Tidak; setiap hasil bersifat individual. Perbaiki yang gagal dan kirim ulang sendirian.
- Bisakah pengiriman faktur dibatalkan? Tidak. Begitu diterima ZATCA, faktur tidak dapat diubah — koreksi dilakukan lewat nota kredit/debit.
Pertanyaan umum
Bagaimana membuat faktur penjualan?
Buka Penjualan › Faktur › Baru, pilih pelanggan, tambah baris item dengan jumlah dan harga, atur PPN dan diskon, lalu Simpan dan Posting untuk mencatat pendapatan.
Bisakah mengedit/menghapus faktur?
Faktur draf bisa diedit bebas. Setelah di-posting, edit terkunci; Anda membalik atau menerbitkan nota kredit alih-alih menghapus.
Bagaimana PPN/ZATCA ditangani?
PPN dihitung per baris dari tarif pajak item, dan faktur yang di-posting menghasilkan e-faktur ZATCA otomatis saat Fase 2 aktif.
Bagaimana pembayaran terhubung?
Catat voucher penerimaan untuk pelanggan; Anda dapat mengalokasikannya ke satu atau lebih faktur terbuka untuk melunasi saldo.