Skip to main content
BlogERP

Landed Cost di ERP: Biaya Impor Sesungguhnya untuk Perdagangan Indonesia

Harga di faktur pemasok bukanlah biaya sesungguhnya dari barang impor. Berikut cara membangun mesin perhitungan landed cost yang mengalokasikan biaya kirim, asuransi, bea masuk, dan PPN ke setiap baris pembelian untuk valuasi persediaan yang akurat.

Matthews Wong

Software Engineer

Juli 202610 menit baca
Landed Cost di ERP: Biaya Impor Sesungguhnya untuk Perdagangan Indonesia

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.

Mengapa Landed Cost Penting bagi Importir Indonesia

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:

  • Biaya kirim ke pelabuhan masuk Indonesia, baik melalui laut maupun udara
  • Asuransi laut atau kargo yang menanggung pengiriman selama dalam perjalanan
  • Bea masuk, yaitu pungutan impor yang dikenakan atas nilai pabean sesuai tarif yang berlaku untuk kode HS barang tersebut
  • PPN impor, pemotongan PPh Pasal 22, serta biaya insidental seperti terminal handling dan jasa kepabeanan

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.

Dari Harga FOB ke Nilai CIF yang Dikenakan Bea

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.

Membangun Nilai CIF

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.

KomponenRumusJumlah (IDR)
Nilai CIFHarga FOB + biaya kirim + asuransiRp 555.000.000
Bea masukNilai CIF dikali tarif bea (7,5% pada contoh ini)Rp 41.625.000
Nilai imporNilai CIF + bea masuk + pungutan kepabeanan atau cukai lain (tidak ada di sini)Rp 596.625.000
PPN impor (dapat dikreditkan)12% dari 11/12 nilai impor (barang nonmewah, PMK 131/2024)Rp 65.628.750
Landed cost untuk persediaanNilai CIF + bea masuk, tidak termasuk PPN yang dapat dikreditkanRp 596.625.000

Bea Masuk dan PPN Impor pada Dokumen Pemberitahuan Impor

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 serta pungutan kepabeanan atau cukai lainnya. Menurut PMK 131/2024 tarifnya 12%: untuk barang nonmewah dikenakan atas 11/12 nilai impor, sehingga efektif 11%, dan untuk barang yang dikenai PPnBM dikenakan atas nilai impor penuh. 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.

Mengalokasikan Biaya Tingkat Pengiriman ke Setiap Baris Pembelian

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.

  1. Catat setiap biaya tingkat pengiriman, yaitu biaya kirim, asuransi, bea masuk, dan biaya lain apa pun, pada header pengiriman impor sebelum menyentuh satu pun baris item.
  2. Pilih kunci alokasi untuk pengiriman tersebut, misalnya porsi setiap baris terhadap total nilai FOB, porsi terhadap total berat, atau porsi terhadap total volume, tergantung mana yang paling mencerminkan bagaimana biaya tersebut sesungguhnya timbul.
  3. Kalikan porsi alokasi setiap baris dengan setiap biaya tingkat pengiriman, lalu tambahkan hasilnya ke biaya FOB baris itu sendiri untuk mendapatkan biaya per unit setelah landed cost.
  4. Bukukan penyesuaian landed cost ke dalam valuasi persediaan item tersebut, atau ke akun penampung barang diterima belum difaktur jika faktur akhir belum datang, alih-alih membebankannya langsung.
-- 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,  -- 12% x 11/12 (PMK 131/2024); 0.12 for PPnBM goods
  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; // import value: add any other customs or excise levies
  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 };
  });
}

Mengapa PPN Impor Tidak Boleh Dikapitalisasi ke Persediaan

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.

Memilih Kunci Alokasi yang Tepat

Tidak semua biaya tingkat pengiriman sebaiknya dibagi dengan cara yang sama, karena biaya yang berbeda didorong oleh realitas fisik pengiriman yang berbeda pula.

  • Berdasarkan nilai: adil untuk asuransi, karena premi ditetapkan berdasarkan nilai barang yang dinyatakan untuk ditanggung, sehingga baris bernilai lebih tinggi seharusnya menanggung porsi yang lebih besar.
  • Berdasarkan berat: biasanya kunci yang lebih tepat untuk biaya kirim laut atau udara, karena pengangkut menetapkan tarif berdasarkan berat atau berat yang dapat dikenakan biaya, sehingga item berat bernilai rendah seharusnya menanggung biaya kirim lebih besar dibanding item ringan bernilai tinggi.
  • Berdasarkan volume: berguna ketika satu pengiriman mencampur item besar berdensitas rendah dengan item padat bernilai tinggi, sehingga ruang kubik yang terpakai, bukan sekadar berat, menjadi pendorong biaya kirim yang lebih adil.

Memodelkan Pengiriman Impor dalam Skema ERP Kustom

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.

Merekonsiliasi Estimasi Sementara dengan Penetapan Akhir Bea Cukai

Bea masuk pada dokumen pemberitahuan impor dalam praktiknya sering bersifat sementara. Menurut UU 17/2006, pejabat bea dan cukai dapat menetapkan tarif atau nilai pabean sebelum pemberitahuan pabean diserahkan atau dalam 30 hari sejak tanggalnya, yang dituangkan dalam SPTNP, dan Direktur Jenderal dapat menetapkan kembali keduanya dalam dua tahun sejak tanggal pemberitahuan pabean. 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.

FAQ

Pertanyaan Umum

Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.

Apa itu landed cost dalam valuasi persediaan ERP?

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.

Bagaimana cara menghitung bea masuk impor di Indonesia?

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.

Mengapa PPN impor tidak boleh dimasukkan ke landed cost?

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.

Bagaimana cara mengalokasikan biaya pengiriman ke beberapa baris pembelian?

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.

Apakah bea masuk bisa berubah setelah barang sudah diterima?

Ya. Menurut UU 17/2006, pejabat bea dan cukai dapat menetapkan tarif atau nilai pabean yang berbeda dalam 30 hari sejak tanggal pemberitahuan pabean impor, yang dituangkan dalam SPTNP, dan Direktur Jenderal dapat menetapkan kembali keduanya dalam dua tahun sejak tanggal pemberitahuan pabean. 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.