Geld mit Treasury mithilfe von OutboundPayment-Objekten bewegen
Erfahren Sie, wie Sie Ausgangszahlungen erstellen, um Geld von den Treasury Finanzkonten an Dritte zu transferieren.
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 Überweisungsdauer für ausgehende Zahlungen beträgt zwischen wenigen Minuten (bei Nutzung des Stripe-Netzwerks), bis Tagesende und 1 bis 2 Werktage (bei Nutzung des ACH-Netzwerks). Weitere Informationen finden Sie im Leitfaden zum Zeitplan für Geldübertragungen.
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 (nurusd
wird 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 PaymentMethod
für ausgehende Zahlungsabläufe mit einem SetupIntent einrichten. Sie müssen außerdem die Kunden-ID angeben, die mit demCustomer
-Objekt übereinstimmt, mit dem diePaymentMethod
verknüpft ist. Alternativ können Sie ein demCustomer
zugeordnetes bestehendes BankAccount-Objekt anstelle einerPaymentMethod
verwenden. - 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
Beta
Die ACH-Abwicklung am selben Tag befindet sich derzeit in der Beta 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.
Durch die Verwendung der ACH-Abwicklung am selben Tag können Sie Gelder senden, die am selben Werktag eingehen, wenn der Aufruf OutboundPayment
erfolgreich vor der Annahmefrist abgeschlossen wurde. Um die ACH-Abwicklung am selben Tag zu verwenden, setzen Sie den Parameter destination_
auf ach
und den Parameter destination_
auf 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.
Notiz
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 verschieben, rufen Sie POST /v1/treasury/outbound_
auf dem Ursprungskonto auf und geben das Zielkonto im Parameter destination_
an. Beide Finanzkonten müssen mit derselben Plattform verknüpft sein. Dabei können diese mit einem verbundenen Konto oder mit dem Finanzkonto der Plattform verknüpft sein.
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 einen End-to-End-Test Ihrer Integration durchzuführen, empfiehlt Stripe die SetupIntents-Anfrage im Test-Modus, mit der Sie eine PaymentMethod
erstellen können. Diese PaymentMethod
wird dann über eine OutboundPayment
-Erstellungsanfrage mit einem destination_
-Parameter übergeben.
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
PaymentMethod
direkt 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 vorhandenePaymentMethod
mit einer/einemCustomer
verknü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 KUND/INNEN 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
OutboundPayment
vom Statusprocessing
inposted
zu ändern.POST /v1/test_
helpers/treasury/outbound_ payments/{{OUTBOUND_ PAYMENT_ ID}}/post Verwenden Sie den Endpoint für fehlgeschlagene Tests, um die erkannte
OutboundPayment
vom Statusprocessing
infailed
zu ändern.POST /v1/test_
helpers/treasury/outbound_ payments/{{OUTBOUND_ PAYMENT_ ID}}/fail Verwenden Sie Endpoint für Rückgabe-Tests, um die erkannte
OutboundPayment
vom Statusprocessing
inreturned
zu ä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 OutboundPayment
aktualisiert werden.