OmniStream Docs
  • Dokumentasi
  • Developer
  • API Reference
Memulai
Hubungkan Channel
Fitur Utama
CRM
Broadcast & Campaign
AI & Otomasi
Tim & Laporan
Pengaturan
    Billing & LanggananKustomisasi Data & KontenProfil PenggunaGanti Kata SandiPengumuman (Announcements)Outgoing Webhooks
Troubleshooting
Pengaturan

Billing & Langganan

Ringkasan

Halaman Billing (/billing) adalah pusat pengelolaan langganan OmniStream untuk admin tenant. Di sini admin dapat melihat paket yang sedang aktif, memantau pemakaian (agen, kontak, pesan), mengisi saldo prepaid untuk AI agent, melihat daftar invoice, dan mengelola metode pembayaran.

Billing dikelola oleh layanan terpisah yang terintegrasi langsung dengan OmniStream.

Hak akses: Halaman Billing hanya dapat diakses oleh admin tenant. Agent dan supervisor tidak memiliki akses ke rute /billing.

Paket & Langganan

Melihat paket aktif

  1. Buka /billing. Halaman akan memuat dua data secara paralel: paket aktif (GET /api/billing/plan) dan pemakaian bulan ini (GET /api/billing/usage).
  2. Kartu Current Plan menampilkan:
    • Nama paket dan status langganan (badge berwarna — lihat tabel di bawah)
    • Harga per bulan (format Rp untuk IDR, $ untuk USD)
    • Banner peringatan trial jika status trialing dan masa trial < habis — menunjukkan sisa hari
StatusWarnaArti
activeHijauLangganan aktif dan berbayar
trialingBiruMasa trial 14 hari berjalan
past_dueKuningInvoice jatuh tempo belum dibayar
cancelledMerahLangganan dibatalkan
suspended—Akses diblokir (trial habis atau past_due >7 hari)

Jika status menjadi suspended, seluruh pengguna tenant akan mendapat HTTP 403 saat memanggil API. Admin harus segera memperbarui pembayaran untuk memulihkan akses.

Upgrade atau ganti paket

  1. Klik Upgrade Plan di kartu Current Plan.
  2. Modal Choose a Plan menampilkan semua paket aktif dari GET /api/billing/plans, diurutkan berdasarkan sort_order.
  3. Gunakan toggle Monthly / Annual untuk melihat harga masing-masing periode. Pilihan Annual memberikan diskon ~17%.
  4. Setiap kartu paket menampilkan batas: jumlah agen, kontak, dan pesan per bulan. Nilai 0 atau negatif berarti Unlimited.
  5. Klik Select untuk mengkonfirmasi. Sistem akan menghitung proration secara otomatis:
    • Credit untuk sisa hari paket lama
    • Charge untuk sisa hari paket baru
    • Untuk mata uang IDR, PPN 11% ditambahkan ke net positif
    • Invoice proration dibuat langsung (status open) dan dapat dilihat di halaman Invoices

Jika upgrade dilakukan di pertengahan siklus, invoice proration akan muncul di /billing/invoices dengan deskripsi line item yang menjelaskan rincian credit dan charge.

Membatalkan langganan

  1. Klik Cancel (hanya muncul jika status active atau trialing).
  2. Konfirmasi di dialog. Sistem akan menandai cancel_at_period_end = true — langganan tidak langsung berhenti, tetapi akan dinonaktifkan di akhir periode penagihan berjalan.

Kuota & Batas Penggunaan

Setiap paket memiliki batas sumber daya yang disimpan di kolom limits (JSON) pada tabel billing_plans:

FieldArti
max_agentsJumlah maksimum agent aktif
max_contactsJumlah maksimum kontak tersimpan
max_messages_monthJumlah pesan keluar+masuk per bulan kalender
max_channelsJumlah integrasi kanal (WhatsApp/Instagram/Email)
max_ai_agentsJumlah AI agent yang dapat diaktifkan

Nilai -1 atau 0 berarti tidak terbatas untuk field tersebut.

