Pembayaran kripto untuk SaaS
Bagaimana perusahaan SaaS bisa menerima kripto: satu faktur per periode sebagai ganti kartu tersimpan, alur perpanjangan, pembayaran sebagian, akuntansi dalam dolar, dan apa yang tidak boleh dijanjikan kepada pelanggan.

Perangkat lunak berlangganan dibangun di sekitar kartu tersimpan yang ditagih otomatis. Kripto tidak bekerja seperti itu: pelanggan mengirim setiap pembayaran sendiri. Kedengarannya masalah, tetapi banyak perusahaan SaaS menjual kepada pelanggan yang tidak bisa atau lebih suka tidak membayar dengan kartu, dan model yang berhasil itu sederhana: satu faktur per periode penagihan. Panduan ini menunjukkan cara membangunnya, apa yang diharapkan, dan di mana ia berbeda dari penagihan kartu.
Mengapa perusahaan SaaS menambahkan kripto
Kartu adalah default, jadi menambahkan kripto perlu alasan. Alasan yang biasa:
- Pelanggan yang tidak terlayani jalur kartu. Tim di negara tempat prosesor Anda tidak beroperasi, atau yang kartunya ditolak untuk perangkat lunak lintas negara, tetap bisa membayar dengan stablecoin dolar.
- Faktur tahunan dan besar. Pelanggan yang membayar faktur tahunan besar sering lebih suka transfer daripada kartu, dan transfer stablecoin final tanpa batas waktu bank.
- Tidak ada chargeback. Pengirim tidak bisa membatalkan pembayaran kripto, jadi penipuan «friendly fraud» pada langganan tanpa kartu hadir bukan kekhawatiran.
- Pembeli yang peduli privasi dan pengguna asli kripto. Alat pengembang, infrastruktur, dan hosting sering punya pengguna yang memegang stablecoin dan suka membayar dengannya.
Pahami batasnya: kripto menambah metode pembayaran bagi pelanggan itu. Ia tidak menggantikan penagihan kartu bagi yang lain.
Modelnya: satu faktur per periode
Penagihan kartu menarik dari kartu tersimpan menurut jadwal. Pembayaran kripto harus dimulai pelanggan, jadi model yang alami adalah faktur prabayar:
- Tak lama sebelum periode berakhir, sistem Anda membuat faktur untuk periode berikutnya.
- Pelanggan menerima faktur dengan tautan pembayaran, membuka halaman pembayaran yang dihosting, memilih aset dan jaringan, lalu membayar.
- Saat pembayaran selesai, sistem Anda menandai faktur dibayar dan memperpanjang langganan.
Tidak ada metode pembayaran tersimpan dan tidak ada penagihan otomatis. Qvard tidak menawarkan penagihan berulang atau langganan sebagai produk; logika perpanjangan, pengingat, dan masa tenggang ada di pihak Anda. Untuk banyak alat B2B dan pengembang itu sudah cukup, dan begitulah paket tahunan biasanya dibayar. Lihat faktur kripto untuk SaaS B2B untuk detail sisi penagihan.
Membuat pembayaran untuk sebuah faktur
Untuk setiap faktur, buat pembayaran dari backend Anda dengan satu POST ke https://api.qvard.com/api/v1/payment. Permintaan membawa kunci Anda di header Authorization: Bearer dan JSON berisi:
id: nomor faktur Anda, sebagai string. Nomor ini kembali di webhook, jadi gunakan sesuatu yang bisa Anda cari.price: jumlah dalam dolar AS.paymentSystemId(opsional): metode pembayaran dari proyek Anda, jika ingin halaman terbuka dengan aset dan jaringan terpilih.
Responsnya 201 dengan redirectUrl, alamat halaman pembayaran yang dihosting. Taruh tautan itu di email faktur dan di halaman penagihan pelanggan. Jika permintaan dikirim dua kali dengan id yang sama untuk metode pembayaran yang sama, Anda mendapat pembayaran yang sudah ada, sehingga tugas yang diulang tidak membuat duplikat.
Tetapkan harga paket dalam dolar. Pelanggan membayar setaranya dalam aset yang dipilih, dengan kurs yang dikunci selama satu jam.
Alur perpanjangan dari awal sampai akhir
Perpanjangan membutuhkan dua potongan kode kecil, ditunjukkan di bawah: tugas yang membuat faktur dan pembayaran, dan handler yang bereaksi saat dibayar.
Jadwal yang bisa dijalankan:
- Tujuh hari sebelum akhir: buat faktur dan kirim tautan lewat email.
- Tiga hari sebelumnya dan pada hari terakhir: kirim pengingat jika masih terbuka.
- Setelah berakhir: biarkan akun aktif selama masa tenggang singkat pilihan Anda, lalu turunkan paket atau tangguhkan. Ini kebijakan Anda, bukan fitur gateway.
- Saat webhook tiba: tandai faktur dibayar dan perpanjang langganan dari akhir periode sebelumnya, bukan dari tanggal pembayaran, agar yang membayar lebih awal tidak kehilangan hari.
Webhook dikirim saat pembayaran selesai. Endpoint Anda harus menjawab tepat HTTP 200 (jika tidak, diulang: lima percobaan dalam sekitar enam menit) dan aman bila dijalankan dua kali, yang ditangani langkah markPaidIfOpen pada contoh. Verifikasi tanda tangan X-Qvard-Signature (HMAC-SHA256 dengan kunci rahasia Anda); lihat cara mengamankan webhook pembayaran kripto.
// Called by your billing job a few days before a subscription period ends.
async function createRenewalInvoice(sub) {
const invoice = await db.invoices.create({ subscriptionId: sub.id, amountUsd: sub.planPriceUsd, status: 'open' });
const res = await fetch('https://api.qvard.com/api/v1/payment', {
method: 'POST',
headers: { Authorization: 'Bearer ' + process.env.QVARD_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ id: String(invoice.id), price: invoice.amountUsd })
});
const { redirectUrl } = await res.json();
await mailer.send(sub.email, 'Your renewal invoice', 'Pay here: ' + redirectUrl);
}
// Called from the webhook handler when status is "completed".
async function onPaid(invoiceId) {
const invoice = await db.invoices.markPaidIfOpen(invoiceId); // null if already paid
if (invoice) await db.subscriptions.extend(invoice.subscriptionId, '1 month');
}Pembayaran sebagian, perubahan paket, dan akuntansi
Penagihan nyata punya kasus tepi. Putuskan sebelum peluncuran:
- Pembayaran sebagian. Jika yang tiba kurang dari jumlah penuh, statusnya
partialdan webhook penyelesaian tidak dikirim. Biarkan faktur terbuka, beri tahu pelanggan berapa yang kurang dan biarkan mereka mengirim sisanya, atau batalkan dan kembalikan dana. Jangan perpanjang langganan pada pembayaran sebagian. - Upgrade dan downgrade. Prorata adalah logika Anda. Cara paling sederhana adalah menerbitkan faktur baru untuk selisihnya, atau menerapkan perubahan dari periode berikutnya.
- Pengembalian dana. Pembayaran kripto tidak bisa ditarik kembali, jadi pengembalian adalah transfer yang Anda kirim sendiri. Tulis aturannya di ketentuan Anda.
- Akuntansi. Catat pendapatan dalam dolar sesuai jumlah faktur dan simpan
idpembayaran di samping faktur untuk rekonsiliasi. Tanyakan penasihat Anda tentang perlakuan pajak dan akuntansi atas penerimaan kripto.
Jaga agar status faktur sedikit dan jelas: terbuka, dibayar, dibatalkan.
Apa yang disampaikan kepada pelanggan, dan apa yang tidak dijanjikan
Jelaskan kripto dengan jujur di halaman harga atau penagihan Anda:
- Anda membayar setiap periode sendiri, dengan faktur dan tautan pembayaran;
- aset dan jaringan apa yang diterima (lihat koin yang didukung), dan bahwa pembayaran harus dilakukan di jaringan yang dipilih pada halaman pembayaran;
- bahwa akses diperpanjang saat pembayaran selesai, bukan saat pelanggan mengatakan sudah membayar;
- aturan pengembalian dana Anda dalam satu baris.
Jangan menjanjikan perpanjangan otomatis, dompet kripto tersimpan, atau percobaan ulang ala kartu; semuanya tidak ada dalam model ini. Janjikan yang berfungsi: faktur yang jelas, halaman pembayaran, dan perpanjangan segera setelah pembayaran selesai.
Biayanya dan apa yang siap hari ini
Tidak ada biaya langganan untuk gateway. Komisi bersifat individual untuk proyek Anda dan menurut halaman harga dimulai dari 1% serta bisa turun hingga 0,1%. Menarik saldo ke dompet Anda sendiri hanya dikenai biaya jaringan; penarikan ke rekening bank dalam fiat tidak tersedia.
Integrasi lewat API, yang membutuhkan developer; belum ada plugin penagihan siap pakai, dan pelanggan kembali ke situs Anda sendiri setelah membayar, jadi beri mereka halaman penagihan yang menampilkan status faktur sebenarnya. Lihat kasus penggunaan SaaS, dokumentasi pengembang, dan faktur demo.
FAQ
Apakah Qvard mendukung penagihan berulang atau langganan otomatis?
Tidak. Pembayaran kripto dikirim pelanggan setiap kali. Model yang berhasil adalah satu faktur per periode penagihan, dengan logika perpanjangan, pengingat, dan masa tenggang di pihak Anda.
Bagaimana saya tahu pelanggan sudah membayar?
Qvard memanggil webhook Anda saat pembayaran selesai, dengan id faktur yang Anda kirim dan statusnya. Tandai faktur dibayar hanya pada status completed dan buat handler aman bila dijalankan dua kali.
Bagaimana jika pelanggan hanya membayar sebagian faktur?
Pembayaran mendapat status partial dan webhook penyelesaian tidak dikirim. Biarkan faktur terbuka dan minta sisanya, atau batalkan dan kembalikan dana. Jangan perpanjang langganan.
Bisakah saya menetapkan harga paket dalam dolar?
Bisa. Harga ditetapkan dalam dolar AS dan pelanggan membayar setaranya dalam aset dan jaringan yang dipilih, dengan kurs yang dikunci selama satu jam.


