Penagihan & Rupiah
kenari menagih pemakaian dalam Rupiah dari saldo prabayar. Ada dua cara bayar, tergantung siapa pemilik key yang melayani request: pool key kenari, atau key milikmu sendiri.
Dua cara bayar
Section titled “Dua cara bayar”- Metered (default): request jalan di pool key provider milik kenari. Token dihitung, lalu dipotong dari saldo Rupiah kamu.
- BYOK: request dilayani key milikmu sendiri. Gratis, dan pemakaian tetap tercatat dengan biaya nol. Lihat BYOK.
Saldo prabayar
Section titled “Saldo prabayar”Top up via QRIS mulai Rp 1.000, tanpa kartu kredit luar negeri. Saldo masuk begitu pembayaran lunas.
Request berbayar tanpa saldo yang cukup mengembalikan HTTP 402. Pesannya
menyertakan saldo yang tersedia dan batas atas reservasi request tersebut
(estimasi input + max_tokens dikali tarif output, skenario terburuk), sehingga
langsung terlihat apakah solusinya menurunkan max_tokens atau top up:
{ "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" }}Halaman pembayaran
Section titled “Halaman pembayaran”Pengisian saldo dan pembayaran langganan berlangsung di halaman pembayaran khusus. Setiap tagihan memiliki tautan sendiri, sehingga halaman dapat dibuka kembali selama tagihan masih berlaku dan status pembayaran diperbarui otomatis.
Pembayaran kripto
Section titled “Pembayaran kripto”Selain QRIS, saldo dan langganan dapat dibayar lewat kripto (BTC, ETH, USDT, dan lainnya). Tagihan diterbitkan dalam dolar AS memakai kurs platform pada saat tagihan dibuat, lalu saldo Rupiah atau paket langganan aktif sesuai nominal yang dipilih. Minimum pembayaran kripto setara USD 1. Biaya pemrosesan jaringan ditanggung pembayar saat membayar tagihan. Pembayaran diproses oleh OxaPay. Saldo masuk otomatis setelah jaringan mengonfirmasi pembayaran (umumnya beberapa menit).
Satuan uang
Section titled “Satuan uang”Secara internal, saldo dan harga disimpan dalam micro-Rupiah, yaitu Rupiah dikali 1.000.000. Dashboard dan halaman harga menampilkan Rupiah biasa, jadi kamu tidak perlu menghitung konversi ini sendiri.
Harga model
Section titled “Harga model”Harga ditetapkan dalam micro-Rupiah per 1 juta token, dengan empat dimensi:
| Dimensi | Keterangan |
|---|---|
input | token prompt yang dikirim |
output | token yang dihasilkan model |
cache-read | token yang dibaca dari cache |
cache-write | token yang ditulis ke cache |
Biaya dihitung per dimensi:
biaya = token * rate / 1.000.000Cache-write ditagih dengan tarifnya sendiri kalau disetel. Kalau tidak disetel, cache-write memakai tarif input.
Lihat harga aktif di Model & harga, atau ambil langsung dari GET /v1/models.
Tanpa output, tanpa tagihan
Section titled “Tanpa output, tanpa tagihan”Kadang model tidak menghasilkan apa-apa: filter konten menahan jawaban, upstream membalas kosong, atau koneksi putus sebelum satu token keluar. Kalau itu terjadi, kamu tidak ditagih.
Aturannya sederhana. Kalau sebuah request selesai tanpa satu pun token output, biayanya Rp 0, walau prompt-nya sudah diproses. Ini berlaku di semua cara bayar: saldo metered, kuota langganan, dan jatah gratis paket. Request tetap muncul di riwayat pemakaian dengan biaya nol, jadi kamu tahu request itu terjadi tanpa saldo yang berkurang.
Singkatnya, kamu bayar untuk jawaban yang sampai, bukan untuk percobaan yang gagal.
Versi gratis
Section titled “Versi gratis”Model dengan akhiran :free, misalnya step-3-7-flash:free, ditagih Rp 0. Sebagai gantinya ada batas jumlah request per akun per menit. Detail batas dan daftar model gratis ada di Model & harga.
Kuota harian model gratis
Section titled “Kuota harian model gratis”Selain batas per menit, model :free juga punya jatah request per hari, bertingkat tiga menurut status akun:
| Tingkat | Berlaku untuk |
|---|---|
| Solo | akun baru, belum pernah top up hingga ambang tertentu |
| Payer | akun yang sudah top up saldo hingga ambang tersebut |
| Langganan | akun dengan paket aktif. Sebagian paket punya kuota harian sendiri, beda dari nilai bawaan |
Nilai kuota, RPM, dan ambang top up yang berlaku saat ini ada di halaman harga (juga lewat GET /api/public/pricing), karena operator dapat menyetel angkanya kapan saja. Halaman Langganan juga menampilkan nilai itu. Habis kuota harian mengembalikan HTTP 429 dengan header Retry-After dan kode alasan free_quota_daily.
Langganan (opsional)
Section titled “Langganan (opsional)”Paket langganan memberi kuota jendela untuk model tertentu: 5 jam, mingguan, atau bulanan. Selama kuota jendela masih ada, request memakai kuota itu, bukan saldo.
Saat kuota jendela habis dan tidak ada PAYG yang aktif, request mengembalikan HTTP 429:
{ "error": { "code": "plan_limit_reached", "message": "plan limit reached" }}Atur dan ganti paket di dashboard.
Penolakan itu berlaku untuk seluruh endpoint, bukan cuma chat. Paket biasanya mencakup model chat saja, sementara embeddings, gambar, audio, video, rerank, dan pembacaan dokumen selalu dibayar dari saldo. Begitu kuota paket habis dan opsi lanjut pakai saldo dimatikan, endpoint-endpoint itu ikut HTTP 429, bukan diam-diam memotong saldo. Selama kuota paket masih ada, semuanya jalan seperti biasa dan tetap dibayar dari saldo.
Status terkait
Section titled “Status terkait”Lihat Error & status untuk rincian 402 insufficient_balance dan 429 plan_limit_reached.