Penegakan kuota (enforcement)

Kuota ditegakkan secara real-time. Saat admin mencoba menambah agen, kontak, atau pesan melebihi batas:

  • API mengembalikan HTTP 402 Payment Required dengan pesan yang menyebut limit saat ini dan maksimumnya
  • Permintaan ditolak sampai tenant upgrade ke paket yang lebih tinggi

Fitur paket

Selain kuota numerik, paket juga memiliki feature flag di kolom features:

FlagArti
ai_agentAkses ke fitur AI agent
api_accessAkses ke API publik OmniStream
dedicated_supportDukungan teknis dedicated (opsional)

Pemakaian Bulan Ini

Kartu Current Usage di bawah kartu paket menampilkan pemakaian dari GET /api/billing/usage:

MetrikSumber data
Agentsagents_used / agents_limit
Contactscontacts_used / contacts_limit
Messages (this month)messages_used / messages_limit

Progress bar berubah warna sesuai persentase:

  • Biru — di bawah 70%
  • Kuning — 70–89%
  • Merah — 90% ke atas

Jika limit adalah 0 (unlimited), bar tetap ditampilkan kosong.

Data usage diambil dari tabel tenant_usage di control plane dan diperbarui secara berkala. Jika pemakaian baru saja meningkat signifikan, muat ulang halaman untuk mendapatkan data terkini.


Saldo AI (/billing/ai-balance)

Saldo AI adalah sistem prepaid dalam IDR, terpisah dari biaya langganan. Saldo ini digunakan untuk mengoperasikan fitur AI agent. Tersedia hanya jika paket memiliki feature flag ai_agent: true.

Melihat saldo

Klik Saldo AI di header halaman Billing atau navigasi langsung ke /billing/ai-balance. Halaman menampilkan:

  • Saldo saat ini (Rp) dengan progress bar
  • Badge status: Aktif (hijau) / Saldo Rendah (kuning) / Habis (merah)
  • Threshold peringatan — batas minimum sebelum status menjadi "Saldo Rendah"

Top-up saldo

  1. Pilih nominal dari preset: Rp 50.000 / 100.000 / 200.000 / 500.000, atau masukkan nominal kustom (minimum Rp 10.000).
  2. Klik Top Up. Sistem membuat invoice Xendit dan langsung mengarahkan browser ke halaman pembayaran Xendit.
  3. Setelah pembayaran dikonfirmasi oleh webhook Xendit, saldo otomatis bertambah dan transaksi tercatat.

Riwayat transaksi

Tabel di bawah menampilkan 20 transaksi terakhir (dapat dipaginasi). Setiap baris menampilkan:

KolomArti
Deskripsi / Tipetopup, deduction, refund, adjustment
TanggalWaktu transaksi (WIB)
JumlahPositif (hijau) = penambahan saldo; negatif (merah) = pemakaian
Saldo setelahSaldo setelah transaksi ini

Catatan teknis: Harga per token AI dihitung dalam USD berdasarkan input_cost_usd_per_1m dan output_cost_usd_per_1m di tabel ai_pricing_config, kemudian dikonversi ke IDR menggunakan exchange_rate dan markup persen yang dikonfigurasi oleh super-admin. Konfigurasi ini tidak dapat diubah dari antarmuka tenant.


Invoice (/billing/invoices)

Klik Invoices di header halaman Billing untuk membuka daftar invoice.

Tabel menampilkan semua invoice dari GET /api/billing/invoices:

KolomArti
Invoice #Nomor invoice (format INV-YYYY-MM-NNNN)
DateTanggal invoice dibuat
AmountTotal tagihan (termasuk PPN 11% untuk IDR)
Statuspaid / open / overdue / void
PDFTautan unduh PDF (jika tersedia)

Status invoice

StatusArti
paidSudah dibayar
openMenunggu pembayaran
overdueMelewati jatuh tempo
voidDibatalkan/tidak berlaku

Penagihan otomatis (dunning)

