Landed Cost di ERP: Biaya Impor Sesungguhnya untuk Perdagangan Indonesia

Foto oleh dok1 on flickr
Landed cost adalah biaya total sesungguhnya dari item impor setelah tiba di gudang, termasuk harga beli ditambah biaya kirim, asuransi, bea masuk, dan biaya perolehan lainnya. Mencatat hanya harga faktur pemasok tanpa lapisan-lapisan ini akan meremehkan nilai persediaan dan melebih-lebihkan margin kotor pada setiap SKU impor.
Bea masuk dihitung dari nilai CIF, yaitu harga FOB ditambah biaya kirim dan asuransi, dikalikan tarif bea yang ditetapkan untuk kode HS item tersebut dalam jadwal tarif resmi. Tarif sangat beragam menurut kategori produk dan bisa dikurangi atau dihapuskan berdasarkan perjanjian dagang preferensial, sehingga klasifikasi kode HS harus diverifikasi sebelum tarif diterapkan.
PPN impor adalah pajak pertambahan nilai yang menjadi kredit pajak masukan dan dikompensasikan terhadap PPN keluaran dalam SPT Masa PPN bulanan, berbeda dengan biaya kirim atau bea masuk yang merupakan biaya perolehan barang yang permanen dan tidak dapat dikreditkan. Memasukkan PPN impor ke landed cost akan melebih-lebihkan nilai persediaan dan meremehkan aset pajak yang sebenarnya dapat diklaim kembali.
Pilih kunci alokasi seperti porsi setiap baris terhadap total nilai FOB, berat, atau volume, lalu kalikan porsi tersebut dengan setiap biaya tingkat pengiriman (biaya kirim, asuransi, bea masuk) dan tambahkan hasilnya ke biaya FOB baris itu sendiri. Kunci yang tepat tergantung pada apa yang sesungguhnya mendorong biaya tersebut: berat biasanya cocok untuk biaya kirim laut atau udara, sementara nilai sering cocok untuk premi asuransi.
Ya, bea cukai dapat mengeluarkan koreksi pasca-pengeluaran barang yang dikenal sebagai SPTNP, yang merevisi nilai pabean atau tarif bea setelah barang sudah dikeluarkan. Kebanyakan ERP membukukan landed cost sementara saat penerimaan barang menggunakan angka PIB yang dinyatakan, lalu membukukan penyesuaian terhadap persediaan atau harga pokok penjualan setelah penetapan akhir tiba.

