Integrasi e-Faktur untuk ERP Indonesia: PPN yang Benar

Foto oleh kozumel on flickr
e-Faktur adalah kerangka faktur pajak elektronik yang diwajibkan Direktorat Jenderal Pajak, atau DJP, bagi setiap PKP, pengusaha kena pajak terdaftar, yang menjual barang atau jasa. Jika ERP Anda menerbitkan faktur penjualan untuk entitas Indonesia yang terdaftar sebagai PKP, sistem tersebut memerlukan modul yang menghasilkan nomor faktur dan data pajak sesuai standar DJP, baik melalui aplikasi desktop e-Faktur lama maupun platform Coretax yang lebih baru yang menggantikannya.
Hitung Dasar Pengenaan Pajak, dasar kena pajak, setelah menerapkan diskon tingkat baris, lalu terapkan tarif efektif 11 persen pada dasar tersebut, dan bulatkan per baris faktur bukan per total dokumen. Simpan tarif sebagai konfigurasi berversi yang terkait dengan tanggal berlaku, karena tarif PPN Indonesia sudah pernah berubah dan bisa berubah lagi tanpa perlu deploy kode baru jika Anda membangunnya seperti itu.
Indonesia beralih ke format identitas wajib pajak 16 digit terpadu sehingga wajib pajak orang pribadi dalam negeri bisa langsung menggunakan NIK 16 digit yang sudah mereka miliki, nomor identitas kependudukan di KTP, sebagai NPWP sejak Januari 2024. Format lama 15 digit bergaris hubung sudah sepenuhnya dihentikan dari layanan administrasi DJP pada pertengahan 2024, sehingga sistem yang masih memvalidasi format lebih pendek itu akan menerima nomor identitas wajib pajak yang sudah tidak dikenali DJP.
NSFP, Nomor Seri Faktur Pajak, adalah nomor seri faktur pajak resmi, dan nomor ini tidak bisa dibuat bebas oleh ERP Anda sendiri. Pada sistem e-Faktur lama, nomor ini diminta dalam blok melalui aplikasi e-Nofa, sementara pada Coretax, platform yang menggantikan e-Faktur pada akhir 2025, nomor tersebut diterbitkan secara otomatis oleh sistem DJP begitu faktur diajukan dan ditandatangani secara elektronik.
Bangun ekspor dari model baca khusus yang diambil pada saat faktur difinalisasi, bukan dari tabel transaksi langsung yang masih bisa berubah, dan validasi setiap nomor identitas wajib pajak, tanggal, dan kolom numerik terhadap skema tujuan sebelum diajukan. Simpan payload persis yang dikirim bersama data faktur, dan catat respons DJP, termasuk NSFP yang diberikan, kembali ke data tersebut sehingga tim akuntansi memiliki satu tempat untuk memeriksa status.

