Zum Hauptinhalt springen

Was sind Kunden-Wallets?

Betrachten Sie Kunden-Wallets als digitale Sparschweine für Ihre Benutzer. Jeder Kunde erhält automatisch eines, wenn Sie sein Konto erstellen. Sie können diese Wallets verwenden, um:
  • Guthaben in USD und INR zu verfolgen
  • API-Guthabensysteme wie OpenAI oder Claude zu erstellen
  • Prepaid-Abrechnung zu ermöglichen, bei der Kunden Guthaben im Voraus kaufen
  • Rückerstattungen als Wallet-Guthaben anstelle von Bargeld zu bearbeiten
  • Komplexe Abrechnungen mit detaillierter Transaktionshistorie zu verwalten
Jeder Kunde erhält automatisch ein Wallet, wenn Sie sein Konto erstellen. Wallets unterstützen USD- und INR-Währungen mit separaten Salden für jede.
Kunden-Wallets

Wie es funktioniert

Kunden-Wallets sind einfach: Sie halten Geld (Guthaben), das Kunden für Ihre Dienste ausgeben können. Wenn ein Kunde einen Kauf tätigt, wird zuerst das Wallet-Guthaben überprüft, und alle verfügbaren Guthaben werden verwendet, bevor die Zahlungsmethode belastet wird.

Automatische Einrichtung

Wenn Sie einen neuen Kunden erstellen, erstellt Dodo Payments automatisch ein Wallet mit einem Guthaben von null. Es ist sofort über unsere API einsatzbereit.

Unterstützung für mehrere Währungen

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

Arbeiten mit Wallets

Kunden-Salden überprüfen

Sehen Sie, wie viel Guthaben ein Kunde in allen Währungen hat. Perfekt, um zu überprüfen, ob sie genügend Mittel haben, bevor Sie einen Kauf bearbeiten.

Kunden-Wallet-Salden abrufen

Überprüfen Sie die Wallet-Guthaben eines Kunden in allen unterstützten Währungen.

Guthaben hinzufügen oder entfernen

Geben Sie Kunden Guthaben (wie Willkommensboni) oder ziehen Sie Guthaben ab (wie Nutzungskosten) ab. Sie können für jede Transaktion Gründe angeben, um nachzuvollziehen, was passiert ist.

Buchungseintrag im Kunden-Wallet erstellen

Fügen Sie Guthaben zu einem Kunden-Wallet hinzu oder entfernen Sie es.

Transaktionshistorie anzeigen

Sehen Sie jede Kredit- und Debittransaktion für einen Kunden. Ideal zur Fehlersuche bei Abrechnungsproblemen oder um Kunden ihre Ausgabenhistorie zu zeigen.

Buchungseinträge im Kunden-Wallet auflisten

Sehen Sie jede Kredit- und Debittransaktion für einen Kunden.

Beispiele aus der Praxis

API-Guthabensystem (wie OpenAI)

Bauen Sie ein System, in dem Kunden Guthaben kaufen und diese für API-Aufrufe ausgeben:
// Give new customers welcome credits
async function giveWelcomeCredits(customerId) {
  await client.customers.wallets.ledgerEntries.create(customerId, {
    amount: 10000, // $100 in cents
    currency: 'USD',
    entry_type: 'credit',
    reason: 'Welcome bonus - 100 API credits',
    idempotency_key: `welcome_${customerId}_${Date.now()}`
  });
}

// Charge customers for API usage
async function chargeForApiUsage(customerId, usageCost) {
  try {
    await client.customers.wallets.ledgerEntries.create(customerId, {
      amount: usageCost, // Cost in cents
      currency: 'USD',
      entry_type: 'debit',
      reason: `API usage - ${usageCost} credits consumed`,
      idempotency_key: `usage_${customerId}_${Date.now()}`
    });
  } catch (error) {
    if (error.status === 400) {
      console.log('Customer needs to buy more credits');
    }
  }
}

Prepaid-Abrechnungssystem

Lassen Sie Kunden Guthaben im Voraus kaufen und diese im Laufe der Zeit ausgeben:
1

Neue Kunden willkommen heißen

Geben Sie neuen Kunden einige kostenlose Guthaben, um zu starten.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 5000, // $50 welcome bonus
  currency: 'USD',
  entry_type: 'credit',
  reason: 'Welcome bonus for new customer',
  idempotency_key: `welcome_${customerId}`
});
2

Guthaben-Käufe bearbeiten

Wenn Kunden Guthaben kaufen, fügen Sie sie ihrem Wallet hinzu.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: purchaseAmount, // Amount paid in cents
  currency: 'USD',
  entry_type: 'credit',
  reason: `Credit purchase - ${purchaseAmount} credits`,
  idempotency_key: `purchase_${paymentId}`
});
3

Für Nutzung berechnen

Ziehen Sie Guthaben ab, wenn Kunden Ihren Dienst nutzen.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: usageCost,
  currency: 'USD', 
  entry_type: 'debit',
  reason: `Service usage - ${usageCost} credits`,
  idempotency_key: `usage_${usageId}`
});
4

Salden überwachen

Überprüfen Sie, ob Kunden wenig Guthaben haben.
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
  // Send low balance notification
  await sendLowBalanceNotification(customerId, balance);
}

Unterstützung für mehrere Währungen

Bearbeiten Sie Kunden in verschiedenen Ländern:
Geben Sie USD-Guthaben an US-amerikanische Kunden.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 20000, // $200 in cents
  currency: 'USD',
  entry_type: 'credit',
  reason: 'USD credit purchase',
  idempotency_key: `usd_purchase_${paymentId}`
});
Geben Sie INR-Guthaben an indische Kunden.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 1500000, // ₹15,000 in paise
  currency: 'INR',
  entry_type: 'credit',
  reason: 'INR credit purchase',
  idempotency_key: `inr_purchase_${paymentId}`
});

Best Practices

Verhindern Sie doppelte Transaktionen

Verwenden Sie Idempotenzschlüssel, um sicherzustellen, dass Sie Kunden nicht versehentlich zweimal für dasselbe belasten:
async function addCreditsSafely(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 === 400 && error.message.includes('Insufficient balance')) {
      return { success: false, error: 'INSUFFICIENT_BALANCE' };
    }
    
    if (error.status === 409) {
      // Transaction already processed
      return { success: true, wallet: null, duplicate: true };
    }
    
    throw error;
  }
}

Salden vor der Belastung überprüfen

Überprüfen Sie immer, ob Kunden genügend Guthaben haben, bevor Sie teure Operationen durchführen:
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('Not enough credits for this operation');
  }
  
  return usdWallet.balance;
}

Was kommt als Nächstes

Diese Funktionen sind für zukünftige Versionen geplant:
  • Guthabenablauf: Legen Sie fest, dass Guthaben nach einer bestimmten Zeit ablaufen
  • Bessere Analysen: Detaillierte Ausgabenberichte und Nutzungseinblicke
  • Mehr Webhooks: Echtzeitbenachrichtigungen für Saldenänderungen und wenig Guthaben
Beginnen Sie einfach mit grundlegenden Kredit-/Debit-Operationen und fügen Sie dann komplexere Funktionen hinzu, während Ihr Unternehmen wächst.