Geldbewegungen mit OutboundTransfer-Objekten
Erfahren Sie, wie Sie Geld von Finanzkonten auf externe Konten überweisen können.
Ein OutboundTransfer-Objekt ermöglicht Geldübertragungen von Finanzkonten. Über OutboundTransfer können Sie Gelder über die ACH-Netzwerke oder per Inlandsüberweisung auf ein externes Bankkonto senden, das einem verbundenen Konto gehört.
Ausgehende Überweisungen gehen in der Regel zwischen dem gleichen Tag und zwei Werktagen bei der Empfängerbank ein, je nachdem, ob Sie Banküberweisung oder ACH verwenden.
Hinweis
Multi FA beta Wenn Sie für die Beta-Funktion für mehrere Finanzkonten angemeldet sind, können Sie OutboundTransfer verwenden, um Gelder über stripe-Netzwerk-Rails an ein anderes Finanzkonto zu senden, das mit demselben verbundenen Konto verknüpft ist. Gelder gehen innerhalb von Minuten auf dem Zielkonto ein.
Weitere Informationen finden Sie im Leitfaden Zeitpläne für Geldbewegungen.
OutboundTransfers unterstützen den Zahlungsmethodentyp us_. Alternativ können Sie ein bestehendes BankAccount, das der/dem Händler/in gehört, als ExternalAccount verwenden.
Einen OutboundTransfer erstellen
Verwenden Sie POST /v1/treasury/outbound_, um einen OutboundTransfer für das Finanzkonto mit der zugehörigen ID zu erstellen. Von den möglichen Parametern der Anfrage sind vier verpflichtend:
amount: Überweisungsbetrag in Cent.currency: Der dreistellige ISO-Währungscode.financial_: Das quellseitige Finanzkonto, von dem Gelder abgezogen werden.account destination_: die ID der Destination-payment_ method PaymentMethododer eineBankAccount-ID zum Empfangen von Geldern.destination_: Finanzkonto zum Empfangen von Geldern.payment_ method_ data
{ // The source financial account to pull funds from. "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // The amount to send. 10.00 USD in this case. "amount": 1000, "currency": "usd", // The destination PaymentMethod or BankAccount. // This should be nil if destination_payment_method is set. destination_payment_method_data: { type: "financial_account", // us_bank_account is not supported financial_account: "{{FINANCIAL_ACCOUNT_ID}}", }, // This should be nil if destination_payment_method_data is set. "destination_payment_method": "{{PAYMENT_METHOD_ID}}" | "{{BANK_ACCOUNT_ID}}", // Optionally, to explicitly specify a network, override the `network` value // This should be nil if destination_payment_method_data is set. "destination_payment_method_options": { "us_bank_account": { "network": "ach" | "us_domestic_wire" } }, // A description visible on the external bank statement. "statement_descriptor": "Bank xfer", // An optional internal description to identify this OutboundTransfer "description": "Transfer to my external account", // Stripe doesn't support updating originated transfers after creation. // You can only set metadata at creation. "metadata": nil | Hash, }
Die folgende Anfrage erstellt einen OutboundTransfer auf einer mit einem Konto verknüpften PaymentMethod, wobei die Geldquelle von dem identifizierten Finanzkonto stammt.
Bei Erfolg gibt die Antwort die neu erstellte OutboundTransfer-Objekt zurück.
{ "id": "{{OUTBOUND_TRANSFER_ID}}", "object": "outbound_transfer", "amount": 1000, "cancelable": true, "created": 1648479987, "currency": "usd", "description": null, "destination_payment_method": "{{PAYMENT_METHOD_ID}}" | null, "destination_payment_method_details": {
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.
Die Verwendung der ACH-Zahlung am selben Tag ermöglicht das Senden von Geldbeträgen, die am selben Werktag eingehen, wenn der Aufruf OutboundTransfer erfolgreich vor der Abgabefrist abgeschlossen ist. Um ACH 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.
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.
Einen OutboundTransfer abrufen
Verwenden Sie GET /v1/treasury/outbound_, um Details für den OutboundTransfer mit der zugehörigen ID abzurufen.
Die folgende Anfrage ruft den OutboundTransfer mit der zugehörigen ID ab und erweitert die Details der Transaction.
Bei Erfolg gibt die Antwort das OutboundTransfer 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 OutboundTransfer stornieren
Verwenden Sie POST /v1/treasury/outbound_, um den OutboundTransfer mit der zugehörigen ID zu stornieren. Das OutboundTransfer-Objekt enthält den Parameter cancelable mit einem booleschen Wert, der angibt, ob die Überweisung storniert werden kann. Nachdem ein OutboundTransfer an das Netzwerk übertragen wurde, wird der Wert cancelable false, und Sie erhalten eine Fehlermeldung von diesem Endpoint für diesen Transfer.
Bei Erfolg gibt die Antwort das OutboundTransfer-Objekt zurück, wobei der status canceled ist.
{ "id": "{{OUTBOUND_TRANSFER_ID}} ", "object": "outbound_transfer", "amount": 1000, "cancelable": false, "created": 1648487177, "currency": "usd", ... "status": "canceled", "status_transitions": { "canceled_at": 1648487198, "failed_at": null, "posted_at": null, "returned_at": null }, "transaction": "{{TRANSACTION_ID}}" }
OutboundTransfers auflisten
Verwenden Sie GET /v1/treasury/outbound_, um die vom Finanzkonto gesendeten OutboundTransfers mit der ID des financial_-Parameters aufzulisten. Sie können die Liste mit den Standard-Listenparametern oder nach status sortieren.
{ // Standard list parameters "limit", "starting_after", "ending_before", // Filter by status "status": "processing" | "posted" | "failed" | "returned" | "canceled", // Filter by FinancialAccount (Required) "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", }
Die folgende Anfrage ruft OutboundTransfers von dem identifizierten Finanzkonto ab. Die enthaltenen Parameter begrenzen die Antwort auf die ersten drei Transfers nach dem OutboundTransfer mit der bereitgestellten ID.
Bei Erfolg gibt die Antwort eine Liste der OutboundTransfer-Objekte zurück, die alle Filterbedingungen erfüllt.
Status des OutboundTransfer
In der folgenden Tabelle werden jeder status für OutboundTransfers sowie die möglichen Übergangszustände beschrieben.
| STATUS | BESCHREIBUNG | GEHT IN ANDEREN STATUS ÜBER |
|---|---|---|
processing | Der Ausgangszustand des OutboundTransfer. Gelder werden einer ausstehenden Transaktion zugeteilt (sind aber immer noch Teil des aktuellen Guthabens). Der/die Nutzer/in kann den OutboundTransfer stornieren, während der Wert des Parameters cancelable true ist. | posted, canceled, failed |
canceled (Terminal) | Ein/e Nutzer/in hat den OutboundTransfer vor der Buchung storniert. Stripe storniert die ausstehende Transaktion und gibt das Geld an den/die Nutzer/in zurück. | k.A. |
posted | Stripe hat das Guthaben auf dem Finanzkonto angepasst und festgestellt, dass die OutboundTransfer wahrscheinlich nicht zurückgegeben wird. | returned |
returned (Terminal) | Der OutboundTransfer konnte das Ziel nicht erfolgreich erreichen (z. B. aufgrund falscher Kontodaten). Stripe gibt das Geld mit dem Parameter returned_ an den/die Nutzer/in zurück. | k.A. |
failed (Terminal) | Der OutboundTransfer konnte nicht an das Netzwerk gesendet werden. Stripe storniert die ausstehende Transaktion und gibt das Geld an den/die Nutzer/in zurück. Stripe kann mit diesem Status auf interne Fehler hinweisen. | k.A. |
OutboundTransfers testen
In Testumgebungen können Sie die destination_ als Test-Zahlungsmethode angeben. Zum Testen Ihrer Integration, können Sie Ihre eigenen PaymentMethods im Test-Modus erstellen oder unsere Test-IDs verwenden.
| TYP | ERGEBNIS | ZAHLUNGSMETHODE |
|---|---|---|
us_ | Standard, Übergang zu posted | pm_ |
us_ | Übergang zu posted, fügt einen Tag zum ursprünglichen expected_ hinzu. | pm_ |
us_ | Verbleibt in processing. | pm_ |
us_ | Übergang zu canceled. | pm_ |
us_ | Übergang zu failed. | pm_ |
us_ | Übergang zu returned mit returned_. | pm_ |
us_ | Übergang zu returned mit returned_. | pm_ |
us_ | Übergang zu returned mit returned_. | pm_ |
Die OutboundTransfer-Antwort gibt in allen Fällen den Status processing zurück. Stripe löst Webhooks für die relevanten Statuswechsel aus und durch Abrufen der OutboundTransfer nach der Erstellung wird der erwartete Status zurückgegeben.
Hilfs-Endpoints zum Testen von OutboundTransfers
Stripe stellt Endpoints bereit, die Ihnen dabei helfen, OutboundTransfers in verschiedenen Zuständen zu testen. Nach Erstellen eines OutboundTransfer können Sie mit diesen Test-Endpoints einen OutboundTransfer direkt in den neuen Zustand posted, failed, canceled oder returned übertragen.
Verwenden Sie den Test-Post-Endpoint, um die erkannte
OutboundTransfervom Statusprocessinginpostedzu ändern.POST /v1/test_helpers/treasury/outbound_ transfers/{{OUTBOUND_ TRANSFER_ ID}}/post Verwenden Sie den Endpoint für fehlgeschlagene Tests, um die erkannte
OutboundTransfervom Statusprocessinginfailedzu ändern.POST /v1/test_helpers/treasury/outbound_ transfers/{{OUTBOUND_ TRANSFER_ ID}}/fail Verwenden Sie Endpoint für Rückgabe-Tests, um den erkannten
OutboundTransfervom Statuspostedinreturnedzu ändern.POST /v1/test_helpers/treasury/outbound_ transfers/{{OUTBOUND_ TRANSFER_ 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 Transfer 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 OutboundTransfer nach dem Wechsel wird der erwartete Status zurückgegeben.
OutboundTransfers-Webhooks
Stripe gibt die folgenden OutboundTransfer-Ereignisse an Ihren Webhook-Endpoint aus:
treasury.bei Erstellung von OutboundTransfers.outbound_ transfer. created treasury., wenn sich der Status eines OutboundTransfer ändert. Verfügbare Statuswertoptionen:outbound_ transfer. {{new_ status}} treasury.outbound_ transfer. posted treasury.outbound_ transfer. failed treasury.outbound_ transfer. returned treasury.outbound_ transfer. canceled
treasury., wenn sich dasoutbound_ transfer. expected_ arrival_ date_ updated expected_einer OutboundTransfer ändert.arrival_ date treasury., wenn die Tracking-Details für einenoutbound_ transfer. tracking_ details_ updated OutboundTransferaktualisiert werden.