Cara Mengubah Ekspor Langganan Menjadi Laporan MRR dan ARR (Panduan 2026)

Ekspor langganan memberi Anda baris-baris data: pelanggan, paket, jumlah, interval, status, tanggal mulai. Laporan MRR membutuhkan satu angka per bulan. Mengubah data ekspor menjadi laporan tersebut tampak seperti aritmetika biasa dan sebagian besar hanyalah masalah definisi.
Dua pilihan menentukan setiap angka dalam laporan akhir. Langganan mana yang dianggap aktif, dan apakah diskon memotong jumlah tersebut.
Jika salah satu pilihan tersebut keliru, laporan Anda akan tetap terlihat seimbang secara internal. Hanya saja, laporan tersebut tidak akan sesuai dengan bagian keuangan, dasbor penagihan, dan versi bulan lalu.
Panduan ini membahas apa saja yang perlu diselesaikan terlebih dahulu, tiga metode manual, dan batasan di mana masing-masing metode tersebut tidak lagi berfungsi.
Apa yang Anda butuhkan sebelum memulai
Anda memerlukan data ekspor dengan satu baris per langganan, bukan satu baris per faktur. Faktur memberi tahu Anda apa yang ditagih. Langganan memberi tahu Anda apa yang berulang.
Anda memerlukan kolom interval penagihan pada setiap baris. Paket bulanan dan tahunan tidak dapat dijumlahkan sebelum paket tahunan dinormalisasi.
Anda juga memerlukan kolom status. Dokumentasi analisis penagihan Stripe mendefinisikan MRR sebagai jumlah dari nominal yang dinormalisasi secara bulanan. Ini hanya menghitung langganan dengan status active dan past_due.
Definisi tersebut sangat layak untuk diadopsi apa adanya. Definisi ini sudah dipublikasikan, spesifik, dan memberi Anda jawaban yang kuat saat seseorang menanyakan mengapa sebuah angka berubah.
Tiga keputusan harus diambil terlebih dahulu.
Status mana yang dihitung. Aktif ditambah lewat jatuh tempo (past due) adalah standar yang terdokumentasi. Status dibatalkan (canceled) dan tidak dibayar (unpaid) diperlakukan sebagai churn dan dikeluarkan dari perhitungan.
Apakah diskon memotong nominal. Stripe memungkinkan hal ini dikonfigurasi, dengan pengaturan terpisah untuk diskon berulang dan satu kali. Diskon selamanya (forever) selalu dikurangkan.
Kapan pelanggan mulai dihitung. Stripe memungkinkan Anda memilih awal periode penagihan pertama atau saat pembayaran pertama diterima. Opsi pertama digambarkan sebagai opsi yang paling umum digunakan.
Tulis ketiga keputusan tersebut di lembar kerja Anda sebelum Anda menulis rumus. Keputusan ini adalah pembeda antara laporan yang valid dan perdebatan.
Mengapa aritmetika adalah bagian yang mudah
Normalisasi itu sederhana. Contoh kasus dari Stripe sendiri menggunakan 100 pelanggan dengan paket bulanan senilai $100 ditambah 50 pelanggan dengan paket tahunan senilai $600. Hasilnya adalah (100 × 100) + (50 × (600 / 12)) = 12,500.
Kerumitannya terletak pada pengecualian, dan hal ini sering kali terlewatkan dalam spreadsheet.
Pajak tidak dihitung. Stripe mengecualikan pajak dari MRR. Jika data ekspor Anda menggunakan nominal kotor, Anda melaporkan angka yang terlalu tinggi setiap bulannya.
Masa uji coba (trial) tidak dihitung. Langganan dalam masa uji coba dikecualikan sampai mereka beralih ke paket berbayar.
Paket gratis tidak dihitung. Pelanggan dengan paket berharga nol tidak memberikan kontribusi pendapatan apa pun, sehingga mereka juga tidak dihitung sebagai pelanggan aktif.
Pendapatan berbasis penggunaan (usage-based) tidak dihitung. Ini adalah hal yang sering mengejutkan banyak orang. Produk dengan sistem kuota (metered) sepenuhnya dikecualikan dari MRR, sehingga bisnis yang sebagian pendapatannya ditagih berdasarkan penggunaan akan melihat MRR berada di bawah pendapatan aktual secara sengaja.
Lalu ada kasus kupon, yang terdokumentasi dan benar-benar berlawanan dengan intuisi. Jika MRR pelanggan turun menjadi nol, pelanggan tersebut dianggap sebagai churn untuk periode tersebut.
Kupon diskon 100% melakukan hal tersebut. Jika kupon dihapus nanti, pelanggan akan menjadi aktif kembali, yang akan muncul sebagai reaktivasi.
Jadi, sebuah promosi dapat menghasilkan churn dalam laporan Anda tanpa ada satu pun pelanggan yang benar-benar pergi.
Cara melakukannya secara manual
Opsi 1: Normalisasikan interval, lalu jumlahkan berdasarkan bulan
Tambahkan kolom jumlah bulanan. Bagi jumlah tahunan dengan dua belas, kalikan jumlah mingguan dengan sekitar 4.33, dan biarkan jumlah bulanan apa adanya.
Kemudian jumlahkan berdasarkan bulan dengan SUMIFS, dengan memfilter status. Gunakan EOMONTH untuk membuat tanggal akhir bulan yang Anda laporkan.
Laporkan MRR pada akhir bulan, bukan pada hari ini. Laporan Stripe yang dapat diunduh secara eksplisit menunjukkan MRR dari setiap pelanggan pada akhir bulan, dan menyamakan konvensi tersebut akan menghemat waktu rekonsiliasi nantinya.
Batasan di sini adalah riwayat data. Cara ini memberi Anda data bulan berjalan dengan bersih, tetapi tidak memberi tahu Anda apa pun tentang mengapa angka tersebut berubah.
Opsi 2: Buat kolom pergerakan (movement)
Inilah yang membuat laporan ini berguna. Pecah perubahan tersebut menjadi baru (new), reaktivasi (reactivation), ekspansi (expansion), kontraksi (contraction), dan churn.
Definisi pertumbuhan Stripe adalah angka awal ditambah baru, reaktivasi, dan ekspansi, dikurangi kontraksi dan churn, lalu disesuaikan dengan nilai tukar mata uang. Contoh kasusnya menunjukkan perubahan dari $1,000 menjadi $1,045 melalui komponen-komponen tersebut.
Perhatikan poin terakhir. Jika ada pelanggan yang membayar dalam mata uang lain, model rumus murni tidak akan bisa direkonsiliasi sampai Anda menangani efek nilai tukar tersebut.
Multi-mata uang memiliki konsekuensi kedua yang perlu diketahui. Stripe menyatakan bahwa pemfilteran dan pengelompokan berdasarkan produk atau harga tidak tersedia ketika pendapatan langganan diproses dalam beberapa mata uang.
Batasan dari metode ini adalah pemeliharaannya. Kolom pergerakan membutuhkan snapshot periode sebelumnya, sehingga Anda harus menyimpan salinan kedua dari bulan lalu selamanya.
Opsi 3: Ambil data pergerakan langsung dari sistem penagihan
Sebagian besar platform penagihan akan mengekspor data pergerakan untuk Anda. Stripe menerbitkan tiga file CSV: MRR per pelanggan berdasarkan bulan, ringkasan metrik langganan, dan log dari setiap pergerakan MRR pelanggan.
File ketiga itulah yang perlu Anda minta. File ini menghilangkan bagian tersulit dari Opsi 2.
Jika Anda mengubah definisi metrik, bersiaplah untuk adanya penundaan. Stripe mencatat bahwa perubahan konfigurasi membutuhkan waktu 24 hingga 48 hours untuk muncul.
Batasan umum yang sama. Ketiga metode tersebut berhenti di MRR. Mengubahnya menjadi ARR, ARPU, churn, dan retensi berarti menambahkan lapisan keputusan lain di atas tabel yang sama.
Di mana metode manual mulai melambat
Bulan pertama membutuhkan waktu satu sore. Bulan keempat membutuhkan waktu lebih lama, dan bukan karena datanya menjadi lebih sulit.
Pada saat itu, buku kerja Anda sudah menyimpan dua definisi aktif, kolom nilai tukar yang diperbaiki secara manual, dan tab pergerakan yang tidak ingin disentuh oleh siapa pun.
Metrik turunan melipatgandakan masalah tersebut. ARPU adalah total MRR dibagi dengan pelanggan aktif. Lifetime value (LTV) adalah ARPU dibagi dengan tingkat churn.
Churn memiliki jebakannya sendiri. Penyebut (denominator) Stripe adalah pelanggan yang aktif tiga puluh hari lalu ditambah pelanggan baru yang ditambahkan dalam periode tersebut, yang menghasilkan 100 / (1000 + 100) = 9.1%. Spreadsheet yang hanya membagi dengan jumlah awal saja akan melaporkan angka yang lebih tinggi.
Retensi juga berperilaku di luar dugaan. Retensi pendapatan dapat melebihi 100%, karena ekspansi di dalam suatu kohort lebih besar daripada churn.
Semua ini tidaklah sulit. Ini hanya berupa lima keputusan subjektif yang harus dibuat secara identik setiap bulan, oleh siapa pun yang kebetulan menyusun laporan tersebut.
Cara membuat laporan dengan Powerdrill Bloom
Langkah 1: Unggah data ekspor langganan Anda
Unggah file CSV langganan, atau file langganan dan pergerakan bersama-sama. Powerdrill Bloom memprofilkan kolom-kolom saat diunggah, sehingga interval yang hilang, jumlah kosong, dan ID langganan ganda akan terdeteksi sebelum total dihitung.
Langkah 2: Nyatakan definisi dalam bahasa sehari-hari
Jelaskan aturannya alih-alih menyusun rumusnya. Sebutkan status mana saja yang dihitung, apakah nominalnya bersih dari diskon, dan akhir bulan mana yang Anda laporkan.
Kemudian mintalah pemeriksaan dalam langkah yang sama. Tanyakan baris mana yang memiliki interval yang tidak Anda harapkan, dan langganan mana yang bernilai nol setelah diskon. Lalu tanyakan apakah total bulanan sesuai dengan ringkasan penagihan.
Langkah 3: Ekspor grafik, laporan, atau slide presentasi
Dapatkan tren bulanan, tabel pergerakan berdasarkan komponen, atau slide presentasi yang siap dipresentasikan ke direksi lengkap dengan angka dan definisinya.
Mengapa cara ini lebih baik daripada membuatnya kembali setiap bulan
| Metode manual | Powerdrill Bloom | |
|---|---|---|
| Menormalisasi paket tahunan | Kolom rumus per file | Unggah dan nyatakan aturannya |
| Rincian pergerakan | Snapshot bulan sebelumnya yang harus dipelihara | Minta komponen-komponennya |
| Mengecualikan masa uji coba dan baris berbasis kuota | Filter manual setiap siklus | Nyatakan pengecualiannya |
| Merekonsiliasi ke ringkasan penagihan | Pemeriksaan manual | Tanyakan apakah totalnya sesuai |
Baris-baris tengah adalah tempat waktu Anda habis. Menjumlahkan kolom bukanlah pekerjaan utamanya; menjaga agar lima definisi tetap konsisten dari bulan ke bulan adalah tantangan sebenarnya.
Kesalahan umum
Menjumlahkan faktur alih-alih langganan. Faktur mencakup biaya satu kali dan prorata. Pendapatan berulang adalah properti dari langganan, bukan tagihan.
Membiarkan pajak tetap dalam nominal. Pajak menggelembungkan angka setiap bulan dan tidak pernah impas. Hapus pajak sebelum melakukan normalisasi.
Menghitung masa uji coba sebagai pendapatan. Masa uji coba belum memiliki nominal berulang. Memasukkannya berarti meminjam pertumbuhan bulan depan.
Menganggap ARR sebagai MRR dikali dua belas tanpa menjelaskannya. Ini adalah angka tahunan yang dinormalisasi, bukan uang tunai yang terkumpul. Beri label agar tidak ada yang mengartikannya sebagai pemesanan (bookings).
Mengabaikan efek kupon terhadap churn. Diskon penuh menurunkan nilai pelanggan menjadi nol, yang terbaca sebagai churn. Tandai baris-baris tersebut daripada harus menjelaskannya nanti.
Membagi churn dengan jumlah awal saja. Penyebut yang terdokumentasi mencakup pelanggan yang ditambahkan selama periode tersebut. Kedua versi ini menghasilkan tingkat persentase yang berbeda pada data yang identik.
Membangun kembali dari awal setiap bulan. Definisinya tidak berubah; hanya data ekspornya yang berubah. Pertahankan aturan dan ganti filenya, disiplin yang sama seperti pada laporan anggaran versus aktual.
Kesimpulan
Tetapkan daftar status, tentukan diskon, normalisasikan interval, dan laporkan pada akhir bulan. Keempat langkah tersebut menghasilkan laporan MRR yang dapat dipertanggungjawabkan saat ditanya oleh bagian keuangan.
Bagian yang mahal bukanlah penjumlahannya. Melainkan kenyataan bahwa lima definisi harus tetap konsisten setiap bulan sementara format data ekspor terus berubah.
Jika di situlah waktu akhir bulan Anda habis, coba Powerdrill Bloom pada data ekspor langganan Anda. Lihat juga panduan kami tentang menetapkan target KPI dari data Anda sendiri. Kumpulan alat AI untuk pelacakan metrik SaaS dan halaman analisis keuangan AI membahas dari sisi alat bantu.
Pertanyaan yang sering diajukan
Apa rumus untuk menghitung MRR dari data ekspor langganan?
Normalisasikan setiap langganan ke nominal bulanan, lalu jumlahkan langganan yang memiliki status yang memenuhi syarat. Contoh dari Stripe adalah (100 × $100) + (50 × ($600 / 12)) = $12,500.
Bagaimana cara mengonversi MRR ke ARR?
Kalikan angka bulanan dengan dua belas. Beri label sebagai tingkat run rate tahunan yang dinormalisasi (normalised annual run rate) alih-alih uang tunai yang terkumpul, karena paket tahunan ditagih di muka.
Apakah pendapatan berbasis penggunaan harus dimasukkan?
Stripe mengecualikan produk dengan sistem kuota (metered) dari MRR. Jika sebagian besar pendapatan Anda berbasis penggunaan, laporkan hal tersebut sebagai baris terpisah alih-alih menggabungkannya.
Status langganan mana saja yang dihitung sebagai aktif?
Standar yang terdokumentasi adalah active ditambah past_due. Langganan yang dibatalkan (canceled) dan tidak dibayar (unpaid) diperlakukan sebagai churn dan dikeluarkan dari total perhitungan.
Mengapa tingkat churn saya berbeda dengan dasbor penagihan?
Paling sering penyebabnya adalah penyebutnya (denominator). Perhitungan yang terdokumentasi membaginya dengan pelanggan aktif tiga puluh hari lalu ditambah pelanggan baru yang ditambahkan selama periode tersebut.