Zum Hauptinhalt springen

Was sind Kunden-Wallets?

Kunden-Wallets sind Konten für Geldguthaben, die echte Gelder für Ihre Nutzer enthalten. Jeder Kunde erhält automatisch ein solches Wallet, wenn Sie dessen Konto erstellen. Sie können diese Wallets verwenden, um:
  • Speichern Sie vorausbezahlte Gelder für zukünftige Abonnementzahlungen
  • Behandeln Sie Rückerstattungen als Wallet-Guthaben statt als Kartenrückerstattung
  • Stellen Sie Werbeguthaben aus, z. B. Willkommensboni oder Treueprämien
  • Wenden Sie Wallet-Guthaben auf Rechnungen an und zwar automatisch während der Abrechnung
  • Verfolgen Sie Geldtransaktionen mithilfe eines detaillierten Hauptbuchverlaufs
Jeder Kunde erhält automatisch ein Wallet, wenn Sie dessen Konto anlegen. Wallets unterstützen USD- und INR-Währungen mit separaten Geldguthaben für jede.
Kunden-Wallets ≠ Credit-Based BillingKunden-Wallets enthalten echte Geldguthaben (USD, INR), die auf Rechnungen und Abonnementzahlungen angewendet werden können.Wenn Sie virtuelle Nutzungseinheiten (API-Aufrufe, Tokens, Rechenstunden) verfolgen möchten, sehen Sie stattdessen Credit-Based Billing.
Customer Wallets

Funktionsweise

Kunden-Wallets enthalten Gelder, die Kunden auf ihre Einkäufe anwenden können. Wenn ein Kunde eine Rechnung oder eine wiederkehrende Abonnementgebühr hat, wird zuerst sein Wallet-Guthaben überprüft. Verfügbare Beträge werden automatisch auf die Rechnung angewendet, bevor seine primäre Zahlungsmethode belastet wird.

Automatische Einrichtung

Wenn Sie einen neuen Kunden erstellen, legt Dodo Payments automatisch ein Wallet mit einem Guthaben von null an. Es ist sofort bereit, über unsere API Gelder zu empfangen.

Unterstützung mehrerer Währungen

Jedes Wallet kann Guthaben in verschiedenen Währungen halten:
USD Balance
integer
Guthaben in US-Dollar (in Cent gespeichert)
INR Balance
integer
Guthaben in Indischen Rupien (in Paise gespeichert)
Derzeit sind nur USD- und INR-Guthaben verfügbar. Weitere Währungen folgen bald.

Arbeiten mit Wallets

Kundenguthaben prüfen

Sehen Sie, wie viel Guthaben ein Kunde über alle Währungen hinweg hat. Das ist nützlich, um das verfügbare Guthaben vor der Durchführung eines Kaufs zu überprüfen oder den Betrag in Ihrer Benutzeroberfläche anzuzeigen.

Get Customer Wallet Balances

Prüfen Sie die Geldguthaben eines Kunden-Wallets in allen unterstützten Währungen.

Gelder hinzufügen oder abziehen

Laden Sie Kunden-Wallets auf (z. B. mit Willkommensboni oder Rückerstattungsguthaben) oder ziehen Sie Gelder ab (z. B. für Abonnementgebühren). Sie können für jede Transaktion einen Grund angeben, um eine klare Prüfspur zu behalten.
The entry_type field uses 'credit' to add funds to the wallet and 'debit' to subtract funds from the wallet.

Create Customer Wallet Ledger Entry

Fügen Sie einem Kunden-Wallet Gelder hinzu oder ziehen Sie sie ab.

Transaktionsverlauf anzeigen

Sehen Sie jede Gutschrift- und Belastungstransaktion eines Kunden. Dieses detaillierte Hauptbuch hilft Ihnen, Konten abzugleichen, und sorgt für Transparenz gegenüber Ihren Kunden.

List Customer Wallet Ledger Entries

Zeigen Sie jede Geldtransaktion eines Kunden an.

Praxisbeispiele

Rückerstattung ins Wallet

Wenn ein Kunde eine Rückerstattung anfordert, können Sie den Betrag seinem Wallet-Guthaben gutschreiben, statt eine traditionelle Kartenrückerstattung durchzuführen. So bleiben die Gelder für zukünftige Käufe in Ihrem Ökosystem.
async function refundToWallet(customerId, refundAmount, originalPaymentId) {
  await client.customers.wallets.ledgerEntries.create(customerId, {
    amount: refundAmount, // Amount in cents
    currency: 'USD',
    entry_type: 'credit',
    reason: `Refund for payment ${originalPaymentId}`,
    idempotency_key: `refund_${originalPaymentId}`
  });
}

Willkommensbonus / Werbeguthaben

