Bewegen von Geld mit OutboundPayment-Objekten
Erfahren Sie, wie Sie ausgehende Zahlungen erstellen, um Geld von Finanzkonten an Dritte zu überweisen.
OutboundPayment-Objekte stellen Push-basierte Überweisungen von Ihrem Treasury-Finanzkonto auf ein externes Konto einer Drittpartei per ACH- oder Banküberweisung oder ein anderes Finanzkonto dar, das mit derselben Plattform verknüpft ist, die sofort das stripe-Netzwerk verwendet. Wenn Sie beispielsweise Geld von Ihrem Finanzkonto auf das externe US-Bankkonto Ihres Anbieters senden möchten, erstellen Sie eine OutboundPayment, um die Gelder zu verschieben. Die empfangenden Konten für eine OutboundPayment sind entweder ein externes Bankkonto oder ein anderes Finanzkonto.
Die typische Überweisungszeit für ausgehende Zahlungen kann von Minuten (bei Nutzung des Stripe-Netzwerks) am selben Tag bis zu 1-2 Werktagen (bei Nutzung des ACH-Netzwerks) reichen. Weitere Informationen finden Sie im Leitfaden Zeitpläne für Geldbewegungen.
Eine OutboundPayment erstellen
Verwenden Sie POST /v1/treasury/outbound_, um eine OutboundPayment zu erstellen. Von den möglichen Parametern der Anfrage sind die folgenden verpflichtend:
amount: Zu zahlender Betrag in Cent.currency: Dreistelliger ISO-Währungscode (nurusdwird unterstützt).financial_: Das quellseitige Finanzkonto, von dem Gelder gesendet werden.account destination_oderpayment_ method destination_: Informationen zum Ziel der Geldmittel für die Zahlung.payment_ method_ data - Für
destination_müssen Sie zunächst diepayment_ method PaymentMethodfür ausgehende Zahlungsabläufe mit einem SetupIntent einrichten. Sie müssen außerdem die Kunden-ID angeben, die mit demCustomer-Objekt übereinstimmt, mit dem diePaymentMethodverknüpft ist. Alternativ können Sie ein demCustomerzugeordnetes bestehendes BankAccount-Objekt anstelle einerPaymentMethodverwenden. - Mit
destination_können Sie Details zur Zahlungsmethode inline angeben. Sie können diesen Parameter verwenden, um Bankkontodaten anzugeben oder wenn Sie Geld über das Stripe-Netzwerk an ein anderes Finanzkonto senden.payment_ method_ data
- Für
Erstellen einer OutboundPayment an ein externes Bankkonto
Verwenden Sie POST /v1/treasury/outbound_, um eine OutboundPayment aus dem Finanzkonto zu erstellen, das durch die ID im Parameterwert financial_ des Textes identifiziert wird. Die folgende Anfrage fügt die Informationen statement_ und destination_ hinzu.
Bei Erfolg gibt die Antwort die neu erstellte OutboundPayment zurück.
ACH-Abwicklung am selben Tag
Private Vorschau
Die ACH-Abwicklung am selben Tag befindet sich derzeit in der Vorschau und hat nur eine begrenzte Verfügbarkeit. Geeignete Nutzer/innen werden von Stripe überprüft und genehmigt. Um Zugriff anzufordern, senden Sie eine E-Mail an treasury-support@stripe.com.
Wenn Sie keinen Zugriff haben, geben API-Aufrufe, die ACH-Funktionen oder -Parameter vom selben Tag enthalten, einen Fehler zurück.
Using same-day ACH enables sending funds that arrive the same business day if the OutboundPayment call successfully completes before the cutoff time. To use same-day ACH, set the destination_ parameter to ach and the destination_ parameter to same_.
Banküberweisung: Routingnummern
Einige Banken verwenden möglicherweise eine separate Routingnummer für Überweisungen, die sich von ACH unterscheiden. Möglicherweise erhalten Sie daher während der Erstellung einer Überweisung eine Fehlermeldung, wenn die Routingnummer für die Zahlungsmethode keine Überweisungen unterstützt. Wenn Sie diesen Fehler erhalten, müssen Sie eine neue Zahlungsmethode mit der Routingnummer für Ihre Banküberweisung hinzufügen.
Banküberweisung: Empfängeradresse
Für Banküberweisungen sind ACH-Metadaten sowie der Empfängername und die Rechnungsadresse erforderlich. Die Adresse ist die Adresse der Kontoinhaberin/des Kontoinhabers, an die/den die Überweisung geht, nicht die Adresse der Bank.
Bei der Eingabe der billing_ für eine Zahlungsmethode müssen alle Adressfelder ausgefüllt werden. Der Versuch, eine Überweisung mit unvollständigen Feldern in der billing_ zu senden, führt zu einem Fehler.
Hinweis
Wenn Sie beim Versenden einer Überweisung mit einem OutboundTransfer keine Adressfelder ausfüllen, verwendet Stripe standardmäßig die juristische Person des/der primären Stripe-Kontoinhabers/in.
Erstellen einer OutboundPayment an ein Finanzkonto
Um Geld zwischen Finanzkonten zu überweisen, rufen Sie POST /v1/treasury/outbound_ auf dem Ursprungskonto auf und geben Sie das Zielkonto im Parameter destination_ an. Beide Finanzkonten müssen mit derselben Plattform verknüpft sein, können aber entweder mit einem verbundenen Konto oder der Plattform verknüpft werden.
Der Text Ihrer Anfrage muss x-www-form-urlencoded sein, aber das folgende JSON definiert die Daten, die Sie senden können.
Eine OutboundPayment abrufen
Verwenden Sie GET /v1/treasury/outbound_, um Details für die OutboundPayment mit der zugehörigen ID abzurufen.
Bei Erfolg gibt die Antwort das OutboundPayment Objekt mit der zugehörigen ID zurück. Einige der Parameter in der Antwort enthalten zusätzliche Details, die nur zurückgegeben werden, wenn Sie sie als Werte zum expand[]-Parameter hinzufügen. Die Felder, die Sie erweitern können, haben im folgenden Antwortbeispiel den Kommentar „Erweiterbar“. Weitere Informationen zum Erweitern von Objektantworten finden Sie unter Antworten erweitern.
Eine OutboundPayment stornieren
Verwenden Sie POST /v1/treasury/outbound_, um die OutboundPayment mit der zugehörigen ID zu stornieren. Das OutboundPayment-Objekt enthält den Parameter cancelable mit einem booleschen Wert, der angibt, ob die Überweisung storniert werden kann. Nachdem eine OutboundPayment an das Netzwerk übertragen wurde, wird der Wert cancelable false, und Sie erhalten eine Fehlermeldung von diesem Endpoint für diesen Transfer.
Bei Erfolgt gibt die Antwort das OutboundPayment-Objekt zurück, wobei der status-Wert auf canceled gesetzt ist.
{ "id": "{{OUTBOUND_PAYMENT_ID}}", "object": "outbound_payment", "livemode": false, "created": 123456, "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", "amount": 1000, "currency": "usd", ... "status": "canceled",
OutboundPayments auflisten
Verwenden Sie GET /v1/treasury/outbound_, um die OutboundPayments des Finanzkontos mit der zugehörigen ID aufzulisten. Sie können die Liste mit den Standard-Listenparametern oder nach status oder customer sortieren.
{ // Standard list parameters "limit", "starting_after", "ending_before", // Filter by status "status": "processing" | "canceled" | "failed" | "posted" | "returned", // Filter by FinancialAccount (Required) "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // Filter by Customer "customer": "{{CUSTOMER_ID}}", }
Die folgende Anfrage ruft die letzten fünf OutboundPayment-Objekte für das Finanzkonto ab, das mit der Plattform verknüpft ist und an den erkannten Customer gezahlt wurde.
Zustände von OutboundPayment
In der folgenden Tabelle sind die einzelnen Status sowie die möglichen Übergangszustände beschrieben.
| STATUS | BESCHREIBUNG | KANN STATUS WECHSELN |
|---|---|---|
processing | Der Startstatus von OutboundPayment. Gelder werden einer ausstehenden Transaktion zugewiesen (sind aber immer noch Teil des aktuellen Saldos). Der/die Nutzer/in kann die OutboundPayment stornieren, während der Wert des Parameters cancelable auf true eingestellt ist. | posted, canceled, failed |
failed (Terminal) | OutboundPayment konnte nicht bestätigt werden. Stripe storniert die ausstehende Transaktion und gibt das Geld an den/die Nutzer/in zurück. | k.A. |
canceled (Terminal) | Ein/e Nutzer/in hat die OutboundPayment vor der Buchung storniert. Stripe storniert die ausstehende Transaktion und gibt die Gelder an den/die Nutzer/in zurück. | k.A. |
posted | Die OutboundPayment wird gebucht, und die Gelder haben das Konto verlassen. Die zugrunde liegende Transaktion wird gebucht. | returned |
returned (Terminal) | OutboundPayment ist nicht erfolgreich am Ziel angekommen. Gelder werden mit einer Transaktion (returned_) an den/die Nutzer/in zurückgesendet. | k.A. |
OutboundPayments testen
Um Ihre Integration End-to-End zu testen, empfehlen wir die Verwendung von Test-SetupIntent-Anforderungen, um eine PaymentMethod zu erstellen und übergeben Sie dann diese PaymentMethod in ein OutboundPayment-Erstellungsanfrage mit dem Parameter destination_.
Stripe ermöglicht auch das Testen von PaymentMethod-Token und -Zahlen, um bestimmte Funktionen auszulösen:
- Durch Übergabe eines Test-
PaymentMethod-Token andestination_(fürpayment_ method ach- undus_-Netzwerke)domestic_ wire - Wenn Sie ein Test-Token des Typs
PaymentMethoddirekt andestination_übergeben, müssen Sie dennoch eine Kunden-ID an denpayment_ method customer-Parameter übergeben. Der Einfachheit halber können Sie bei Stripe jede/n bestehende/n Kunden/Kundin im Test-Modus übergeben. Beachten Sie, dass sich dies vom Live-Modus unterscheidet. Dort muss die vorhandenePaymentMethodmit einer/einemCustomerverknüpft und dieselbe Kunden-ID an den Parametercustomerübergeben werden.
- Wenn Sie ein Test-Token des Typs
- Durch Übergabe von Test-Routing-und Kontonummern an
destination_(fürpayment_ method_ data[us_ bank_ account] ach- undus_-Netzwerke).domestic_ wire - Durch Übergabe der ID eines bestehenden Finanzkontos im Test-Modus, das einem plattforminternen Konto gehört, an
destination_(für das Stripe-Netzwerk)payment_ method_ data[financial_ account]
Die OutboundPayment-Antwort gibt in allen Fällen den Status „wird verarbeitet“ zurück. Stripe löst Webhooks für die relevanten Statuswechsel aus und durch Abrufen der OutboundPayment nach der Erstellung wird der erwartete Status zurückgegeben.
| ERSTELLT | DESTINATION_PAYMENT_METHOD (MIT ALLEN BESTEHENDEN KUNDINNEN/KUNDEN IM TEST-MODUS) | DESTINATION_PAYMENT_METHOD_DATA[US_BANK_ACCOUNT] |
|---|---|---|
OutboundPayment im Ausgangszustand „wird verarbeitet“ | pm_ |
|
OutboundPayment, die zu posted wechselt (von processing) | pm_ |
|
OutboundPayment, die zu posted wechselt (von processing). Zusätzlich wird ein Tag zum ursprünglichen expected_ hinzugefügt. | pm_ |
|
OutboundPayment, die zu canceled wechselt (von processing) | pm_ |
|
OutboundPayment, die zu failed wechselt (von processing) | pm_ |
|
OutboundPayment, die aufgrund einer Kontoschließung in returned übergeht (von „wird verarbeitet“ nach „gebucht“) | pm_ |
|
OutboundPayment, die aufgrund einer nicht vorhandenen Kontonummer in „zurückgegeben“ übergeht (von „wird bearbeitet“ nach „gebucht“) | pm_ |
|
OutboundPayment, die aufgrund einer ungültigen Kontonummer in returned übergeht (von „wird verarbeitet“ nach „gebucht“) | pm_ |
|
Hilfs-Endpoints zum Testen von OutboundPayments
Stripe stellt Endpoints bereit, die Ihnen dabei helfen, OutboundPayments in verschiedenen Zuständen zu testen. Mit den Test-Endpoints können Sie eine von Ihnen erstellte OutboundPayment direkt in den neuen Status posted, failed oder returned übertragen.
Verwenden Sie den Test-Post-Endpoint, um die erkannte
OutboundPaymentvom Statusprocessinginpostedzu ändern.POST /v1/test_helpers/treasury/outbound_ payments/{{OUTBOUND_ PAYMENT_ ID}}/post Verwenden Sie den Endpoint für fehlgeschlagene Tests, um die erkannte
OutboundPaymentvom Statusprocessinginfailedzu ändern.POST /v1/test_helpers/treasury/outbound_ payments/{{OUTBOUND_ PAYMENT_ ID}}/fail Verwenden Sie Endpoint für Rückgabe-Tests, um die erkannte
OutboundPaymentvom Statusprocessinginreturnedzu ändern.POST /v1/test_helpers/treasury/outbound_ payments/{{OUTBOUND_ PAYMENT_ ID}}/return
Diese Endpoints sind besonders nützlich zum Testen von Fehlerszenarien, wie Rückgaben, die andernfalls eine Intervention von außen erforderlich machen würden.
Fügen Sie für den return-Endpoint den optionalen Parameter returned_ in den Hauptteil ein, um zu zeigen, warum der Transfer zurückgegeben wurde. Ohne diese Angabe gilt standardmäßig der Rückgabecode declined für den Transfer.
{ "returned_details": { "code": "account_closed" | "account_frozen" | "bank_account_restricted" | "bank_ownership_changed" | "could_not_process" | "invalid_account_number" | "incorrect_account_holder_name" | "invalid_currency" | "no_account" | "declined" } }
Wir stellen auch einen Test-Update-Endpoint zur Verfügung, um die Darstellung der Details zur Sendungsnachverfolgung für eine Outbound Payment im Test-Modus zu simulieren. Das Feld tracking_ kann nur für Test-Modus-Objekte festgelegt werden.
Stripe löst in allen Fällen für alle relevanten Statuswechsel Webhooks aus und durch Abrufen der OutboundPayment nach dem Wechsel wird der erwartete Status zurückgegeben.
OutboundPayment-Webhooks
Stripe gibt die folgenden OutboundPayment-Ereignisse an Ihren Webhook-Endpoint aus:
treasury.beioutbound_ payment. created OutboundPayment-Erstellung.treasury., wenn sich der Status eineroutbound_ payment. {{new_ status}} OutboundPaymentändert. Verfügbare Statuswertoptionen:treasury.outbound_ payment. posted treasury.outbound_ payment. failed treasury.outbound_ payment. canceled treasury.outbound_ payment. returned
treasury., wenn sich dasoutbound_ payment. expected_ arrival_ date_ updated expected_einerarrival_ date OutboundPaymentändert.treasury., wenn die Tracking-Details für eineoutbound_ payment. tracking_ details_ updated OutboundPaymentaktualisiert werden.