Bayar token pakai QRIS, bukan kartu luar

Kartu Visa mahasiswa ditolak di halaman billing, dan agency kecil tanpa kartu korporat USD mentok di titik yang sama. Invoice datang dalam dolar, dan kursnya geser di tengah bulan.
Padahal token nggak harus dibayar begitu. Isi saldo Rupiah dulu, lalu bayar per pemakaian, mulai dari QRIS Rp 1.000.
Siapa yang biasanya mentok di kartu luar
Yang bikin mentok jarang harga modelnya, lebih sering cara bayarnya.
Provider besar menagih USD, dan minta jenis kartu yang bank Indonesia sering tolak atau kasih limit kecil. Yang kena biasanya mahasiswa yang coba-coba satu proyek atau tim dua orang tanpa entity luar, plus freelancer yang nggak mau mencampur tagihan klien dengan kartu pribadinya.
Akibatnya klasik. Akun dibuat, key sempat jalan beberapa hari, lalu billing memblokir. Kalaupun kartunya lolos, kamu tetap nggak tahu berapa rupiah yang terpakai minggu ini, soalnya angkanya baru muncul waktu invoice datang.
PAYG dalam Rupiah memotong dua masalah tadi sekaligus: kamu isi saldo duluan, tiap request memotong saldo itu, dan angkanya kamu baca dalam mata uang yang sama dengan rekeningmu.
Dua cara bayar, satu sistem billing
Di gateway, tagihannya tergantung satu hal: request itu dijalankan pakai key siapa.
- Metered (bawaan). Request jalan di pool key gateway, token-nya dihitung, lalu dipotong dari saldo Rupiah-mu.
- BYOK. Request memakai key provider-mu, jadi token itu nggak memotong saldo gateway, walaupun pemakaiannya tetap tercatat, biayanya Rp 0 di sisi gateway.
Tulisan ini soal yang pertama, dari isi saldo sampai potongannya. BYOK cuma kami sebut sekilas. Jangan tertukar: key kn- tetap kamu butuhkan untuk masuk ke gateway, sedangkan key provider yang bekerja di belakangnya.
QRIS dari Rp 1.000