Billing scheduler berjalan setiap 60 detik dan menangani:

  1. Invoice bulanan — dibuat otomatis setiap tanggal 1 untuk semua langganan active
  2. Retry pembayaran gagal — invoice open yang jatuh tempo dicoba ulang hingga 3 kali dengan interval eskalasi (1 hari, 3 hari, 7 hari)
  3. Setelah 3 kali retry habis, status langganan berubah menjadi past_due
  4. Suspensi otomatis — langganan past_due selama lebih dari 7 hari akan disuspend

Admin menerima email notifikasi pada setiap event: peringatan trial 3 hari sebelum habis, trial expired, invoice gagal bayar, dan invoice bulanan (dengan PDF terlampir).


Metode Pembayaran (/billing/payment)

Klik Payment Methods di header halaman Billing untuk mengelola metode pembayaran.

Menambah metode pembayaran

Klik Add Method, lalu pilih tipe:

Virtual Account (via Xendit):

  • Pilih bank: BCA, BNI, Mandiri, BRI, atau Permata
  • Nomor VA aktual dibuat oleh Xendit saat invoice diproses

Kartu Kredit:

  • Stripe — untuk kartu internasional. Nomor kartu ditokenisasi langsung oleh Stripe Elements di browser; OmniStream tidak menyimpan nomor kartu
  • Xendit — untuk kartu lokal Indonesia. Tokenisasi melalui Xendit.js

Jika tombol Stripe atau Xendit menampilkan pesan "Not configured", berarti publishable key belum diset di environment variable frontend (PUBLIC_STRIPE_PUBLISHABLE_KEY atau PUBLIC_XENDIT_PUBLISHABLE_KEY). Hubungi administrator infrastruktur.

Menghapus metode pembayaran

Klik ikon tempat sampah di baris metode pembayaran, lalu konfirmasi. Penghapusan bersifat permanen.


Endpoint API (tag Billing)

Semua endpoint tersedia di /api/billing/*.

AksiEndpoint
Paket aktifGET /api/billing/plan
Daftar paket tersediaGET /api/billing/plans
Berlangganan baruPOST /api/billing/subscribe
Upgrade/ganti paketPOST /api/billing/upgrade
Batalkan langgananPOST /api/billing/cancel
Pemakaian bulan iniGET /api/billing/usage
Daftar invoiceGET /api/billing/invoices
Unduh PDF invoiceGET /api/billing/invoices/{id}/pdf
Daftar metode pembayaranGET /api/billing/payment-methods
Tambah metode pembayaranPOST /api/billing/payment-methods
Hapus metode pembayaranDELETE /api/billing/payment-methods/{id}
Saldo AIGET /api/billing/ai-balance
Riwayat transaksi AIGET /api/billing/ai-balance/transactions
Top-up saldo AIPOST /api/billing/ai-balance/topup

Skema lengkap tersedia di API Reference — Billing.


Rute terkait

  • AI Agent — konfigurasi agent AI yang mengkonsumsi saldo AI
  • Manajemen Pengguna — menambah agent (dipengaruhi kuota max_agents)
  • Integrasi — menambah kanal (dipengaruhi kuota max_channels)
  • Activity Logs — audit perubahan konfigurasi tenant
Last modified on August 4, 2026
Tampilan & LaporanKustomisasi Data & Konten
On this page
  • Ringkasan
  • Paket & Langganan
    • Melihat paket aktif
    • Upgrade atau ganti paket
    • Membatalkan langganan
  • Kuota & Batas Penggunaan
    • Penegakan kuota (enforcement)
    • Fitur paket
  • Pemakaian Bulan Ini
  • Saldo AI (/billing/ai-balance)
    • Melihat saldo
    • Top-up saldo
    • Riwayat transaksi
  • Invoice (/billing/invoices)
    • Status invoice
    • Penagihan otomatis (dunning)
  • Metode Pembayaran (/billing/payment)
    • Menambah metode pembayaran
    • Menghapus metode pembayaran
  • Endpoint API (tag Billing)
  • Rute terkait