Geben Sie neuen Kunden einen monetären Willkommensbonus, um ihren ersten Kauf zu fördern.
async function addWelcomeBonus(customerId) {
  await client.customers.wallets.ledgerEntries.create(customerId, {
    amount: 1000, // $10.00 promotional balance
    currency: 'USD',
    entry_type: 'credit',
    reason: 'Welcome bonus - $10 promotional balance',
    idempotency_key: `welcome_${customerId}`
  });
}

Abonnementzahlung über das Wallet

Ziehen Sie Gelder aus einem Wallet, um eine Abonnementgebühr oder einen manuellen Kauf zu decken.
async function deductForPurchase(customerId, purchaseAmount, purchaseId) {
  try {
    await client.customers.wallets.ledgerEntries.create(customerId, {
      amount: purchaseAmount,
      currency: 'USD',
      entry_type: 'debit',
      reason: `Subscription charge - monthly billing`,
      idempotency_key: `charge_${purchaseId}`
    });
  } catch (error) {
    if (error.status === 400) {
      console.log('Insufficient wallet balance');
    }
  }
}

Prepaid-Abrechnungssystem

Ermöglichen Sie Kunden, ihre Konten im Voraus aufzuladen und dieses Guthaben im Laufe der Zeit zu nutzen.
1

Add Initial Funds

Fügen Sie dem Wallet des Kunden Gelder hinzu, wenn er eine Einzahlung vornimmt.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 5000, // $50.00 deposit
  currency: 'USD',
  entry_type: 'credit',
  reason: 'Account funding - prepaid deposit',
  idempotency_key: `deposit_${paymentId}`
});
2

Apply Balance to Purchases

Ziehen Sie vom Guthaben ab, während der Kunde Ihre Dienste nutzt oder Abonnements verlängert.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 1500, // $15.00 charge
  currency: 'USD', 
  entry_type: 'debit',
  reason: 'Service purchase - monthly subscription',
  idempotency_key: `purchase_${purchaseId}`
});
3

Monitor Balances

Prüfen Sie, ob Kunden knapp bei Kasse sind, um eine Aufladung anzufordern.
const wallets = await client.customers.wallets.list(customerId);
const usdWallet = wallets.items.find(w => w.currency === 'USD');
const balance = usdWallet.balance;

if (balance < 1000) { // Less than $10.00
  // Send low balance notification
  await sendLowBalanceNotification(customerId, balance);
}

Unterstützung mehrerer Währungen

Verwalten Sie separate Geldguthaben für Kunden in verschiedenen Regionen.
Verwalten Sie USD-Gelder für Kunden mit Sitz in den USA.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 20000, // $200.00 in cents
  currency: 'USD',
  entry_type: 'credit',
  reason: 'USD account funding',
  idempotency_key: `usd_deposit_${paymentId}`
});
Verwalten Sie INR-Gelder für indische Kunden.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 1500000, // Rs 15,000 in paise
  currency: 'INR',
  entry_type: 'credit',
  reason: 'INR account funding',
  idempotency_key: `inr_deposit_${paymentId}`
});

Beste Praktiken

Vermeiden Sie doppelte Transaktionen

Verwenden Sie Idempotenzschlüssel, um sicherzustellen, dass Sie ein und dieselbe Transaktion nicht versehentlich doppelt verbuchen.
async function addFundsSafely(customerId, amount, reason) {
  const idempotencyKey = `${reason}_${customerId}_${Date.now()}`;
  
  try {
    const result = await client.customers.wallets.ledgerEntries.create(customerId, {
      amount: amount,
      currency: 'USD',
      entry_type: 'credit',
      reason: reason,
      idempotency_key: idempotencyKey
    });
    
    return { success: true, wallet: result };
  } catch (error) {
    if (error.status === 409) {
      // Transaction already processed
      return { success: true, wallet: null, duplicate: true };
    }
    
    throw error;
  }
}

Überprüfen Sie Guthaben vor der Belastung

Stellen Sie sicher, dass Kunden über ausreichendes Guthaben verfügen, bevor Sie versuchen, größere Transaktionen über das Wallet abzuwickeln.
async function checkBalanceBeforeOperation(customerId, requiredAmount) {
  const wallets = await client.customers.wallets.list(customerId);
  const usdWallet = wallets.items.find(w => w.currency === 'USD');
  
  if (!usdWallet || usdWallet.balance < requiredAmount) {
    throw new Error('Insufficient funds for this operation');
  }
  
  return usdWallet.balance;
}

Was als Nächstes kommt

Diese Funktionen sind für zukünftige Releases geplant:
  • Balance Expiration: Legen Sie fest, dass Guthaben nach einem bestimmten Zeitraum verfällt
  • Better Analytics: Detaillierte Ausgabenberichte und Guthabentrends
  • More Webhooks: Echtzeitbenachrichtigungen bei Guthabenänderungen und bei niedrigem Guthaben
Beginnen Sie mit grundlegenden Lade- und Abzugsoperationen und integrieren Sie dann komplexere automatisierte Abrechnungsabläufe, während Ihr Unternehmen wächst.