Buka dashboard, masuk ke halaman Saldo, lalu top up lewat QRIS dari Rp 1.000. Saldonya masuk begitu pembayaran selesai, dan nggak ada kartu luar yang perlu diurus.
Halaman bayarnya terpisah, dan tiap invoice punya tautan sendiri, jadi kamu bisa membukanya lagi selama invoice-nya masih valid. Statusnya berubah sendiri setelah QRIS beres.
Selain QRIS, saldo dan paket bisa dibayar kripto (BTC, ETH, USDT, dan yang lain). Nominal invoice kripto dihitung dalam dolar memakai kurs platform saat invoice dibuat, tapi saldo yang masuk tetap Rupiah, dengan minimum USD 1. Itu opsi cadangan, bukan inti tulisan ini.
Kalau request berbayar dikirim waktu saldonya nggak cukup, server balas HTTP 402:
{
"error": {
"code": "insufficient_balance",
"message": "insufficient balance: available Rp 19,589; this request reserves up to Rp 21,500 worst-case (input estimate + max_tokens x output rate). Lower max_tokens or top up at https://kenari.id/pay"
}
}
Angka di contoh itu dari dokumen, bukan saldomu. Yang perlu kamu baca ada dua hal yang disebut pesannya: sisa saldo dan plafon reservasi terburuk (perkiraan input plus max_tokens kali tarif output), karena dari situ kelihatan apakah kamu harus menurunkan max_tokens atau tinggal isi saldo di kenari.id/pay.
Kamu bayar jawaban yang sampai, bukan percobaan yang gagal.
Apa yang dipotong, apa yang tidak
Harga model dihitung per dimensi token: input, output, cache-read, dan cache-write. Satuan internalnya mikro-Rupiah per 1 juta token, tapi dashboard sudah menampilkannya dalam Rupiah biasa per 1 juta token, jadi kamu nggak perlu mengonversi sendiri.
Rumusnya, dari dokumen billing:
biaya = token * rate / 1.000.000
Tarif per model sengaja nggak kami tulis di sini, soalnya angkanya berubah dan artikel gampang basi. Ambil dari GET https://kenari.id/v1/models yang publik, atau dari katalog. GET /api/public/pricing cuma teaser buat landing: satu versi terbaru per keluarga, dan model khusus nggak lengkap.
Beberapa aturan yang enak diingat:
- Nggak ada output, nggak ada tagihan. Filter menahan jawaban, upstream balas kosong, atau koneksi putus sebelum satu output token keluar: biayanya Rp 0, walaupun request tetap muncul di riwayat.
- Reasoning tetap dihitung output. Model yang “berpikir” lama memakai token output juga, jadi kalau
max_tokens-mu kecil, anggarannya bisa habis di reasoning sebelum jawaban tertulis, dan itu tetap ditagih. :freeberarti Rp 0, tapi ada limitnya. Contoh yang masih tersedia waktu kami cek:step-3-7-flash:free. Limit per menit dan jatah hariannya ada di paket, dan sifatnya best-effort.
Paket langganan opsional, jatahnya dihitung per periode: 5 jam, mingguan, bulanan. Selama jatahnya masih ada, request memakai jatah itu dan saldomu nggak tersentuh. Begitu jatah habis sementara PAYG mati, yang kamu dapat HTTP 429 plan_limit_reached, jadi nyalakan PAYG kalau mau request-nya lanjut dari saldo.
Kapan BYOK lebih masuk akal
Isi QRIS kalau yang kamu mau satu tagihan Rupiah, tanpa menjaga kartu di tiap provider.
BYOK lebih masuk akal kalau:
- kamu sudah punya kredit atau kuota di OpenAI, Anthropic, atau provider lain,
- kamu ingin request tertentu jalan di akunmu sendiri,
- kamu mau metering dan routing gateway, tanpa membayar token di sisi kenari.
Cara kerjanya gampang. Daftarkan key-mu di halaman BYOK lewat tombol Add API key / Tambah, lalu kenari mencoba key itu duluan untuk model yang kamu minta. Biayanya tetap ditagihkan langsung oleh provider-mu, sementara di analitik kenari barisnya tercatat Rp 0.
Di halaman itu ada sakelar Cadangan saldo kenari. Kalau nyala dan semua key-mu gagal, request lanjut ke pool berbayar dan memotong saldo, dan kalau saldonya lagi tipis, kartu itu menampilkan peringatan plus tautan Isi saldo.
Ini bukan panduan BYOK. QRIS dan BYOK juga nggak saling menyaingi, cuma dua sumber pembayaran ke sistem billing yang sama.
Kalau kamu belum pernah mengirim request ke kenari sama sekali, langkah-langkahnya ada di request pertama dari nol.
Apa yang muncul di riwayat
Begitu request berbayar jalan, riwayatnya mencatat input token, output token, dan Rupiah terpakai, sementara model :free tetap menulis barisnya dengan biaya Rp 0.
Kalau jawabannya nggak keluar, barisnya bisa tetap ada dengan biaya nol, dan itu aturan “nggak ada output, nggak ada tagihan” tadi yang berlaku, bukan dashboard yang ngadat.
Reservasi di pesan 402 memang lebih besar dari potongan aktualnya, karena reservasi memakai perkiraan input plus max_tokens kali tarif output, sedangkan potongannya mengikuti token yang benar-benar dihasilkan. Jadi kalau yang menghalangi itu plafon reservasinya, bukan sisa saldomu, turunkan max_tokens.
Paket langganan mengubah sumber potongannya, bukan bentuk API-nya. Field model dan base URL-mu tetap sama persis, dan yang berubah cuma urutannya: jatah periode dipakai duluan, baru saldo, tergantung sakelar PAYG.
Cara membaca tagihan tanpa kaget
Satu request bisa jadi lebih dari satu baris. Membaca dokumen, misalnya, menambah satu baris per halaman di samping baris token model, sementara server tools (kenari_web_search, kenari_web_fetch) ditagih per tool call, terpisah dari token.
Reservasi juga bukan tagihan akhir, karena angka di 402 itu plafon terburuk, sementara potongannya mengikuti token yang benar-benar keluar.
Satu perbandingan yang sering bikin kaget: “harga 1 juta token” dipakai untuk menakar “biaya satu chat”. Chat pendek jauh, jauh di bawah 1 juta token, dan katalog memakai satuan 1 juta supaya antar model bisa dibandingkan setara.
Lebih enak dihitung sendiri. GET /v1/models memberi harga dengan satuan micro_idr_per_1m_tokens, jadi bagi sejuta untuk dapat Rupiah per 1 juta token. Waktu kami cek, gpt-oss-120b duduk di Rp 630 per 1 juta token input dan Rp 3.500 per 1 juta token output. Satu tanya-jawab pendek, anggap 500 token masuk dan 300 token keluar, jatuhnya belum sampai dua Rupiah. Jadi Rp 1.000 kira-kira cukup untuk 700-an tanya-jawab seukuran itu.
Model besar cerita lain. Hitungan yang sama di claude-sonnet-5 jatuhnya sekitar Rp 84 sekali jalan, jadi Rp 1.000 habis di belasan tanya-jawab saja. Dua-duanya wajar. Yang menentukan bukan besar saldomu, tapi model mana yang kamu panggil.
Angka di atas bisa berubah kapan saja, jadi ambil sebagai contoh cara menghitung, bukan sebagai daftar harga.
Kurs dolar di invoice kripto juga nggak ada hubungannya dengan harga model. Harga modelnya sudah dalam Rupiah, dan kripto cuma cara mengisi saldo.
Untuk mahasiswa dan tim kecil
Buat yang masih kuliah, Rp 1.000 sudah cukup buat mulai, entah ke model murah dari katalog atau tetap di :free dulu. Satu key bisa kamu pakai buat skrip, PR, sampai demo ke dosen, dan begitu proyeknya jadi tinggal isi lagi, soalnya di PAYG nggak ada minimum bulanan.
Buat tim kecil polanya mirip: satu akun, beberapa key berlabel. Key anak magang bisa kamu cabut tanpa mematikan produksi, saldonya tetap satu, dan itu jauh lebih gampang diaudit daripada tujuh invoice USD.
Kalau yang bayar provider itu klienmu, pakai BYOK. Kalau kamu sendiri yang menalangi token, QRIS.
Buka Saldo, isi Rp 1.000, atau tetap di :free dulu sampai kamu yakin modelnya cocok.