Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools
Übersicht
Mit Connect loslegen
Integrationsgrundlagen
Musterintegrationen
Onboarding von Konten
Konto-Dashboards konfigurieren
Zahlungen weltweit akzeptieren
    Zahlung erstellen
      Direct Charges
      Destination Charges
      Separate Gebühren und Überweisungen
    Zahlungsbeschreibungen in der Abrechnung festlegen
    MCCs einrichten
    Umgang mit mehreren Währungen
    Mit Connect Zahlungslinks erstellen
    Radar mit Connect verwenden
    Angefochtene Zahlungen bei Connect
    Abos erstellen
    Rechnungen erstellen
    Mehrere Konfigurationen der Zahlungsmethoden
    Komponente für die Zahlungsmethodeneinstellungen einbetten
    Kontostand
Verbundene Konten auszahlen
Ihre Connect-Plattform verwalten
Steuerformulare für Ihre Connect-Plattform
Mit verbundenen Kontotypen zusammenarbeiten
StartseitePlattformen und MarktplätzeAccept paymentsCreate a charge

Separate Zahlungen und Überweisungen erstellen

Erstellen Sie Zahlungen auf Ihrem Plattformkonto und übertragen Sie die Gelder auf mehrere verbundene Konten.

Seite kopieren

Erstellen Sie separate Zahlungen und Überweisungen , um Gelder aus einer Zahlung auf mehrere verbundene Konten zu überweisen oder wenn ein/e bestimmte/r Nutzer/in zum Zeitpunkt der Zahlung nicht bekannt ist. Die Zahlung auf Ihrem Plattformkonto wird von den Überweisungen auf Ihre verbundenen Konten entkoppelt. Mit diesem Zahlungstyp gilt:

  • Sie erstellen eine Zahlung auf dem Konto Ihrer Plattform und übertragen außerdem Gelder auf Ihre verbundenen Konten. Die Zahlung wird auf Ihrem Konto als Abbuchung ausgewiesen und es gibt auch Übertragungen auf verbundene Konten (Betrag wird von Ihnen bestimmt), die von Ihrem Kontoguthaben eingezogen werden.
  • Sie können Gelder auf mehrere verbundene Konten übertragen.
  • Ihr Kontoguthaben wird mit Stripe-Gebühren, Rückerstattungen und Rückbuchungen belastet.

Diese Art der Zahlung eignet sich optimal für Marktplätze, die Zahlungen zwischen mehreren Parteien aufteilen müssen, wie beispielsweise bei DoorDash, einer Lieferplattform für Restaurants.

Stripe unterstützt separate Zahlungen und Überweisungen in den folgenden Regionen:

Australien
Belgien
Brasilien
Bulgarien
Dänemark
Deutschland
Estland
Finnland
Frankreich
Griechenland
Irland
Italien
Japan
Kanada
Kroatien
Lettland
Liechtenstein
Litauen
Luxemburg
Malaysia
Malta
Mexiko
Neuseeland
Niederlande
Norwegen
Österreich
Polen
Portugal
Rumänien
Schweden
Schweiz
Singapur
Slowakei
Slowenien
Spanien
Tschechische Republik
Ungarn
Vereinigte Staaten
Vereinigtes Königreich
Zypern

Bei den meisten Szenarien müssen sich Ihre Plattform und alle verbundenen Konten in derselben Region befinden. Beim Versuch, Gelder über eine unzulässige Grenze zu überweisen, wird ein Fehler zurückgegeben. Informationen zur regionsübergreifenden Unterstützung finden Sie unter Grenzüberschreitende Überweisungen. Verwenden Sie Übertragungen nur in Kombination mit zulässigen Anwendungsszenarien für Zahlungen, Aufstockungen und Gebühren. Wir empfehlen, separate Zahlungen und Überweisungen für verbundene Konten zu verwenden, die Zugriff auf das Express-Dashboard oder keinen Zugriff auf das Dashboard haben.

Private Vorschau

Sie können Destination Charges ohne den Parameter on_behalf_of verwenden, wenn sich Ihre Plattform und das verbundene Konto in verschiedenen Ländern (innerhalb der USA, des Vereinigten Königreichs und der EU) befinden. Kontaktieren Sie uns, um frühzeitigen Zugriff zu erhalten.