Foto oleh dok1 on flickr
Ringkasan Utama
Landed cost dalam ERP berarti mencatat biaya kirim, asuransi, bea masuk, dan PPN impor sebagai data pengiriman yang utama, lalu mengalokasikannya ke setiap baris pembelian berdasarkan nilai FOB, berat, atau volume agar setiap barang impor punya biaya per unit yang sesungguhnya, sementara PPN impor tetap di luar nilai persediaan karena berstatus kredit pajak yang dapat dikreditkan.
Setiap importir pada akhirnya belajar dengan cara yang sulit bahwa harga di faktur pemasok bukanlah biaya sesungguhnya dari barang begitu barang tersebut sampai di rak gudang. Biaya kirim, asuransi laut, bea masuk, dan PPN impor menumpuk di atas harga pembelian, dan semua itu tidak otomatis muncul di purchase order. Jika ERP hanya mencatat nilai faktur, valuasi persediaan, harga pokok penjualan, dan margin kotor semuanya diam-diam menjadi salah sejak barang diterima.
Tulisan ini membahas cara membangun perhitungan landed cost ke dalam ERP kustom untuk perdagangan Indonesia: bagaimana berpindah dari harga FOB ke nilai CIF yang dikenakan bea, bagaimana bea masuk dan PPN impor ditumpuk di atasnya, bagaimana mengalokasikan biaya tingkat pengiriman secara adil ke banyak baris pembelian, dan mengapa salah satu biaya tersebut sama sekali tidak boleh masuk ke nilai persediaan. Contoh menggunakan satu pengiriman nyata dalam rupiah agar setiap rumus memiliki angka konkret di belakangnya.
Purchase order mencatat harga jual dari pemasok, tetapi satu pengiriman impor membawa beberapa lapisan biaya tambahan sebelum barang menjadi persediaan yang siap digunakan. Jika lapisan-lapisan tersebut dibebankan secara terpisah alih-alih dikapitalisasi ke dalam biaya barang, margin per unit pada SKU impor akan terlihat lebih baik dari yang sebenarnya, dan manajemen akhirnya menetapkan harga produk berdasarkan biaya yang tidak pernah nyata. Empat lapisan yang paling umum perlu dicatat adalah:
Catat landed cost pada tahap penerimaan barang, bukan menunggu faktur dari freight forwarder yang baru datang beberapa minggu kemudian. Bukukan estimasi sementara terhadap pengiriman segera setelah bill of lading dan dokumen kepabeanan tersedia, lalu sesuaikan setelah faktur aktual masuk. Menunggu setiap faktur sebelum menyentuh nilai persediaan berarti laporan margin salah selama seluruh periode keterlambatan itu.
Bea masuk dan PPN impor tidak dihitung dari harga faktur pemasok. Bea cukai Indonesia menghitung keduanya berdasarkan nilai pabean, yang dalam praktiknya hampir selalu berupa nilai CIF: harga free-on-board barang ditambah biaya kirim dan asuransi yang diperlukan untuk membawanya ke pelabuhan Indonesia. Menetapkan nilai dasar ini dengan benar adalah langkah pertama, karena setiap angka pajak dan bea selanjutnya adalah persentase dari nilai tersebut.
Dalam Incoterm CIF, penjual membayar biaya kirim dan asuransi hingga pelabuhan tujuan yang disepakati, sementara pembeli menanggung biaya bongkar, bea masuk, dan pajak mulai dari titik itu. Bahkan ketika pengiriman dibeli dengan Incoterm lain seperti FOB, ERP tetap perlu menyusun ulang nilai setara CIF untuk keperluan kepabeanan dengan menambahkan biaya kirim dan asuransi aktual yang dibayar importir untuk membawa barang ke pelabuhan. Nilai CIF hasil susunan ulang itu, bukan total faktur, yang menjadi dasar setiap perhitungan berikutnya.
| Komponen | Rumus | Jumlah (IDR) |
|---|---|---|
| Nilai CIF | Harga FOB + biaya kirim + asuransi | Rp 555.000.000 |
| Bea masuk | Nilai CIF dikali tarif bea (7,5% pada contoh ini) | Rp 41.625.000 |
| Nilai impor | Nilai CIF + bea masuk | Rp 596.625.000 |
| PPN impor (dapat dikreditkan) | Nilai impor dikali tarif PPN 11% | Rp 65.628.750 |
| Landed cost untuk persediaan | Nilai CIF + bea masuk, tidak termasuk PPN yang dapat dikreditkan | Rp 596.625.000 |
Tarif bea masuk ditetapkan per kode HS dalam buku tarif resmi yang dikelola oleh Direktorat Jenderal Bea dan Cukai, dan tarif tersebut sangat beragam tergantung jenis barang serta apakah berlaku perjanjian dagang preferensial. PPN impor kemudian dikenakan atas nilai impor, yaitu nilai CIF ditambah bea masuk yang baru dihitung, pada tarif PPN standar. Secara terpisah, pemotongan PPh Pasal 22 dipungut saat impor, dengan tarif lebih rendah bagi pemilik angka pengenal importir dan tarif lebih tinggi bagi yang tidak memilikinya. Semua ini tidak terjadi di purchase order, melainkan di dokumen pemberitahuan impor, sehingga ERP memerlukan tempat untuk mencatatnya terhadap pengiriman, bukan terhadap masing-masing item.
Tarif bea masuk sepenuhnya bergantung pada klasifikasi kode HS yang benar, dan kode yang salah bisa berarti tarif bea yang salah, landed cost yang salah, dan masalah kepatuhan dengan bea cukai. Jangan menetapkan tarif bea secara tetap di data induk item dan menganggapnya akan selalu benar. Validasikan setiap kode HS dan tarifnya terhadap jadwal tarif resmi yang berlaku sebelum digunakan dalam perhitungan landed cost, dan tandai pengiriman dengan klasifikasi yang tidak pasti untuk ditinjau manual alih-alih membiarkan sistem diam-diam menerapkan tarif bawaan.
Satu pengiriman impor hampir selalu membawa beberapa SKU dalam satu bill of lading, tetapi biaya kirim, asuransi, dan bea masuk dikenakan atas seluruh pengiriman, bukan atas masing-masing baris item. ERP harus mengambil total tingkat pengiriman tersebut dan membaginya secara adil ke setiap baris pembelian sehingga setiap item mendapatkan biaya per unit yang sesungguhnya. Logika alokasi itulah masalah teknis sesungguhnya di balik landed cost, dan biasanya berjalan dalam empat langkah.
-- purchase_lines: goods received on a single import shipment
CREATE TABLE purchase_lines (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
shipment_id UUID NOT NULL REFERENCES import_shipments(id),
item_id UUID NOT NULL REFERENCES items(id),
quantity NUMERIC(15,4) NOT NULL,
unit_cost_fob NUMERIC(15,2) NOT NULL, -- FOB price per unit, origin currency
weight_kg NUMERIC(15,4) NOT NULL,
line_fob_idr NUMERIC(15,2) NOT NULL -- quantity * unit_cost_fob, converted to IDR
);
-- import_shipments: freight, insurance, duty and PPN captured once per shipment
CREATE TABLE import_shipments (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
freight_idr NUMERIC(15,2) NOT NULL,
insurance_idr NUMERIC(15,2) NOT NULL,
duty_rate NUMERIC(6,4) NOT NULL, -- e.g. 0.075 for 7.5% bea masuk
ppn_rate NUMERIC(6,4) NOT NULL DEFAULT 0.11,
other_fees_idr NUMERIC(15,2) NOT NULL DEFAULT 0
);
// NestJS: apportion shipment-level costs across lines by FOB value share
async function apportionLandedCost(shipmentId: string): Promise<LandedCostLine[]> {
const shipment = await this.shipmentRepo.findOneOrFail({ where: { id: shipmentId } });
const lines = await this.lineRepo.find({ where: { shipmentId } });
const totalFob = lines.reduce((sum, l) => sum + l.lineFobIdr, 0);
const cifBase = totalFob + shipment.freightIdr + shipment.insuranceIdr;
const dutyTotal = cifBase * shipment.dutyRate;
const ppnBase = cifBase + dutyTotal;
const ppnTotal = ppnBase * shipment.ppnRate;
return lines.map((line) => {
const share = line.lineFobIdr / totalFob; // apportionment key
const freightShare = shipment.freightIdr * share;
const insuranceShare = shipment.insuranceIdr * share;
const dutyShare = dutyTotal * share;
const otherShare = shipment.otherFeesIdr * share;
// PPN import is a recoverable input credit, not part of inventory value
const landedUnitCost =
(line.lineFobIdr + freightShare + insuranceShare + dutyShare + otherShare) /
line.quantity;
return { itemId: line.itemId, landedUnitCost };
});
}PPN impor adalah pajak pertambahan nilai yang dibayar di perbatasan, tetapi bukan biaya permanen dari barang seperti biaya kirim atau bea masuk. PPN impor menjadi Pajak Masukan, yaitu kredit pajak yang dikompensasikan importir terhadap PPN keluaran yang dipungut atas penjualan dalam SPT Masa PPN bulanan. Memasukkannya ke dalam landed cost dan karenanya ke nilai persediaan akan melebih-lebihkan biaya sesungguhnya dari barang bagi bisnis dan meremehkan aset pajak yang sebenarnya dapat dikreditkan pada periode akuntansi yang sama dalam kebanyakan kasus.
Pertahankan bea masuk, biaya kirim, dan asuransi di dalam perhitungan landed cost karena semuanya adalah biaya perolehan barang yang tidak dapat dikreditkan, dan keluarkan PPN impor sepenuhnya dari perhitungan tersebut, lalu bukukan ke akun PPN masukan. Memisahkan keduanya dengan benar adalah yang membuat valuasi persediaan dan harga pokok penjualan tetap dapat dipertanggungjawabkan saat auditor atau kantor pajak menanyakan bagaimana biaya per unit diturunkan.
Tidak semua biaya tingkat pengiriman sebaiknya dibagi dengan cara yang sama, karena biaya yang berbeda didorong oleh realitas fisik pengiriman yang berbeda pula.
Skema dan fungsi alokasi di atas menyimpan biaya tingkat pengiriman dalam satu baris header dan membuat setiap baris pembelian merujuk ke pengiriman itu, sehingga perhitungan hanya perlu dijalankan sekali per pengiriman dan menyebar secara proporsional ke setiap baris. Keputusan desain utamanya adalah membuat fungsi alokasi bersifat idempoten: fungsi tersebut harus aman dijalankan ulang terhadap pengiriman yang sama setelah ada input yang berubah, menghitung ulang biaya per unit setelah landed cost setiap baris dari awal alih-alih menyesuaikan total yang berjalan secara bertahap, karena di situlah bug pembukuan ganda biasanya muncul.
Rancang perhitungan ulang sebagai penurunan ulang secara penuh berdasarkan ID pengiriman, bukan sebagai tambalan bertahap. Saat faktur aktual dari freight forwarder mengganti estimasi biaya kirim sementara, atau bea cukai mengeluarkan koreksi atas penetapan bea, menjalankan ulang fungsi yang sama terhadap header pengiriman yang sudah diperbarui seharusnya menghasilkan biaya per unit setelah landed cost yang baru dan bersih untuk setiap baris, dan selisih terhadap biaya sebelumnya menjadi satu penyesuaian persediaan atau harga pokok penjualan yang dapat ditelusuri.
Bea masuk pada dokumen pemberitahuan impor dalam praktiknya sering bersifat sementara, karena bea cukai dapat mengeluarkan koreksi pasca-pengeluaran barang, yang dikenal sebagai SPTNP, yang merevisi nilai pabean atau tarif bea yang telah ditetapkan setelah barang sudah dikeluarkan. Kebanyakan ERP menangani ini dengan membukukan estimasi landed cost saat penerimaan barang menggunakan angka PIB yang dinyatakan, lalu membukukan penyesuaian setelah penetapan akhir atau faktur aktual dari freight forwarder tiba. Apakah penyesuaian itu masuk ke persediaan atau ke harga pokok penjualan tergantung pada apakah stok masih ada di tangan atau sudah terjual, sehingga ERP perlu memeriksa kuantitas persediaan item saat ini sebelum menentukan ke mana koreksi itu dibukukan.
Semua ini bukan matematika yang rumit dengan sendirinya, tetapi hanya berhasil jika ERP memperlakukan biaya kirim, asuransi, bea, dan pajak sebagai data utama yang menempel pada pengiriman, bukan sebagai tambahan yang ditempelkan belakangan pada purchase order. Tetapkan kunci alokasi yang benar, keluarkan PPN impor dari nilai persediaan, dan rancang perhitungan ulang agar idempoten, maka landed cost yang dilaporkan sistem akan tetap dapat dipertanggungjawabkan, baik yang melihatnya adalah dasbor margin, auditor, maupun kantor pajak.