Zum Hauptinhalt springen

Gebühren

Plattformgebühr

Die Plattformgebühr wird erst beim tatsächlichen Abschluss eines Trades fällig. Deshalb zählt für einen Gebührenverzicht nicht der Zeitpunkt des Angebots, Listings oder Trade-Starts, sondern Trade.finalizedAt.

Wenn ein Verkäufer zum Abschlusszeitpunkt einen aktiven TopTraderReward hat, schreibt das Backend auf dem Trade:

  • fee = 0
  • platformFeeOriginal mit der regulär berechneten Gebühr
  • platformFeeWaived = true
  • platformFeeWaiverRewardId mit dem verwendeten Reward

Die Verkäufer-Wallet-Gutschrift wird dann aus dem Verkaufspreis minus tatsächlicher fee berechnet. Bei einem erlassenen Reward entspricht die Gutschrift dem vollen Verkaufspreis.

Für die Anzeige liefert das Backend zusätzlich geschätzte Fee-Daten für offene Trades. Die endgültige Buchung bleibt aber der Abschlusszeitpunkt.

Stripe-Gebührenmatrix

Die Gebührenmatrix wird aus abgeschlossenen Wallet-Deposit-Transaktionen gelernt. Sie verwendet nur Deposits mit:

  • type = deposit
  • status = completed oder succeeded
  • grossAmount, stripeFeeAmount, netAmount, paymentMethodType und currency
  • gespeicherter stripeBalanceTransactionId

Der Hintergrundjob startet automatisch mit dem Backend. Er läuft sofort einmal beim Start und danach alle STRIPE_FEE_MATRIX_REFRESH_INTERVAL_MINUTES Minuten, standardmäßig alle 360 Minuten. Wenn der Wert 0 oder kleiner ist, wird der automatische Job deaktiviert.

Admins können die Matrix zusätzlich manuell aktualisieren:

POST /api/functions/admin/stripe-fee-rules/refresh

Die Admin-Debugansicht zeigt Deposit-Netto-Gutschriften, geschätzte Gebühren, tatsächliche Stripe-Gebühren, Gebührenabweichungen, Zahlungsmethode und verwendete Matrix-Regel.

Stripe-Konfiguration

  • STRIPE_PUBLISHABLE_KEY liegt in .env und wird als öffentliche Einstellung ans Frontend ausgeliefert.
  • secrets/stripe_secret_key enthält den Secret Key für serverseitige Stripe-API-Aufrufe.
  • secrets/stripe_webhook_secret enthält das Webhook-Signing-Secret.
  • STRIPE_CURRENCY steuert die Währung der Wallet-Zahlungen, standardmäßig eur.
  • STRIPE_CONNECT_COUNTRY steuert das Stripe-Connect-Land für Auszahlungen, standardmäßig DE.
  • Auszahlungen laufen über Stripe Connect Express.
  • Das Backend erstellt bei der ersten Auszahlung ein leeres verbundenes Express-Konto für den Nutzer und leitet ihn zum Stripe-Onboarding weiter.
  • Stripe übernimmt dort Bankdaten, Identität/KYC und die weitere Auszahlung auf das hinterlegte Bankkonto.
  • Das Stripe-Plattformkonto muss für Connect eingerichtet sein. Das gilt auch für Sandbox/Test-Keys.
  • STRIPE_PAYMENTS_ENABLED_BY_DEFAULT=false bedeutet, dass Stripe-Zahlungen pro Nutzer freigeschaltet werden müssen. Das User-Feld dafür ist stripePaymentsEnabled.