Foto oleh kozumel on flickr
Setiap pengusaha kena pajak, yang dikenal sebagai PKP, yang menjual barang atau jasa di Indonesia wajib menerbitkan Faktur Pajak, dokumen pajak resmi yang diakui oleh Direktorat Jenderal Pajak, atau DJP. Jika Anda membangun atau mengembangkan ERP untuk bisnis di Indonesia, modul faktur pajak bukan sekadar pemanis, melainkan bagian yang menjaga seluruh sistem tetap patuh, karena nomor faktur yang salah format atau perhitungan PPN yang keliru bisa memicu sanksi saat pemeriksaan pajak.
Artikel ini membahas empat bagian yang benar-benar penting saat menghubungkan faktur pajak ke dalam ERP khusus: memvalidasi nomor identitas wajib pajak, menghitung PPN dengan benar atas dasar pengenaan pajak, membuat nomor faktur yang akan diterima DJP, dan menghasilkan file ekspor yang dapat diproses sistem pajak. Sistem pemerintah yang mendasarinya berpindah dari aplikasi desktop e-Faktur lama ke platform terpadu Coretax, dan artikel ini membahas keduanya, karena banyak ERP masih menyimpan data lama sambil mengikuti alur baru.
NPWP, kependekan dari Nomor Pokok Wajib Pajak, adalah nomor identitas wajib pajak yang diberikan DJP kepada setiap badan usaha dan individu yang terdaftar. Sejak Januari 2024, wajib pajak orang pribadi dalam negeri menggunakan NIK 16 digit, nomor identitas kependudukan yang tercetak pada KTP, langsung sebagai NPWP mereka, sementara badan usaha, instansi pemerintah, dan wajib pajak luar negeri tetap memiliki NPWP tersendiri sebanyak 16 digit. Format lama 15 digit, yang ditulis sebagai 00.000.000.0-000.000, sudah sepenuhnya dihentikan dari layanan administrasi DJP pada pertengahan 2024, sehingga ERP mana pun yang masih menyimpan atau memvalidasi format bergaris hubung tersebut akan diam-diam menerima data pelanggan yang sebenarnya tidak valid.
Jalankan proses rekonsiliasi setiap malam yang menandai data induk pelanggan atau vendor mana pun yang nomor identitas wajib pajaknya bukan tepat 16 digit angka. Menangkap masalah ini sebelum faktur dibuat jauh lebih murah dibanding memperbaiki pengajuan yang ditolak setelah terjadi.
PPN, pajak pertambahan nilai Indonesia, dihitung atas Dasar Pengenaan Pajak, atau DPP, yaitu nilai dasar kena pajak, yang tidak selalu sama dengan subtotal penuh pada faktur. April 2022 menaikkan tarif dari 10 persen menjadi 11 persen untuk sebagian besar barang dan jasa, dan aturan berikutnya menetapkan tarif resmi menjadi 12 persen mulai 2025 sekaligus memperkenalkan dasar pengenaan pajak yang disesuaikan sehingga jumlah efektif yang dipungut pada transaksi standar tetap setara 11 persen. Perbedaan antara tarif resmi yang tertulis dalam aturan dan tarif efektif yang diterapkan pada DPP inilah yang harus dikodekan secara eksplisit dalam mesin pajak, karena implementasi naif yang mengalikan subtotal langsung dengan angka tarif utama yang berlaku saat itu akan membebankan kelebihan tarif kepada setiap pelanggan begitu angka resmi berubah lagi. Mesin pajak pada ERP Anda perlu menghitung DPP terlebih dahulu dengan menerapkan diskon apa pun, lalu menerapkan tarif efektif, lalu membulatkan per baris faktur, karena pembulatan pada tingkat total faktur alih-alih tingkat baris adalah penyebab umum selisih kecil saat validasi DJP.
// Normalize a taxpayer id before it ever reaches an invoice row.
// Since Jan 2024, resident individuals use their 16-digit NIK as NPWP;
// companies and non-residents keep a separate 16-digit NPWP.
function normalizeTaxId(raw: string): { digits: string; valid: boolean } {
const digits = raw.replace(/\D/g, "")
// 15-digit legacy format was retired; only 16-digit format is accepted now
const valid = digits.length === 16
return { digits, valid }
}
// PPN calculation on the Dasar Pengenaan Pajak (DPP), rounded per line
function calcPpn(dppRupiah: number, ratePercent = 11): {
dpp: number
ppn: number
total: number
} {
const dpp = Math.round(dppRupiah)
const ppn = Math.round(dpp * (ratePercent / 100))
return { dpp, ppn, total: dpp + ppn }
}Sangat menggoda untuk menetapkan PPN sebagai 0,11 di dalam suatu layanan penetapan harga dan melanjutkan pekerjaan. Masalahnya muncul begitu tim keuangan perlu memproses ulang faktur lama, menjalankan simulasi skenario untuk perubahan tarif di masa depan, atau menangani periode transisi ketika tarif lama dan baru berlaku bersamaan untuk barang yang dikirim versus difakturkan pada tanggal berbeda. Perlakukan tarif sebagai data referensi yang berversi dengan tanggal mulai berlaku, yang diselesaikan pada saat DPP faktur dihitung, bukan pada saat pesanan penjualan dibuat.
Jangan pernah menghitung PPN dari harga tampilan yang sudah mengandung artefak pembulatan akibat pemformatan mata uang. Selalu hitung dari nilai DPP numerik yang tersimpan pada presisi penuh, lalu bulatkan hanya untuk tampilan dan baris pajak akhir, atau selisih akan terus terakumulasi di ribuan faktur.
NSFP, Nomor Seri Faktur Pajak, adalah nomor seri faktur pajak resmi, dan inilah satu-satunya bagian faktur yang tidak bisa dibuat bebas oleh ERP Anda. Pada sistem e-Faktur lama, seorang PKP meminta blok nomor seri melalui aplikasi e-Nofa lalu menetapkannya secara berurutan di dalam aplikasi desktop, yang berarti ERP Anda harus melacak sendiri kumpulan nomor yang sudah dialokasikan dan memperingatkan tim keuangan sebelum stok nomor tersebut habis. Pada Coretax, platform yang secara resmi menggantikan e-Faktur pada akhir 2025, langkah alokasi manual tersebut sepenuhnya hilang: NSFP dihasilkan secara otomatis saat faktur diajukan dan ditandatangani secara elektronik, dan formatnya bertambah dari 16 menjadi 17 digit, dengan nomor format lama yang mendapat tambahan angka 9 secara otomatis pada digit kelima saat data tersebut masuk ke Coretax. Jika ERP Anda masih menerbitkan faktur melalui aplikasi desktop selama periode transisi, nomor yang ditampilkan sistem Anda secara lokal bisa berbeda dari nomor yang akhirnya tercatat di Coretax, jadi lakukan rekonsiliasi terhadap versi platform, bukan versi sistem Anda sendiri.
| Kolom | e-Faktur Lama | Coretax |
|---|---|---|
| Panjang nomor seri | 16 digit | 17 digit |
| Metode alokasi | Diminta dalam blok melalui e-Nofa | Diterbitkan otomatis saat pengajuan dan penandatanganan |
| Format pengajuan | Unggah XML sisi klien | Validasi API/portal secara real-time |
| Jalur koreksi | Faktur pengganti manual | Revisi atau pembatalan di dalam platform |
Terlepas dari generasi sistem yang Anda tuju, ekspor tersebut adalah data terstruktur yang menjelaskan kolom header, identitas wajib pajak dari kedua pihak transaksi, item baris dengan DPP dan PPN masing-masing, serta blok checksum atau tanda tangan. Perlakukan ekspor sebagai kontrak yang ketat, bukan sekadar upaya terbaik, karena satu kolom yang salah format akan menolak seluruh batch, bukan hanya satu faktur.
Memisahkan finalisasi faktur dari pengajuan faktur, dengan kolom status eksplisit di antaranya, adalah satu perubahan yang paling banyak mengurangi insiden faktur pajak pada ERP produksi. Ini memberi tim keuangan titik pemeriksaan untuk menangkap kesalahan sebelum apa pun mencapai DJP.
Beberapa hal terakhir yang perlu diverifikasi sebelum modul ini diluncurkan untuk bisnis PKP yang sesungguhnya, karena memperbaikinya setelah batch faktur produksi pertama jauh lebih menyulitkan dibanding menangkapnya saat code review.