Invoice di Excel dibuat dari tabel barang: jumlah × harga per baris, SUM untuk subtotal, diskon dalam persen, lalu PPN dihitung dari dasar pengenaan pajaknya. Tarif dan dasar itu ditaruh di sel input supaya mudah diganti. Nomor invoice berurutan disusun dari tahun, bulan, dan nomor urut dengan TEXT.
Pola barisnya sama dengan rencana anggaran perjalanan: kuantitas × harga satuan, lalu dijumlahkan. Bedanya, invoice punya lapisan diskon, pajak, dan pembulatan di bawah total barang.
Catatan sebelum mulai: kalau Excel Anda memakai pengaturan regional Indonesia, pemisah argumen rumus biasanya titik koma (;), bukan koma. Rumus di artikel ditulis dengan koma. Ganti saat mengetik.
Contoh kasus
Toko perlengkapan sablon menagih sebuah kantor kecil untuk tiga jenis barang. Semua nama, harga, dan jumlah di bawah hanya contoh. Diskon 5%, tarif PPN dibahas di bagian tersendiri.
Artikel ini hanya membahas invoice sebagai dokumen tagihan di spreadsheet. Faktur pajak adalah dokumen lain yang aturannya ditetapkan DJP dan tidak dibahas di sini.
Susunan sheet
Dua sheet cukup: Invoice dan Katalog (daftar produk dengan harga). Satu sheet tambahan opsional bernama Log untuk nomor urut.
Katalog
| Kolom 1 | A (Produk) | B (Harga) |
|---|---|---|
| 1 | Produk | Harga |
| 2 | Kaos polos katun | 65.000 |
| 3 | Tas kain kanvas | 35.000 |
| 4 | Topi bordir | 45.000 |
| 5 | Tumbler stainless | 85.000 |
Invoice: bagian atas berisi data dan sel input.
| Sel | Isi | Hasil tampilan |
|---|---|---|
| A3 | Nomor invoice | |
| B3 | =YEAR(B4)&"/"&TEXT(MONTH(B4),"00")&"/"&TEXT(B5,"000") | 2026/10/017 |
| B4 | Tanggal invoice (ketik 28/10/2026) | 28/10/2026 |
| B5 | Nomor urut (ketik 17) | 17 |
| B6 | Tempo pembayaran dalam hari (ketik 14) | 14 |
| B7 | =B4+B6 | 11/11/2026 |
| D3 / E3 | Tarif PPN / 12% | 12% |
| D4 / E4 | Faktor dasar pengenaan pajak / =11/12 | 0,9167 |
| D5 / E5 | Diskon / 5% | 5% |
Tanggal di Excel adalah angka urut, jadi =B4+B6 menambah 14 hari dan hasilnya 11/11/2026. Format sel B4 dan B7 sebagai tanggal. Penjelasan tanggal ada di fungsi TODAY, yang bisa dipakai kalau tanggal invoice ingin selalu mengikuti hari ini.
Langkah 1: tabel barang dengan harga otomatis
Tabel barang mulai di baris 9 (judul) dan baris 10 sampai 14 (lima baris barang).
| Kolom 1 | A (No) | B (Deskripsi) | C (Qty) | D (Harga satuan) | E (Jumlah) |
|---|---|---|---|---|---|
| 9 | No | Deskripsi | Qty | Harga satuan | Jumlah |
| 10 | 1 | Kaos polos katun | 12 | 65.000 | 780.000 |
| 11 | 2 | Tas kain kanvas | 20 | 35.000 | 700.000 |
| 12 | 3 | Topi bordir | 8 | 45.000 | 360.000 |
| 13 | 4 | ||||
| 14 | 5 |
Rumus per sel, disalin ke bawah sampai baris 14:
| Sel | Rumus | Hasil | Fungsinya |
|---|---|---|---|
| D10 | =IFERROR(VLOOKUP(B10,Katalog!$A$2:$B$20,2,FALSE),"") | 65.000 | Ambil harga dari Katalog sesuai nama produk. Kosong jika nama tidak ada |
| E10 | =IF(OR(C10="",D10=""),"",C10*D10) | 780.000 | Jumlah baris. Baris belum terisi dibiarkan kosong |
| E11 | sama dengan E10, baris 11 | 700.000 | 20 × 35.000 |
| E12 | sama dengan E10, baris 12 | 360.000 | 8 × 45.000 |
Kolom B (Deskripsi) sebaiknya dropdown yang sumbernya Katalog, supaya nama tidak salah ketik dan harga selalu ditemukan. Langkahnya ada di bagian “Beda Excel dan Google Sheets” di bawah dan di membuat dropdown list.
Fungsi yang dipakai: VLOOKUP, IFERROR, IF. Di Excel 2021, Microsoft 365, dan Google Sheets, XLOOKUP bisa menggantikan VLOOKUP. Perbandingannya ada di XLOOKUP vs INDEX-MATCH. Yang dijalankan untuk memeriksa angka di artikel ini adalah VLOOKUP.
Mengapa IF(OR(...),"",...)? Tanpa itu, baris kosong menghasilkan 0, dan baris yang namanya belum cocok menghasilkan error. Penyebab error lain dibahas di error umum di Excel.
Langkah 2: subtotal, diskon, PPN, total
Ringkasan ada di kolom E, baris 15 sampai 22.
| Sel | Label (kolom D) | Rumus (kolom E) | Hasil |
|---|---|---|---|
| E15 | Subtotal | =SUM(E10:E14) | 1.840.000 |
| E16 | Diskon 5% | =ROUND(E15*E5,0) | 92.000 |
| E17 | Setelah diskon | =E15-E16 | 1.748.000 |
| E18 | Dasar pengenaan pajak | =ROUND(E17*E4,0) | 1.602.333 |
| E19 | PPN | =ROUND(E18*E3,0) | 192.280 |
| E20 | Total | =E17+E19 | 1.940.280 |
| E21 | Total dibulatkan | =ROUND(E20,-2) | 1.940.300 |
| E22 | Selisih pembulatan | =E21-E20 | 20 |
SUM mengabaikan teks kosong dari E13 dan E14. ROUND dengan angka 0 membulatkan ke Rupiah penuh, dan dengan -2 membulatkan ke ratusan.
Urutan penting: diskon dihitung lebih dulu, baru pajaknya dihitung dari nilai setelah diskon. Kalau urutannya terbalik, PPN ikut menghitung diskon yang sebenarnya tidak dibayar pembeli.
Setiap hasil di atas dihitung ulang dengan skrip (lihat catatan akhir) dan sama dengan tabel. Coba sendiri di lembar di bawah. Di demo, faktor 11/12 ditulis sebagai 0,9166666667 karena sel input tidak boleh berupa rumus.
Total invoice setelah diskon dan PPN
Diskon dihitung dulu, baru PPN dihitung dari nilai setelah diskon.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Keterangan | Qty / nilai | Harga | Jumlah |
| 2 | Kaos polos katun | 12 | Rp 65.000 | Rp 780.000 |
| 3 | Tas kain kanvas | 20 | Rp 35.000 | Rp 700.000 |
| 4 | Topi bordir | 8 | Rp 45.000 | Rp 360.000 |
| 5 | Subtotal | Rp 1.840.000 | ||
| 6 | Diskon | 5% | Rp 92.000 | |
| 7 | Setelah diskon | Rp 1.748.000 | ||
| 8 | Dasar pengenaan pajak | 0,917 | Rp 1.602.333 | |
| 9 | PPN | 12% | Rp 192.280 | |
| 10 | Total | Rp 1.940.280 | ||
| 11 | Total dibulatkan | Rp 1.940.300 |
Sel biru bisa diubah: jumlah dan harga (kolom B dan C), diskon (B6), faktor dasar pengenaan pajak (B8), dan tarif PPN (B9). Faktor 11/12 ditulis 0,9166666667 di sini; ketik 1 untuk dasar harga penuh. Sesuaikan tarif dengan ketentuan yang berlaku untuk usaha Anda.
Panah, Enter, dan Tab memindah sel. Esc mengembalikan sel ke isi awal.
Pelajaran
=ROUND(D5*B6,0)
Diskon dihitung dari subtotal.
=ROUND(D8*B9,0)
PPN dihitung dari dasar pengenaan pajak, bukan dari subtotal. Ubah B8 jadi 1 dan lihat PPN berubah.
Langkah 3: tarif PPN yang dipakai contoh
Aturan PPN pernah berubah dan bisa berubah lagi, karena itu tarif dan faktornya sengaja diletakkan di sel input (E3 dan E4), bukan ditulis di dalam rumus.
Contoh ini memakai tarif 12% dengan dasar pengenaan pajak 11/12 dari harga untuk barang nonmewah. Alasannya, DJP menjelaskan bahwa tarif PPN ditetapkan 12% mulai 1 Januari 2025, sementara untuk barang dan jasa nonmewah dasar pengenaannya memakai nilai lain 11/12, sehingga PPN yang dihitung setara 11% dari harga. Rujukannya ada di penjelasan DJP tentang PMK 131/2024 dan aturan DPP nilai lain PMK-11/2025. Di halaman Tak Ada Kenaikan dan Pungutan Pajak Baru pada 2026, DJP menyebut tidak ada kenaikan pajak pada 2026. Saya tidak menemukan pengumuman perubahan tarif PPN umum di situs DJP saat menulis ini (28 Oktober 2026).
Dengan faktor 11/12, hitungannya begini: 1.748.000 × 11/12 = 1.602.333 (dibulatkan), lalu × 12% = 192.280. Kalau Anda ingin dasar pengenaan sebesar harga penuh, ketik 1 di E4. PPN pada contoh yang sama menjadi 209.760.
Barang tertentu punya aturan sendiri, misalnya barang mewah atau barang dan jasa yang dikecualikan. Jadi sesuaikan dengan ketentuan yang berlaku untuk usaha Anda, dan tanyakan ke konsultan pajak atau kantor pajak jika ragu. Artikel ini bukan nasihat pajak dan tidak menyebut siapa yang wajib menerbitkan dokumen apa.
Pembulatan total
E21 membulatkan total ke ratusan terdekat. Pembulatan ini kebijakan tagihan, bukan kewajiban. Beberapa usaha tidak membulatkan sama sekali. Yang perlu dijaga: angka PPN di E19 tetap angka asli, dan selisih pembulatan ditampilkan terpisah di E22 supaya selisih Rp20 punya asalnya.
Kalau mau membulatkan ke atas, ganti ROUND dengan ROUNDUP. Untuk membulatkan ke bawah, pakai ROUNDDOWN.
Nomor invoice otomatis
Rumus di B3 menyusun tiga bagian:
YEAR(B4)menghasilkan 2026.TEXT(MONTH(B4),"00")menghasilkan 10, dan akan menjadi 03 untuk Maret.TEXT(B5,"000")menghasilkan 017 dari angka 17.
Digabung dengan &, hasilnya 2026/10/017. Kode huruf di depan (misalnya "INV/"&) boleh ditambah di awal rumus. Fungsi yang dipakai dijelaskan di TEXT.
Rumus ini sengaja memakai YEAR dan MONTH supaya tidak bergantung pada kode format tanggal. Kode seperti yyyy di dalam TEXT dapat berbeda antarbahasa pada Excel.
Nomor urut berikutnya
Supaya B5 tidak diketik manual, buat sheet Log dan catat nomor urut tiap invoice yang sudah dikirim di kolom A, mulai A2. Lalu isi B5 dengan:
=MAX(Log!$A$2:$A$500)+1
Kalau Log sudah berisi 1 sampai 16, hasilnya 17. Setelah invoice dikirim, salin nomor itu ke baris berikutnya di Log. Penyalinan itu masih manual. Menyimpannya otomatis butuh makro VBA di Excel atau Apps Script di Google Sheets, dan artikel ini tidak membahasnya. Untuk dasar Apps Script, lihat Apps Script untuk pemula.
Terbilang (angka menjadi huruf)
Tulisan “Satu juta sembilan ratus empat puluh ribu tiga ratus rupiah” di bawah total sering dicari. Excel dan Google Sheets tidak punya fungsi bawaan untuk itu. Pilihannya makro VBA di Excel, Apps Script di Sheets, atau rumus panjang bersarang. Rumus panjang rawan salah pada angka tertentu dan tidak saya uji untuk artikel ini, jadi tidak saya tulis. Tanpa terbilang, angka total di invoice tetap terbaca jelas.
Beda Excel dan Google Sheets
| Hal | Excel | Google Sheets |
|---|---|---|
| Dropdown produk | Pilih B10:B14, tab Data > Data Validation > Allow List, Source =Katalog!$A$2:$A$20 (Microsoft) | Pilih B10:B14, Data > Data validation > Add rule > Dropdown from a range (Google) |
| Format Rupiah | Ctrl+1 > Custom, tulis "Rp"#,##0 | Format > Number > Custom number format, kode yang sama |
| Pemisah argumen | Titik koma pada regional Indonesia | Mengikuti pengaturan bahasa dan lokal berkas |
| XLOOKUP | Excel 2021 dan Microsoft 365 | Tersedia |
| Hasilkan PDF | File > Save As > PDF | File > Download > PDF |
Format "Rp"#,##0 menampilkan pemisah ribuan sesuai pengaturan regional. Jangan mengetik “Rp” langsung di dalam sel angka. Itu mengubah sel jadi teks dan rumus bisa menghasilkan #VALUE!.
Rumus di artikel ini tidak memakai fungsi yang hanya ada di satu aplikasi, jadi sama-sama bisa disalin ke Sheets. Hal yang berbeda hanya letak menu.
Kesalahan yang sering terjadi
- Tarif PPN ditulis di dalam rumus. Saat aturan berubah, Anda harus mencari dan mengganti di banyak sel. Pakai sel input.
- Pajak dihitung dari subtotal sebelum diskon. Hitung diskon dulu, baru pajaknya.
- Pembulatan dilakukan di tiap baris. Selisih Rupiah menumpuk. Bulatkan di hasil akhir saja, kecuali memang kebijakan Anda.
- Harga diketik dengan “Rp” dan titik. Excel membacanya sebagai teks. Ketik angkanya saja, format tampilannya lewat Ctrl+1.
- Nama produk di baris tidak sama persis dengan Katalog. VLOOKUP gagal dan harga kosong. Dropdown mencegahnya.
- Lupa menaikkan nomor urut. Dua invoice dengan nomor sama menyulitkan penagihan. Catat di Log setiap kali selesai.
- Rentang SUM terlalu pendek. Kalau barang lebih dari lima baris, sisipkan baris di tengah tabel supaya rumus ikut melebar.
Cara angka di artikel ini diperiksa
Semua hasil di tabel (780.000, 1.840.000, 92.000, 1.602.333, 192.280, 1.940.280, 1.940.300, dan nomor 2026/10/017) dihitung dengan skrip Node memakai pustaka hot-formula-parser. Pustaka itu tidak mendukung TEXT, VLOOKUP, IFERROR, dan SUMIFS, jadi untuk fungsi itu skripnya memakai penggantian tulisan sendiri. Saya tidak menjalankan rumus ini langsung di Excel atau Google Sheets. Langkah menu dan format dikutip dari bantuan resmi Microsoft dan Google yang ditautkan di atas.
Template invoice sedang direncanakan. Daftar yang tersedia nanti ada di halaman template.
Fungsi dasar yang dibahas di sini bisa dipelajari lebih lanjut di 50 rumus dasar, dan dasar Excel ada di belajar Excel untuk pemula.