Integrieren Sie die vorgefertigte Zahlungs-UI von Stripe in den Bezahlvorgang Ihrer Android-App mit der PaymentSheet-Klasse.

Stripe einrichten
Serverseitig
Clientseitig

Zunächst benötigen Sie ein Stripe-Konto. Registrieren Sie sich jetzt.

Serverseitig

Für diese Integration sind Endpoints auf Ihrem Server erforderlich, die mit der Stripe-API kommunizieren können. Nutzen Sie die offiziellen Bibliotheken für den Zugriff auf die Stripe-API von Ihrem Server aus:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Clientseitig

Das Stripe Android SDK ist Open Source und vollständig dokumentiert.

Um das SDK zu installieren, fügen Sie stripe-android in den Block dependencies Ihrer app/build.gradle-Datei ein:

build.gradle.kts
Kotlin
plugins { id("com.android.application") } android { ... } dependencies { // ... // Stripe Android SDK implementation("com.stripe:stripe-android:21.16.0") // Include the financial connections SDK to support US bank account as a payment method implementation("com.stripe:financial-connections:21.16.0") }

Notiz

Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite Releases auf GitHub. Um bei Veröffentlichung eines neuen Release eine Benachrichtigung zu erhalten, beobachten Sie Veröffentlichungen für das jeweilige Repository.

Konfigurieren Sie das SDK mit Ihrem veröffentlichbaren Schlüssel von Stripe so, dass dieser Anfragen an die API stellen kann, wie beispielsweise in Ihrer Unterklasse Application:

Kotlin
import com.stripe.android.PaymentConfiguration class MyApp : Application() { override fun onCreate() { super.onCreate() PaymentConfiguration.init( applicationContext,
"pk_test_TYooMQauvdEDq54NiTphI7jx"
) } }

Notiz

Verwenden Sie Ihre Testschlüssel beim Testen und Entwickeln Ihrer App und Ihre Live-Modus-Schlüssel beim Veröffentlichen Ihrer App.

Endpoint hinzufügen
Serverseitig

Diese Integration verwendet drei Stripe-API-Objekte:

  1. PaymentIntent: Stripe verwendet diesen, um Ihre Absicht darzustellen, eine Zahlung von Ihren Kundinnen/Kunden anzufordern, wobei Abbuchungsversuche und Zahlungsstatusänderungen im gesamten Vorgang dokumentiert werden.
  2. Ein/eine Kunde/Kundin. Um eine Zahlungsmethode für zukünftige Zahlungen einzurichten, muss diese einem Kunden/einer Kundin zugeordnet werden. Erstellen Sie ein Kundenobjekt, wenn Ihre Kundin/Ihr Kunde ein Konto bei Ihrem Unternehmen anlegt. Wenn eine Zahlung als Gast durchgeführt wird, können Sie vor der Zahlung ein Kundenobjekt erstellen und es zu einem späteren Zeitpunkt mit Ihrer eigenen internen Darstellung des Kundenkontos verknüpfen.
  3. Ein temporärer Kundenschlüssel (optional). Informationen zum Kundenobjekt sind vertraulich und können nicht direkt über die App abgerufen werden. Ein temporärer Schlüssel gewährt dem SDK vorübergehenden Zugriff auf den Kunden/die Kundin.

Wenn Sie Karten speichern und wiederkehrenden Kunden und Kundinnen ermöglichen möchten, gespeicherte Karten wiederzuverwenden, benötigen Sie das Customer-Objekt und das temporäre Kundenschlüssel-Objekt für Ihre Integration. Andernfalls können Sie diese Objekte weglassen.

Aus Sicherheitsgründen kann Ihre App diese Objekte nicht erstellen. Fügen Sie stattdessen einen Endpoint auf Ihrem Server hinzu, der:

  1. Ruft den Kunden/die Kundin ab oder erstellt einen neuen/eine neue.
  2. Erstellt einen temporären Schlüssel für den Kunden/die Kundin.
  3. Erstellt einen PaymentIntent mit dem Betrag, der Währung, dem Kunden/der Kundin und einer Übertragungsgruppe, die der Übertragung von Geldern später zugeordnet werden sollen.
  4. Gibt das Client-Geheimnis des PaymentIntent, das secret des temporären Schlüssels, die Kunden-ID und Ihren veröffentlichbaren Schlüssel an Ihre App zurück.

Die Zahlungsmethoden, die Kundinnen/Kunden während des Bezahlvorgangs angezeigt werden, sind ebenfalls im PaymentIntent enthalten. Sie können Zahlungsmethoden durch Stripe aus Ihren Dashboard-Einstellungen abrufen lassen oder sie manuell auflisten.

Sofern Ihre Integration keine codebasierte Option zum Anbieten von Zahlungsmethoden erfordert, listen Sie Zahlungsmethoden nicht manuell auf. Stripe wertet die Währung, die Einschränkungen für Zahlungsmethoden und andere Parameter aus, um die Liste der unterstützten Zahlungsmethoden zu ermitteln. Stripe priorisiert Zahlungsmethoden, die die Konversion steigern und die für die Währung und den Standort des Kunden/der Kundin am relevantesten sind. Wir verbergen Zahlungsmethoden mit niedrigerer Priorität in einem Überlaufmenü.

Eine laufende Implementierung dieses Endpoints für schnelle Tests ist auf Glitch verfügbar.

Command Line
curl
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-05-28.basil" \ -X "POST" \ -d "customer"=
{{CUSTOMER_ID}}
\ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"=
{{CUSTOMER_ID}}
\ -d "amount"=10000 \ -d "currency"="usd" \ # In the latest version of the API, specifying the `automatic_payment_methods` parameter # is optional because Stripe enables its functionality by default. -d "automatic_payment_methods[enabled]"=true \ -d transfer_group="ORDER100" \

Zahlungsformular integrieren
Clientseitig

Bevor das mobile Payment Element angezeigt wird, sollte Ihre Checkout-Seite:

  • Zeigen Sie die gekauften Produkte und den Gesamtbetrag an
  • Erfassen Sie erforderliche Versandinformationen mithilfe des Address Element.
  • Fügen Sie eine Checkout-Schaltfläche ein, um die Nutzeroberfläche von Stripe anzuzeigen

Initialisieren Sie innerhalb von onCreate Ihrer Checkout-Aktivität eine PaymentSheet-Instanz und übergeben Sie eine Methode, um das Ergebnis zu bearbeiten.

import androidx.compose.runtime.Composable import com.stripe.android.paymentsheet.PaymentSheetResult import com.stripe.android.paymentsheet.rememberPaymentSheet @Composable fun App() { val paymentSheet = rememberPaymentSheet(::onPaymentSheetResult) } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // implemented in the next steps }

Rufen Sie als Nächstes das PaymentIntent-Client-Geheimnis, das Geheimnis des temporären Schlüssels, die Kunden-ID und den veröffentlichbaren Schlüssel vom Endpoint ab, den Sie im vorigen Schritt erstellt haben. Legen Sie den veröffentlichbaren Schlüssel mithilfe von PaymentConfiguration fest und speichern Sie die anderen für den Zeitpunkt, an dem Sie das Zahlungsformular präsentieren.

import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext // Add the following lines to build.gradle to use this example's networking library: // implementation 'com.github.kittinunf.fuel:fuel:2.3.1' // implementation 'com.github.kittinunf.fuel:fuel-json:2.3.1' import com.github.kittinunf.fuel.httpPost import com.github.kittinunf.fuel.json.responseJson import com.stripe.android.PaymentConfiguration import com.stripe.android.paymentsheet.PaymentSheet import com.stripe.android.paymentsheet.PaymentSheetResult import com.stripe.android.paymentsheet.rememberPaymentSheet import com.github.kittinunf.result.Result @Composable fun App() { val paymentSheet = rememberPaymentSheet(::onPaymentSheetResult) val context = LocalContext.current var customerConfig by remember { mutableStateOf<PaymentSheet.CustomerConfiguration?>(null) } var paymentIntentClientSecret by remember { mutableStateOf<String?>(null) } LaunchedEffect(context) { "Your backend endpoint/payment-sheet".httpPost().responseJson { _, _, result -> if (result is Result.Success) { val responseJson = result.get().obj() paymentIntentClientSecret = responseJson.getString("paymentIntent") customerConfig = PaymentSheet.CustomerConfiguration( id = responseJson.getString("customer"), ephemeralKeySecret = responseJson.getString("ephemeralKey") ) val publishableKey = responseJson.getString("publishableKey") PaymentConfiguration.init(context, publishableKey) } } } } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // implemented in the next steps }

Wenn der Kunde/die Kundin auf Ihre Checkout-Schaltfläche tippt, rufen Sie presentWithPaymentIntent auf, um das Zahlungsformular anzuzeigen. Sobald die Zahlung kundenseitig abgeschlossen wurde, wird das Formular verworfen und PaymentSheetResultCallback mit einem PaymentSheetResult aufgerufen.

import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext // Add the following lines to build.gradle to use this example's networking library: // implementation 'com.github.kittinunf.fuel:fuel:2.3.1' // implementation 'com.github.kittinunf.fuel:fuel-json:2.3.1' import com.github.kittinunf.fuel.httpPost import com.github.kittinunf.fuel.json.responseJson import com.stripe.android.PaymentConfiguration import com.stripe.android.paymentsheet.PaymentSheet import com.stripe.android.paymentsheet.PaymentSheetResult import com.stripe.android.paymentsheet.rememberPaymentSheet import com.github.kittinunf.result.Result @OptIn(ExperimentalCustomerSessionApi::class) @Composable fun App() { val paymentSheet = rememberPaymentSheet(::onPaymentSheetResult) val context = LocalContext.current var customerConfig by remember { mutableStateOf<PaymentSheet.CustomerConfiguration?>(null) } var paymentIntentClientSecret by remember { mutableStateOf<String?>(null) } LaunchedEffect(context) { "Your backend endpoint/payment-sheet".httpPost().responseJson { _, _, result -> if (result is Result.Success) { val responseJson = result.get().obj() paymentIntentClientSecret = responseJson.getString("paymentIntent") customerConfig = PaymentSheet.CustomerConfiguration( id = responseJson.getString("customer"), ephemeralKeySecret = responseJson.getString("ephemeralKey") ) val publishableKey = responseJson.getString("publishableKey") PaymentConfiguration.init(context, publishableKey) } } } Button( onClick = { val currentConfig = customerConfig val currentClientSecret = paymentIntentClientSecret if (currentConfig != null && currentClientSecret != null) { presentPaymentSheet(paymentSheet, currentConfig, currentClientSecret) } } ) { Text("Checkout") } } private fun presentPaymentSheet( paymentSheet: PaymentSheet, customerConfig: PaymentSheet.CustomerConfiguration, paymentIntentClientSecret: String ) { paymentSheet.presentWithPaymentIntent( paymentIntentClientSecret, PaymentSheet.Configuration( merchantDisplayName = "My merchant name", customer = customerConfig, // Set `allowsDelayedPaymentMethods` to true if your business handles // delayed notification payment methods like US bank accounts. allowsDelayedPaymentMethods = true ) ) } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { when(paymentSheetResult) { is PaymentSheetResult.Canceled -> { print("Canceled") } is PaymentSheetResult.Failed -> { print("Error: ${paymentSheetResult.error}") } is PaymentSheetResult.Completed -> { // Display for example, an order confirmation screen print("Completed") } } }

Wenn Sie allowsDelayedPaymentMethods auf true festlegen, werden Zahlungsmethoden mit verzögerter Benachrichtigung wie US-Bankkonten zugelassen. Für diese Zahlungsmethoden ist der endgültige Zahlungsstatus nicht bekannt, wenn das PaymentSheet abgeschlossen wird. Stattdessen ist sie erfolgreich oder schlägt fehl. Wenn Sie diese Art von Zahlungsmethoden unterstützen, informieren Sie den Kunden/die Kundin darüber, dass seine/ihre Bestellung bestätigt ist, und führen seine/ihre Bestellung erst aus (z. B. das Produkt versenden), wenn die Zahlung erfolgreich ist.

Ereignisse nach Zahlung verarbeiten
Serverseitig

Stripe sendet ein payment_intent.succeeded-Ereignis, wenn die Zahlung abgeschlossen ist. Verwenden Sie Webhook-Tool im Dashboard oder folgen Sie der Webhook-Anleitung, um diese Ereignisse zu empfangen und führen Sie Aktionen aus, wie beispielsweise das Senden einer Bestellbestätigung per E-Mail, das Protokollieren des Verkaufs in der Datenbank oder das Starten eines Versand-Workflows.

Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnten die Kund/innen das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist. Bösartige Clients könnten dann die Antwort manipulieren. Wenn Sie Ihre Integration so einrichten, dass sie asynchrone Ereignisse überwacht, können Sie verschiedene Arten von Zahlungsmethoden mit einer einzelnen Integration akzeptieren.

Neben der Abwicklung des payment_intent.succeeded-Ereignisses empfehlen wir die Abwicklung von diesen weiteren Ereignissen, wenn Sie Zahlungen mit dem Payment Element erfassen:

EreignisBeschreibungAktion
payment_intent.succeededWird gesendet, wenn Kundinnen und Kunden eine Zahlung erfolgreich abgeschlossen haben.Senden Sie den Kund/innen eine Auftragsbestätigung und wickeln Sie die Bestellung ab.
payment_intent.processingWird gesendet, wenn eine/e Kund/in eine Zahlung erfolgreich veranlasst hat, die Zahlung aber noch nicht abgeschlossen ist. Dieses Ereignis wird am häufigsten gesendet, wenn der Kunde/die Kundin eine Bankabbuchung veranlasst. In Zukunft folgt darauf entweder ein payment_intent.succeeded- oder ein payment_intent.payment_failed-Ereignis.Senden Sie eine Bestellbestätigung an die Kund/innen, in der angegeben ist, dass die Zahlung noch aussteht. Bei digitalen Waren können Sie die Bestellung abwickeln, bevor Sie darauf warten, dass die Zahlung erfolgt.
payment_intent.payment_failedWird gesendet, wenn ein Kunde/eine Kundin einen Zahlungsversuch durchführt, die Zahlung jedoch fehlschlägt.Wenn eine Zahlung von processing zu payment_failed übergeht, bieten Sie der Kundin/dem Kunden einen weiteren Zahlungsversuch an.

Transfer erstellen
Serverseitig

Senden Sie auf Ihrem Server Gelder von Ihrem Konto zu einem verbundenen Konto, indem Sie eine Übertragung erstellen und die verwendete transfer_group angeben.

Command Line
cURL
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=7000 \ -d currency=usd \ -d destination=
{{CONNECTED_ACCOUNT_ID}}
\ -d transfer_group=ORDER100

Transfer und Zahlungsbeträge müssen nicht übereinstimmen. Sie können eine einzelne Zahlung auf mehrere Übertragungen aufteilen oder mehrere Zahlungen in eine einzelne Übertragung einbeziehen. Im folgenden Beispiel wird eine zusätzliche Übertragung erstellt, die der gleichen transfer_group zugeordnet ist.

Command Line
cURL
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=2000 \ -d currency=usd \ -d destination={{OTHER_CONNECTED_ACCOUNT_ID}} \ -d transfer_group=ORDER100

Überweisungsoptionen

Sie können der Zeichenfolge transfer_group einen beliebigen Wert zuweisen, solange dieser für einen einzelnen Geschäftsvorgang steht. Zudem können Sie Überweisungen ohne zugehörige Zahlung oder Angabe einer transfer_group durchführen, zum Beispiel wenn Sie einen Dienstleister bezahlen müssen und diesem Vorgang keine Kundenzahlung zugrunde liegt.

Notiz

Die transfer_group identifiziert nur zugehörige Objekte. Sie hat keine Auswirkungen auf die Standardfunktionalität. Um zu verhindern, dass eine Übertragung ausgeführt wird, bevor die Gelder aus der zugehörigen Zahlung verfügbar sind, verwenden Sie das Attribut source_transaction der Überweisung.

Standardmäßig schlägt eine Übertragungsanfrage fehl, wenn der Betrag das verfügbare Kontoguthaben der Plattform übersteigt. Stripe wiederholt fehlgeschlagene Übertragungsanfragen nicht automatisch.

Sie können fehlgeschlagene Übertragungsanfragen für Übertragungen vermeiden, die mit Zahlungen verbunden sind. Wenn Sie die zugehörige Zahlung als source_transaction der Überweisung angeben, ist die Übertragungsanfrage automatisch erfolgreich. Die Übertragung erfolgt jedoch erst, wenn die Gelder aus dieser Zahlung auf dem Plattformkonto verfügbar sind.

Notiz

Wenn Sie separate Zahlungen und Überweisungen verwenden, berücksichtigen Sie dies bei der Planung Ihres Auszahlungs-Plans. Automatische Auszahlungen können Transfers stören, für die keine source_transaction definiert ist.

Integration testen

KartennummerSzenarioSo führen Sie den Test durch
Die Kartenzahlung ist erfolgreich und es ist keine Authentifizierung erforderlich.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
Für die Kartenzahlung ist eine Authentifizierung erforderlich.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
Die Karte wird mit einem Ablehnungscode wie insufficient_funds abgelehnt.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
Die UnionPay-Karte hat eine variable Länge von 13 bis 19 Ziffern.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.

Hier finden Sie weitere Informationen zum Testen Ihrer Integration.

OptionalGoogle Pay aktivieren

OptionalFormular anpassen

OptionalZahlung in Ihrer Nutzeroberfläche abschließen

OptionalWeitere Zahlungsmethoden aktivieren

Abwicklungshändler angeben

Der Abwicklungshändler ist abhängig von den Funktionen, die für ein Konto eingerichtet sind, und davon, wie eine Zahlung erstellt wird. Der Abwicklungshändler bestimmt, wessen Informationen für die Durchführung der Zahlung verwendet werden. Dazu gehört die Zahlungsbeschreibung in der Abrechnung (entweder die der Plattform oder die des verbundenen Kontos), die auf dem Kreditkarten- oder Kontoauszug des Kunden/der Kundin für diese Zahlung angezeigt wird.

Durch die Angabe des Abwicklungshändlers können Sie genauer festlegen, für wen Zahlungen erstellt werden sollen. Einige Plattformen sind beispielsweise vorzugsweise der Abwicklungshändler, da Kundinnen/Kunden direkt mit ihrer Plattform interagieren (zum Beispiel On-Demand-Plattformen). Manche Plattformen verfügen jedoch über verbundene Konten, die stattdessen direkt mit Kundinnen/Kunden interagieren (zum Beispiel ein Ladengeschäft auf einer E-Commerce-Plattform). Bei diesen Szenarien ist es möglicherweise sinnvoller, wenn das verbundene Konto der Abwicklungshändler ist.

Sie können den Parameter on_behalf_of auf die ID eines verbundenen Kontos setzen, um dieses Konto zum Abwicklungshändler für die Zahlung zu machen. Bei Verwendung von on_behalf_of:

  • Zahlungen werden im Land und in der Abwicklungswährung des verbundenen Kontos abgewickelt.
  • Es wird die Gebührenstruktur für das Land des verbundenen Kontos verwendet.
  • Die Zahlungsbeschreibung des verbundenen Kontos wird auf der Kreditkartenabrechnung des Kunden/der Kundin angezeigt.
  • Wenn sich das verbundene Konto in einem anderen Land als die Plattform befindet, werden die Adresse und die Telefonnummer des verbundenen Kontos auf der Kreditkartenabrechnung des Kunden/der Kundin angezeigt.
  • Wie viele Tage ein ausstehendes Guthaben vor der Auszahlung zurückgehalten wird, hängt von der Einstellung delay_days auf dem verbundenen Konto ab.

Wenn on_behalf_of weggelassen wird, ist die Plattform das für die Zahlung verantwortliche Unternehmen.

Vorsicht

Der Parameter on_behalf_of wird nur für verbundene Konten mit Zahlungsfunktionen wie card_payments unterstützt. Konten, denen der Empfänger-Rahmenvertrag zugrunde liegt, können keine card_payments oder andere Zahlungsfunktionen anfordern.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=10000 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d on_behalf_of=
{{CONNECTED_ACCOUNT_ID}}
\ -d transfer_group=ORDER100

Gebühren einziehen

Bei der Verwendung separater Zahlungen und Überweisungen kann die Plattform Gebühren für eine Zahlung einziehen, indem sie den Betrag reduziert, den sie auf die Zielkonten überweist. Nehmen Sie zum Beispiel eine Transaktion mit einem Lieferservice in einem Restaurant, bei der das Restaurant und der/die Fahrer/in bezahlt werden:

  1. Der Kunde/die Kundin zahlt 100 USD.
  2. Stripe erhebt eine Gebühr von 3,20 USD und fügt die verbleibenden 96,80 USD dem ausstehenden Guthaben des Plattformkontos hinzu.
  3. Die Plattform überweist 70 USD auf das verbundene Konto des Restaurants und 20 USD auf das verbundene Konto des Fahrers/der Fahrerin.
  4. Eine Plattformgebühr von 6,80 USD verbleibt auf dem Plattformkonto.
So teilen Sie eine Zahlung in Gebühren für das Plattformkonto und Übertragungen für die verbundenen Konten auf

Informationen zur Verarbeitung von Zahlungen in mehreren Währungen mit Connect finden Sie unter Mit mehreren Währungen arbeiten.

Verfügbarkeit von Überweisungen

Standardmäßig werden Gelder aus dem verfügbaren Guthaben des Plattformkontos überwiesen. Der Versuch, einen Betrag zu überweisen, der das verfügbare Guthaben übersteigt, schlägt mit einer Fehlermeldung fehl. Um dieses Problem zu vermeiden, verknüpfen Sie eine Überweisung beim Erstellen mit einer bestehenden Zahlung, indem Sie die Zahlungs-ID als source_transaction-Parameter angeben. Mit einer source_transaction wird die Überweisungsanforderung unabhängig von Ihrem verfügbaren Guthaben als erfolgreich zurückgegeben, wenn die zugehörige Zahlung noch nicht abgewickelt wurde. Die Gelder werden auf dem Zielkonto jedoch erst verfügbar, wenn die Gelder aus der zugehörigen Zahlung vom Plattformkonto überwiesen werden können.

Notiz

Wenn eine Überweisung aufgrund unzureichenden Plattformguthabens fehlschlägt, wird die fehlgeschlagene Aktion nicht automatisch wiederholt, nachdem Sie Guthaben hinzugefügt haben. Nachdem Sie Geld eingezahlt haben, müssen Sie alle fehlgeschlagenen Überweisungen oder Auszahlungen wiederholen.

Wenn die Quellenzahlung den Wert transfer_group hat, weist Stripe denselben Wert der transfer_group der Übertragung zu. Ist dies nicht der Fall, generiert Stripe eine Zeichenfolge im Format group_ plus der zugehörigen PaymentIntent-ID, zum Beispiel: group_pi_2NHDDD589O8KAxCG0179Du2s. Diese Zeichenfolge wird sowohl für die Zahlung als auch für die Überweisung als transfer_group zugewiesen.

Notiz

Sie müssen die source_transaction angeben, wenn Sie eine Übertragung erstellen. Sie können dieses Attribut später nicht aktualisieren.

Command Line
cURL
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=7000 \ -d currency=usd \ -d source_transaction=
{{CHARGE_ID}}
\ -d destination=
{{CONNECTED_ACCOUNT_ID}}

Sie können die Zahlungs-ID dem PaymentIntent entnehmen:

  • Rufen Sie das Attribut neueste_Zahlung des PaymentIntent ab. Bei diesem Attribut handelt es sich um die ID der neuesten Abbuchung, die mit PaymentIntent verknüpft ist.
  • Fordern Sie eine Liste von Zahlungen an, wobei Sie den payment_intent in der Anfrage angeben. Diese Methode gibt vollständige Daten für alle Zahlungen zurück, die mit dem PaymentIntent verknüpft sind.

Folgendes gilt bei Verwendung dieses Parameters:

  • Der Überweisungsbetrag darf nicht den Betrag der zugrundeliegenden Zahlung übersteigen.
  • Sie können mehrere Überweisungen mit dem gleichen Parameter source_transaction erstellen, solange die Summe der Überweisungen die zugrunde liegende Zahlung nicht übersteigt.
  • Die Überweisung übernimmt von der zugehörigen Zahlung den Status „Ausstehend“: Wenn die Gelder von der Zahlung in N Tagen verfügbar werden, wird auch die Zahlung, die das Stripe-Zielkonto durch die Überweisung empfängt, in N Tagen verfügbar.
  • Stripe erstellt automatisch eine transfer_group für Sie.
  • Die Währung der Saldotransaktion, die mit der Abbuchung verknüpft ist, muss mit der Währung der Überweisung übereinstimmen

Asychrone Zahlungsmethoden wie ACHkönnen nach einer nachfolgenden Überweisungsanfrage fehlschlagen. Vermeiden Sie für diese Zahlungen die Verwendung von source_transaction. Warten Sie stattdessen, bis ein charge.succeeded-Ereignis ausgelöst wird, bevor Sie die Gelder überweisen. Wenn Sie bei diesen Zahlungen source_transaction verwenden, müssen Sie Funktionen zum Umgang mit Zahlungsfehlern implementieren.

Wenn eine als source_transaction verwendete Zahlung fehlschlägt, werden Gelder aus dem Guthaben Ihres Plattformkontos auf das verbundene Konto überwiesen, um die Zahlung zu decken. Um diese Gelder zurückzuerhalten, können Sie die Überweisung im Zusammenhang mit der fehlgeschlagenen source_transaction zurückbuchen.

Rückerstattungen ausstellen

Zahlungen, die auf Ihrer Plattform erstellt wurden, können Sie mithilfe des Geheimschlüssels Ihrer Plattform zurückerstatten. Die Rückerstattung einer Zahlung hat allerdings keine Auswirkungen auf damit verbundene Übertragungen. Es obliegt Ihrer Plattform, geschuldete Beträge einzutreiben, indem Sie die Höhe künftiger Übertragungen reduzieren oder Transfers zurückbuchen.

Command Line
cURL
curl https://api.stripe.com/v1/refunds \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d charge=
{{CHARGE_ID}}

Transfers zurückbuchen

Connect unterstützt die Rückbuchung von Überweisungen, die an verbundene Konten erfolgt sind, entweder in voller Höhe oder in Teilen (durch Festlegen eines Werts für amount). Verwenden Sie Überweisungsrückbuchungen nur für Rückerstattungen oder Zahlungsanfechtungen im Zusammenhang mit der Abbuchung oder zur Korrektur von Fehlern bei der Überweisung.

Command Line
cURL
curl https://api.stripe.com/v1/transfers/
{{TRANSFER_ID}}
/reversals
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=7000

Durch eine Rückbuchung wird der angegebene Teilbetrag (oder der Gesamtbetrag) einer Überweisung wieder dem verfügbaren Guthaben der Plattform gutgeschrieben, wodurch sich das verfügbare Guthaben des verbundenen Kontos entsprechend verringert. Eine Überweisung kann nur zurückgebucht werden, wenn das verfügbare Guthaben des verbundenen Kontos höher als der Rückbuchungsbetrag ist oder wenn verbundene Rückstellungen aktiviert sind.

Wenn für die Rückbuchung die Währung umgerechnet werden muss, wird ein Fehler zurückgegeben, falls der Rückbuchungsbetrag nach der Währungsumrechnung zu einem Kontostand von null führt.

Wenn die Rückerstattungen für ein verbundenes Konto deaktiviert werden, können dennoch weiterhin Rückbuchungen der Überweisungen verarbeitet werden.

Siehe auch

  • Mit mehreren Währungen arbeiten
  • Zahlungsbeschreibungen mit Connect
  • Informationen zu Connect-Kontoguthaben
War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc