Kunden-Wallets & Bonus-Guthaben
Jeder Kunde hat ein einziges Wallet-Guthaben (wallet_balance), das Fahrten finanziert. Dieser Leitfaden erklaert, wie das Wallet funktioniert, wie Betreiber es anpassen koennen, wie die automatische Aufladung konfiguriert wird und wie Rueckerstattungen mit dem Wallet interagieren.
Das Wallet-Guthaben
Jeder Kunde hat genau einen effektiven Saldo: das Wallet-Guthaben. Alle manuellen Anpassungen (Gutschriften, Boni, Gebuehren, Abbuchungen) und automatisierten Ablaeufe (Fahrtkosten, Rueckerstattungen, automatische Aufladungen) erhoehen oder verringern diesen einen Saldo.
In der Kundenliste und auf der Kunden-Detailseite sehen Sie ausserdem eine Bonus-Spalte. Dies ist ein veraltetes, rein anzeigendes Feld, das durch Kundenimporte befuellt wird — es wird bei der Fahrtzahlung nicht separat verbraucht und nicht durch die "Bonus hinzufuegen"-Aktion im Dashboard veraendert. Behandeln Sie es als historischen Kontext, nicht als aktiven Saldo.
Wie Zahlungen auf eine Fahrt angewendet werden
Aktives Abonnement oder Paket wird angewendet
Wenn der Kunde ein aktives Abonnement oder Fahrtenpaket hat, wird die Fahrt ueber den Tarif finanziert — das Wallet wird nicht belastet.
Wallet wird belastet
Fuer Pay-per-Ride-Kunden wird das Wallet mit den gesamten Fahrtkosten belastet (inklusive Steuer und etwaiger Out-of-Zone-Gebuehren).
Karte deckt den Fehlbetrag
Reicht das Wallet nicht aus, wird der Rest von der Standard-Zahlungsmethode des Kunden abgebucht. An dieser Stelle kann auch die automatische Aufladung ausgeloest werden (siehe unten).
Mindestguthaben zum Starten einer Fahrt
Kunden muessen mindestens 0,50 $ im Wallet haben, um eine Fahrt zu starten — es sei denn, sie erfuellen die Ausnahmebedingungen.
Ausnahme fuer die Guthabenpruefung (Fahrt mit 0 $ Guthaben starten): Der Kunde muss beide Bedingungen erfuellen
- ein aktives Abonnement oder ein aktives Fahrtenpaket mit verbleibenden Fahrten/Minuten, und
- eine gespeicherte Zahlungsmethode.
Negatives Guthaben
Das Wallet darf negativ werden. Das passiert, wenn:
- eine Gebuehr (Charge Fee) berechnet wird, die das aktuelle Guthaben uebersteigt.
- die Fahrtkosten das Guthaben uebersteigen und die Kartenzahlung fehlschlaegt.
- der Betreiber Guthaben reduzieren (Reduce Balance) mit einem Betrag groesser als das aktuelle Guthaben verwendet.
Wenn eine Gebuehr dazu fuehrt, dass das Guthaben von positiv auf negativ wechselt, erhaelt der Kunde automatisch eine Push-Benachrichtigung ueber das negative Guthaben.
Zugriff auf Wallet-Informationen
Kundenliste
Die Liste zeigt fuer jeden Kunden das Wallet-Guthaben und (falls vorhanden) den veralteten Bonus-Betrag in getrennten Spalten.
Kunden-Detailseite
Navigieren Sie zu Dashboard > Kunden > [Kunde], um Folgendes zu sehen:
- Aktuelles Wallet-Guthaben und Bonus-Betrag
- Ein Wallet-Dropdown in der Aktionsleiste mit: Bonus hinzufuegen, Gebuehr berechnen, Guthaben reduzieren
- Einen Link Wallet-Aktivitaet anzeigen zur vollstaendigen Transaktionshistorie
Wallet-Aktivitaetsseite
Die Aktivitaetsseite listet jede Zeile aus wallet_transactions fuer den Kunden auf, einschliesslich:
- Datum und Beschreibung
- Reference-Typ (ride, topup, manual_bonus, manual_charge, manual_reduce_balance, stripe_charge, usw.)
- Betrag (Gutschriften gruen, Abbuchungen rot)
- Laufender
balance_after
Wallet-Guthaben hinzufuegen
Das Dashboard bietet drei Aktionen im Wallet-Dropdown des Kunden. Alle drei schreiben in das einzelne wallet_balance und erzeugen eine wallet_transactions-Zeile.
Bonus hinzufuegen
Werbe- oder Kulanz-Gutschrift. Erhoeht das Wallet-Guthaben.
- Transaktion:
type: 'credit',reference_type: 'manual_bonus' - Benachrichtigung: keine
- API:
POST /api/customers/bonus
{
"customer_uuid": "customer-uuid",
"amount_usd": 5.00
}
Zulaessige Identifikations-Felder (mindestens eins angeben): customer_uuid, customer_number, auth_uid, email oder customer_identifier.
Typische Gruende fuer Gutschriften
| Grund | Typischer Betrag |
|---|---|
| Ausgleich fuer Service-Probleme | 5–20 $ |
| Technische Problem-Rueckerstattung | Variabel — bevorzugen Sie eine Fahrt-Rueckerstattung (siehe unten) |
| Kulanz / Kundenbindung | 5–10 $ |
| Werbeaktion | Variabel |
Gebuehren berechnen & Guthaben reduzieren
Gebuehr berechnen (Charge Fee)
Fuer Schaeden, verlorene Ausruestung, Parkverstoesse und aehnliche Strafen.
- Transaktion:
type: 'debit',reference_type: 'manual_charge' - Kann negativ werden: ja
- Benachrichtigung: Push-Benachrichtigung, wenn das Guthaben von positiv auf negativ wechselt
- Berechtigung: erfordert
customer:charge— Analysten und Service-Techniker sind gesperrt - API:
POST /api/customers/charge
{
"customer_uuid": "customer-uuid",
"amount_usd": 25.00
}
Guthaben reduzieren (Reduce Balance)
Fuer stille Korrekturen und Anpassungen, die den Kunden nicht benachrichtigen sollen.
- Transaktion:
type: 'debit',reference_type: 'manual_reduce_balance' - Kann negativ werden: ja (gleiches Verhalten wie Charge Fee)
- Benachrichtigung: nie
- Berechtigung: erfordert
customer:charge - API:
POST /api/customers/reduce-balance
{
"customer_uuid": "customer-uuid",
"amount_usd": 10.00
}
Charge Fee vs. Reduce Balance
| Eigenschaft | Charge Fee | Reduce Balance |
|---|---|---|
| Kann negativ werden | Ja | Ja |
| Sendet Benachrichtigung | Wenn von positiv zu negativ gewechselt wird | Nie |
| Typische Verwendung | Strafen, Schaeden | Korrekturen, Anpassungen |
| Transaktion reference_type | manual_charge | manual_reduce_balance |
Rueckerstattungen: Immer gegen die Fahrt
Wallet niemals direkt fuer ein Fahrtproblem gutschreiben
Eine Rueckerstattung wird immer gegen den Fahrt-Datensatz verbucht. Die Gutschrift auf das Wallet ist eine nachgelagerte Folge der Fahrt-Anpassung — niemals der Ausgangspunkt. Eine direkte Gutschrift auf das Wallet verfaelscht net_deposited, Partner-Auszahlungen und Steuerabfuehrung.
Verwenden Sie je nach Situation einen dieser beiden Endpoints:
Tarifanpassung — wenn der Kunde zu viel berechnet wurde (z. B. fuer Zeit abgerechnet, die er nicht genutzt hat):
POST /api/rides/[id]/adjust-fare
{
"newTotalCost": 8.50,
"reason": "Anpassung an tatsaechliche Fahrtdauer"
}
Dies berechnet die Steuer neu, passt die Fahrt an, schreibt dem Wallet bei Ueberzahlung gut und aktualisiert net_deposited.
Rueckerstattung — wenn der Tarif korrekt ist, der Kunde aber Geld zurueckbekommen soll:
POST /api/rides/[id]/refunds
{
"destination": "wallet",
"mode": "full",
"reason": "Kompensation fuer Fahrer"
}
destination kann wallet oder card sein. mode kann full oder partial (mit amount) sein. Die API erstattet gegen das, was tatsaechlich gezahlt wurde (Karte oder Wallet), erfasst es in ride_refunds und aktualisiert net_deposited.
Fuer Kulanz-Gutschriften, die nicht an eine bestimmte Fahrt gebunden sind, verwenden Sie Bonus hinzufuegen auf der Kunden-Detailseite.
Massen-Wallet-Verarbeitung
Die Aktion Bulk Wallet Processing in der Kundenliste ist kein Tool zum Hochladen von Gutschriften. Es ist ein Inkasso-Tool, das gespeicherte Zahlungsmethoden fuer Kunden mit negativem Wallet-Guthaben belastet.
- Waehlen Sie Kunden manuell aus oder verwenden Sie Alle auswaehlen, um alle aktuell gefilterten Kunden mit negativem Guthaben und hinterlegtem Stripe-Kunden zu erfassen.
- Klicken Sie auf Process — das System versucht, die gespeicherte Zahlungsmethode jedes Kunden um den Betrag zu belasten, der noetig ist, um das Guthaben auf null zu bringen.
- Die Ergebnisse zeigen fuer jeden Kunden
scheduled,skipped,already_existsodererror.
Es gibt derzeit keinen CSV-Upload-Flow zum Massen-Gutschreiben — fuegen Sie Gutschriften einzeln ueber das Dashboard hinzu oder scripten Sie den Endpoint /api/customers/bonus.
Wallet-Transaktionen
Jede Aenderung an wallet_balance erzeugt eine wallet_transactions-Zeile. Transaktionen haben einen type (credit oder debit) und einen reference_type, der die Quelle kategorisiert.
Gaengige reference_type-Werte
| reference_type | Richtung | Quelle |
|---|---|---|
manual_bonus | credit | Dashboard "Bonus hinzufuegen" |
manual_charge | debit | Dashboard "Gebuehr berechnen" |
manual_reduce_balance | debit | Dashboard "Guthaben reduzieren" |
topup | credit | Eigene Aufladung oder automatische Aufladung |
stripe_charge | credit (angezeigt) | Kartenbelastung fuer Fahrt-Ueberhang |
ride | debit | Wallet-Anteil einer Fahrtzahlung |
ride_refund | credit | Fahrt-Rueckerstattung auf das Wallet |
Die Wallet-Aktivitaets-UI gruppiert und beschriftet diese fuer Betreiber — die obigen Rohwerte sehen Sie in der Datenbank und in API-Antworten.
Automatische Aufladung (Auto Top-up)
Die automatische Aufladung ergaenzt das Wallet eines Kunden automatisch, wenn es unter einen Schwellenwert faellt, und belastet dabei die Standard-Zahlungsmethode.
Funktionsweise
- Das Wallet-Guthaben des Kunden faellt unter den Schwellenwert (typischerweise bei einer Pruefung beim Fahrtstart oder bei der Zahlung).
- Das System belastet die Standard-Zahlungsmethode mit dem konfigurierten Aufladebetrag.
- Dem Wallet wird gutgeschrieben.
- Der Kunde erhaelt eine Push-Benachrichtigung zur Bestaetigung der Aufladung.
Konfiguration (beides muss zutreffen)
- Kundeneinstellung:
auto_topup_enabledim Kundendatensatz — Kunden opten waehrend der Registrierung ein (wir praesentieren Auto-Aufladen als Moeglichkeit, das Fahrzeug mitten in der Fahrt nicht deaktiviert zu bekommen; nahezu alle Kunden aktivieren es). - Unterkonto-Einstellung:
auto_topup_enabledam Unterkonto, mitauto_topup_amount_centsundauto_topup_threshold_cents.
Standardwerte
| Einstellung | Standard |
|---|---|
| Aufladebetrag | 15,00 $ (1500 Cent) |
| Schwellenwert | 5,00 $ (500 Cent) |
Beispiel: Faellt das Guthaben unter 5,00 $, belastet das System 15,00 $ und schreibt diese dem Wallet gut.
Sicherheit
- Datenbank-Locks verhindern, dass gleichzeitige Auto-Aufladeversuche doppelt belasten.
- Stripe-Idempotenz-Keys verhindern doppelte Belastungen bei Netzwerk-Retries.
- Der Schwellenwert wird nach dem Lock erneut geprueft.
- Konten mit
@levyelectric.comlaufen gegen den Stripe-Testmodus.
Fehlersuche bei der automatischen Aufladung
- Pruefen Sie, dass beim Kunden
auto_topup_enabledgesetzt ist. - Pruefen Sie, dass das Unterkonto
auto_topup_enabledsowie sinnvolle Amount/Threshold-Werte hat. - Bestaetigen Sie, dass der Kunde eine gueltige Standard-Zahlungsmethode hat.
- Pruefen Sie Stripe auf Ablehnungen.
- Suchen Sie in
wallet_transactionsnach aktuellentopup-Eintraegen.
Berichte
Zusammenfassungs-Metriken
Die Kopfzeile der Kundenliste zeigt den Gesamtwert aller Wallets und Boni ueber die aktuell gefilterte Ansicht.
Audits von Guthaben-Aenderungen
- Oeffnen Sie die Seite Wallet-Aktivitaet eines Kunden, um jede Transaktion mit Zeitstempel und
balance_afterzu sehen. - Gleichen Sie
ride-Debits mit dem Fahrt-Datensatz ab — dernet_deposited-Wert der Fahrt sollte mit Wallet-Debit + Kartenbelastung minus etwaiger Rueckerstattungen uebereinstimmen. - Fuer manuelle Anpassungen wird die
user.iddes Betreibers alsreference_idinmanual_bonus- /manual_charge-Transaktionen gespeichert; das Dashboard loest dies zu einem Mitarbeiternamen auf.
Best Practices
Fuer Betreiber
- Dokumentieren Sie jede manuelle Anpassung — die Betreiber-Identitaet wird gespeichert, aber ein Grund in der Beschreibung hilft bei spaeteren Audits.
- Verwenden Sie den Fahrt-Rueckerstattungs-Flow fuer Fahrtprobleme — kompensieren Sie Fahrtprobleme niemals mit einer direkten Gutschrift, sonst stimmen Partner-Auszahlungen und Steuerberechnung nicht mehr.
- Reservieren Sie Bonus hinzufuegen fuer Promotions und Kulanz, die nicht an eine bestimmte Fahrt gebunden sind.
- Rechte einschraenken — nur Admin-Rollen und hoeher sollten
customer:chargehaben.
Fuer den Kundenservice
- Pruefen Sie das aktuelle Guthaben und die letzten Wallet-Aktivitaeten, bevor Sie Gutschriften hinzufuegen oder entfernen.
- Bei einer Anpassung wegen eines Fahrtproblems oeffnen Sie die Fahrt und verwenden Sie Tarifanpassung oder Rueckerstattung anstelle des Wallet-Dropdowns.
- Kommunizieren Sie dem Kunden: Gutschriften werden bei der naechsten Fahrt automatisch angewendet.
Fehlersuche
Gutschrift erscheint nicht in der Kunden-App
- Bestaetigen Sie, dass die Transaktion in der Wallet-Aktivitaet des Kunden steht.
- Bitten Sie den Kunden, die App zu beenden und neu zu oeffnen.
- Pruefen Sie, dass Sie den richtigen Kunden angepasst haben (customer_number / E-Mail pruefen).
Wallet-Guthaben sieht falsch aus
- Pruefen Sie die letzten Transaktionen auf unerwartete Abbuchungen oder doppelte Gutschriften.
- Pruefen Sie die Fahrthistorie auf automatische Abbuchungen (
reference_type: 'ride'). - Stimmt das Guthaben nicht mit der Summe der Transaktionen ueberein, ist moeglicherweise
customers.wallet_balancenicht mitwallet_transactionssynchron — eskalieren Sie das.
Kunde sagt, seine Fahrt-Rueckerstattung sei nicht angekommen
- Oeffnen Sie die Fahrt-Detailseite und pruefen Sie den Bereich Rueckerstattungen.
- Bestaetigen Sie, dass die Rueckerstattung ueber
/api/rides/[id]/refundsoder/api/rides/[id]/adjust-fareverarbeitet wurde (keine direkte Gutschrift). - Gleichen Sie die Wallet-Aktivitaet des Kunden mit einem passenden
ride_refund-Eintrag ab.
Brauchen Sie Hilfe?
Bei Fragen zur Wallet-Verwaltung kontaktieren Sie support@levyelectric.com.