Langsung ke konten utama

Event Webhook Penagihan Berbasis Kredit

Peristiwa webhook berikut tersedia untuk melacak perubahan siklus hidup penagihan berbasis kredit. Peristiwa ini berlaku untuk hak kredit virtual (panggilan API, token, jam komputasi), bukan untuk Customer Wallets (saldo moneter).
EventDescription
credit.addedKredit diberikan kepada pelanggan (melalui langganan, pembelian satu kali, tambahan, atau API)
credit.deductedKredit digunakan melalui pemakaian atau debit manual
credit.expiredKredit yang tidak digunakan kedaluwarsa setelah periode kedaluwarsa yang dikonfigurasi
credit.rolled_overKredit yang tidak digunakan dibawa ke pemberian baru pada akhir siklus
credit.rollover_forfeitedKredit hangus karena jumlah rollover maksimum tercapai
credit.overage_chargedBiaya kelebihan diterapkan ketika pemakaian berlanjut melebihi saldo nol
credit.manual_adjustmentPenyesuaian kredit atau debit manual dilakukan melalui dasbor atau API
credit.balance_lowSaldo kredit turun di bawah ambang batas saldo rendah yang dikonfigurasi

Peristiwa Buku Besar

Semua peristiwa buku besar (credit.added hingga credit.manual_adjustment) memiliki payload CreditLedgerEntryResponse yang sama, seperti yang didokumentasikan dalam skema berikut. Payload mencakup field metadata yang diambil dari sumber pemberian kredit — langganan atau pembayaran yang dibuat saat checkout. Ini memungkinkan Anda mengaitkan kredit dompet dengan checkout Anda sendiri metadata (misalnya, sebuah orgId) daripada yang dikeluarkan oleh Dodo customer_id: pemberian yang bersumber dari langganan menampilkan metadata langganan dan pemberian yang bersumber dari pembayaran menampilkan metadata pembayaran. Field ini kosong ketika pemberian tidak memiliki sumber yang dapat diselesaikan (misalnya, kredit yang diberikan langsung melalui API).

Acara Saldo Rendah (credit.balance_low)

Acara credit.balance_low menggunakan payload berbeda (CreditBalanceLowPayload) yang fokus pada peringatan ambang batas:
{
  "business_id": "bus_H4ekzPSlcg",
  "type": "credit.balance_low",
  "timestamp": "2025-08-04T06:15:00.000000Z",
  "data": {
    "payload_type": "CreditBalanceLow",
    "customer_id": "cus_8VbC6JDZzPEqfBPUdpj0K",
    "subscription_id": "sub_7EeHq2ewQuadropD2ra",
    "credit_entitlement_id": "cent_9xY2bKwQn5MjRpL8d",
    "credit_entitlement_name": "API Credits",
    "available_balance": "15",
    "subscription_credits_amount": "100",
    "threshold_percent": 20,
    "threshold_amount": "20"
  }
}
customer_id
string
Pelanggan yang saldo kreditnya memicu peringatan.
subscription_id
string
Langganan yang terkait dengan hak kredit ini.
credit_entitlement_id
string
Hak kredit yang memiliki saldo rendah.
credit_entitlement_name
string
Nama tampilan dari hak kredit.
available_balance
string
Saldo kredit saat ini pada saat peringatan.
subscription_credits_amount
string
Total kredit yang diterbitkan per siklus penagihan untuk langganan ini.
threshold_percent
integer
Persentase ambang batas saldo rendah yang sudah dikonfigurasi.
threshold_amount
string
Jumlah kredit absolut yang sesuai dengan ambang tersebut.

Menggunakan credit.balance_low untuk Peringatan Proaktif

Gunakan webhook credit.balance_low untuk memberi tahu pelanggan sebelum mereka kehabisan kredit:
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;
  
  if (event.type === 'credit.balance_low') {
    const data = event.data;
    
    // Notify the customer their credits are running low
    await sendEmail(data.customer_id, {
      subject: `Your ${data.credit_entitlement_name} balance is running low`,
      body: `You have ${data.available_balance} credits remaining ` +
            `(${data.threshold_percent}% threshold reached). ` +
            `Consider upgrading your plan or purchasing additional credits.`
    });
    
    console.log(`Low balance alert for customer ${data.customer_id}`);
  }
  
  res.json({ received: true });
});
Berlangganan ke credit.balance_low untuk memberi peringatan proaktif kepada pelanggan sebelum mereka kehabisan kredit. Gabungkan dengan credit.deducted untuk melacak pola konsumsi secara real-time.

Get Customer Balance

Periksa saldo saat ini dari pelanggan melalui API.

Create Ledger Entry

Kreditkan atau debit saldo pelanggan secara manual.

Skema Payload Webhook

Response for a ledger entry

amount
string
wajib
balance_after
string
wajib
balance_before
string
wajib
brand_id
string
wajib

Brand id this credit ledger entry belongs to

business_id
string
wajib
created_at
string<date-time>
wajib
credit_entitlement_id
string
wajib
customer_id
string
wajib
id
string
wajib
is_credit
boolean
wajib
metadata
object
wajib

Metadata associated with the credit grant's source (the subscription or payment created at checkout). Empty when the grant has no resolvable source (e.g. credits granted directly via the API).

overage_after
string
wajib
overage_before
string
wajib
transaction_type
enum<string>
wajib
Opsi yang tersedia:
credit_added,
credit_deducted,
credit_expired,
credit_rolled_over,
rollover_forfeited,
overage_charged,
overage_reset,
auto_top_up,
manual_adjustment,
refund
description
string | null
grant_id
string | null
reference_id
string | null
reference_type
string | null
Terakhir diubah pada 26 Juni 2026