Kontoverpflichtungen verwaltenPrivate Vorschau
Verfolgen Sie die Ausgaben, den Ablauf und das Guthaben für Ihre verbundenen Konten.
Nachdem Sie die CreditPolicy des verbundenen Kontos aktiviert haben, erstellt Stripe eine FundingObligation, mit der Sie verfolgen können, wie viel das Konto Ihnen für einen bestimmten Kreditzeitraum schuldet. Zu Beginn jedes Zeitraums wird automatisch eine neue FundingObligation
erstellt, wodurch das Ereignis issuing_
ausgelöst wird.
Die FundingObligation
dokumentiert nur abgewickelte Transaktionen und umfasst keine ausstehenden Autorisierungen. Informationen zu ausstehenden Autorisierungen finden Sie unter Alle Autorisierungen auflisten.
Um zu veranschaulichen, was passiert, wenn Sie die Gelder Ihrer Plattform auf ein verbundenes Konto mit einer CreditPolicy
anwenden, schauen wir uns folgendes Beispiel an: Barbell (ein mit Gymbox verbundenes Konto) hat ein Kreditlimit von 1.000 USD und gibt 100 USD für ein Hantel-Set aus. Die folgende Tabelle veranschaulicht die Abfolge der Ereignisse auf Stripe:
Aktion | Issuing-Guthaben von Barbell | FundingObligation von Barbell an Gymbox | Issuing-Guthaben von Gymbox |
---|---|---|---|
Barbell beginnt mit einem Guthaben von 0 USD und ohne vorherige Ausgaben. Gymbox startet mit einem Guthaben von 100 USD. | 0 USD | 0 USD | 100 USD |
Der/die Karteninhaber/in führt eine 100-USD-Transaktion durch, die autorisiert wird, da Gymbox über ausreichende Mittel verfügt. Vom Issuing-Konto von Gymbox werden aufgrund einer Autorisierungssperre 100 USD abgezogen. | -100 USD | 0 USD | 0 USD |
Während die Authentifizierung gelöscht wird (in der Regel am nächsten Tag), geschieht Folgendes:
| 0 USD | 100 USD | 0 USD |
Am Ende des Kreditzeitraums von Barbell zahlt Barbell seine FundingObligation an Gymbox aus. | 0 USD | 0 USD | 0 USD |
Verfolgen Sie den Zyklus der FundingObligation
Stripe erstellt nach Ablauf des aktuellen Kreditzeitraums eine neue FundingObligation
auf dem verbundenen Konto. Angenommen, Barbell hat einen Guthabenzeitraum von einem Monat, der am 15. eines jeden Monats endet. Das bedeutet, dass Stripe am 15. jeden Monats:
- Den Parameter
amount_
der aktuellentotal FundingObligation
finalisiert - Erstellt eine neue
FundingObligation
für den neuen Zeitraum
Status der FundingObligation
Jede FundingObligation
ändert den Status basierend auf dem in der CreditPolicy
festgelegten Kreditzeitraum und den mit Stripe und der Bank vereinbarten schriftlichen Kredit- oder Inkassorichtlinien.
Eine FundingObligation
kann einen der folgenden Status haben:
- Ausstehend: Für die
FundingObligation
fallen noch Ausgaben aus dem aktuellen Kreditzeitraum an und der Wertamount_
kann sich ändern.total - Nicht bezahlt: Der Parameter
amount_
in dertotal FundingObligation
ist finalisiert, wie durch den Zeitstempelfinalized_
angezeigt wird. Das Konto muss diese Verpflichtung zum Zeitstempelat due_
vollständig begleichen.at - Bezahlt: Die
FundingObligation
ist vollständig durch das verbundene Konto abbezahlt. - Überfällig: Die
FundingObligation
ist nicht vollständig bezahlt und der Zeitstempeldue_
ist abgelaufen. Stripe meldet möglicherweise überfälligeat FundingObligations
an Bankpartner. - Abgebucht Die
FundingObligation
hat die in Ihrer schriftlichen Kredit- oder Inkassorichtlinie angegebene Anzahl von Tagen bis zur Abbuchung überschritten. Bei der Einrichtung Ihres Programms konfiguriert Stripe die Anzahl der Tage bis zur Abbuchung, nachdem dieser Wert anhand Ihrer schriftlichen Kreditrichtliniendokumentation überprüft wurde. Sie können die Rückzahlung weiterhin vom verbundenen Konto einziehen, nachdem dieFundingObligation
den Status „Abgebucht“ erreicht hat. Stripe kann überfälligeFundingObligations
an Bankpartner melden. Kontaktieren Sie das Compliance-Team von Stripe, indem Sie eine Anfrage über das Formular für Änderungsanfragen an folgende Adresse senden:- Ändern Sie die Anzahl der Tage bis zur Abbuchung, wie in Ihrer Versicherungsdokumentation angegeben
- Planen Sie, Ihre ausgebuchten Schulden zu verkaufen
- Rückerstattung erforderlich: Die
FundingObligation
hat einen negativenamount_
, wenn die Plattform dem verbundenen Konto einen Betrag schuldet. Dies passiert nur, wenn ein verbundenes Konto einen Betrag aus Rückerstattungen oder gewonnenen Anfechtungen erhält, der den während des Kreditzeitraums ausgegebenen Betrag übersteigt.total
Das Feld due_
der FundingObligation
wird durch das Feld credit_
der FundingObligation
und das Feld days_
der CreditPolicy
bestimmt.
FundingObligations abrufen
Im Laufe der Zeit wird ein verbundenes Konto mehrere ausgezahlte (oder past_
) FundingObligation
-Instanzen und höchstens eine einzige aktuell ausstehende FundingObligation
haben. Um die FundingObligation
für den aktuellen Zeitraum abzurufen, führen Sie diesen Befehl aus:
Beispielantwort
[ { "id": "ifo_123", "livemode": true, "created": 1654628149, "amount_total": 10000, "amount_outstanding": 10000, "amount_paid": 0, "currency": "usd", "status": "unpaid", "due_at": 1654714851, "owed_to": "acct_123", "credit_period_starts_at": 1654625149, "credit_period_ends_at":1654713851, "paid_at": nil, "finalized_at": 1654713860, }, ]
Um FundingObligations
mit einem bestimmten Status abzurufen, übergeben Sie den spezifischen Statuswert, wenn Sie eine Liste von FundingObligations
anfordern. Dieser API-Aufruf ruft FundingObligations
mit dem status
past_
ab:
Transaktionen für eine FundingObligation abrufen
Rufen Sie die Liste der Transaktionen ab, die zu FundingObligation
eines verbundenen Kontos beigetragen haben, indem Sie den Parameter funding_obligation_for_account in der API-Anfrage zum Auflisten aller Transaktionen übergeben:
Beispielantwort
{ "object": "list", "url": "/v1/issuing/transactions", "has_more": false, "data": [ { "id": "ipi_123", "object": "issuing.transaction", // various other fields "funding_obligation_for_platform": "ifo_123", "funding_obligation_for_account": "ifo_456", // various other fields }, { "id": "ipi_123", "object": "issuing.transaction", // various other fields "funding_obligation_for_platform": "ifo_789", "funding_obligation_for_account": "ifo_456", // various other fields }, {...} ] }
Webhook-Übersicht
Zur Erinnerung, Sie können diese vier Webhooks überwachen:
issuing_
: Wird immer dann ausgelöst, wenn einecredit_ policy. created CreditPolicy
erstellt wird. Dies geschieht, wenn die Funktion für das verbundene Konto angefordert wird.issuing_
: Wird immer dann ausgelöst, wenn einecredit_ policy. updated CreditPolicy
aktualisiert wird. Dies kann passieren, wenn die Plattform die Richtlinie des verbundenen Kontos aktualisiert.issuing_
: Wird immer dann ausgelöst, wenn einefunding_ obligation. created FundingObligation
erstellt wird. Dies geschieht zu Beginn jedes neuen Kreditzeitraums für das verbundene Konto.issuing_
: Wird immer dann ausgelöst, wenn einefunding_ obligation. updated FundingObligation
aktualisiert wird. Dies geschieht immer dann, wenn die Finanzierungsverpflichtung den Status oder die Betragsfelder ändert oder aktualisiert wurde, um eine Rückzahlung anzuzeigen.
Die FundingObligation eines Kontos auszahlen
Die FundingObligation
zeigt an, welchen Betrag ein verbundenes Konto am Ende des Kreditzeitraums schuldet. Sie sind jedoch weiterhin für die Rückzahlung von dem verbundenen Konto verantwortlich. Verwenden Sie die Payment Intents API von Stripe, um das externe Bankkonto des verbundenen Kontos zu belasten (oder eine Kartenzahlung über Stripe Checkout oder Stripe Invoicing zu akzeptieren).
Stellen Sie sicher, dass Sie alle Zahlungen, die Sie von dem verbundenen Konto erhalten haben, in der FundingObligation
des Kontos erfassen, um das verfügbare Guthaben genau widerzuspiegeln. Stripe bestimmt, ob eine Autorisierung auf der Grundlage des verfügbaren Guthabens eines Kontos genehmigt werden soll. Stripe kann überfällige und ausgebuchte FundingObligations
an Bankpartner melden.
Rückzahlung einziehen
Sie können den besten Mechanismus wählen, um Rückzahlungen von Ihren Endnutzern und -nutzerinnen einzuziehen. Wir empfehlen jedoch die Verwendung der Payments APIs von Stripe, um alle Aufzeichnungen in Stripe zu speichern und einen besseren Abgleich der Kartenausgaben und Rückzahlungen der einzelnen Nutzer/innen zu ermöglichen. Bitte aktualisieren Sie die FundingObligation
entsprechend, nachdem Sie die Zahlung erfolgreich eingezogen haben. Dieser Schritt erfolgt nicht automatisch, wenn Sie die Payments APIs von Stripe verwenden. Stripe ermittelt past_
anhand des Parameters days_
, der in der CreditPolicy
festgelegt ist. Stripe ermittelt charged_
auf der Grundlage Ihrer schriftlichen Kredit- oder Inkassorichtlinie, die die Anzahl der Tage definiert, nach der eine past_
-Verpflichtung charged_
ist.
Erfassen Sie Rückzahlungen in FundingObligation
Nachdem Sie eine Zahlung von einem verbundenen Konto eingezogen haben, aktualisieren Sie dessen FundingObligation
, um die Rückzahlung anzuzeigen. FundingObligations
mit dem Status unpaid
, past_
oder charged_
wirken sich auf das verfügbare Guthaben aus, das das verbundene Konto ausgeben kann. Nehmen wir zum Beispiel an, Barbell hat ein Kreditlimit von 1.000 USD und das Unternehmen kauft ein Laufband für 900 USD. Für die FundingObligation
von Barbell werden 900 USD als geschuldeter amount_
ausgegeben. Dem Unternehmen stehen dann noch 100 USD zur Verfügung, die es ausgeben kann, bis die Tilgung der Schulden beginnt.
Nehmen wir an, Barbell zahlt am Ende der Kreditlaufzeit 500 USD an Gymbox zurück. Gymbox muss die FundingObligation
von Barbell aktualisieren, um die Rückzahlung widerzuspiegeln. Durch diese Aktualisierung wird der amount_
der FundingObligation
auf 400 USD reduziert und das verfügbare Guthaben von Barbell steigt von USD 100 auf 600 USD.
Angenommen, in den Kreditbedingungen von Barbell ist ein Zeitraum von 90 Tagen nach due_
für die Abbuchung des amount_
in der FundingObligation
festgelegt. Bei past_
über 90 Tage wird Barbells amount_
von 400 USD abgebucht. 30 Tage nach der Abbuchung des amount_
der FundingObligation
erhält Gymbox eine 100-prozentige Zahlung von USD von Barbell. Gymbox muss diese Rückzahlung mit dem Endpoint /pay
erfassen, um die Abbuchung von amount_
auf der FundingObligation
zu reduzieren. Dadurch erhöht sich das verfügbare Guthaben von 600 auf 700 USD. Wenn Gymbox die Kreditlinie von Barbell schließt und den Grund vor dem Einzug des vollständigen Betrags meldet, bleibt der abgebuchte amount_
bestehen und anschließend eingezogene Beträge können nicht mehr zur Reduzierung des amount_
verwendet werden.
Beispielantwort
{ "id": "ifo_123", "status": "unpaid", "amount_total": 90000, "amount_outstanding": 40000, "amount_paid": 50000, "owed_to": "acct_123", // other fields }
Dieser API-Aufruf erhöht den amount_
und verringert den amount_
für die FundingObligation
. Wenn amount_
für eine FundingObligation
gilt, ändert Stripe den Status der Verpflichtung in paid
, unabhängig davon, ob der vorherige Status unpaid
, past_
oder charged_
war. Diese Aktualisierungen lösen das Ereignis issuing_
aus.
Wir empfehlen, sowohl den Einzug der Rückzahlung als auch die Aktualisierung der FundingObligation
zu automatisieren und in aufeinander folgenden Aufrufen zusammenzufassen. Auf diese Weise aktualisieren Sie unmittelbar nach erfolgreichem Einzug der Rückzahlung die FundingObligation
des verbundenen Kontos, um Stripe darüber zu informieren, das verfügbare Guthaben zu erhöhen.
Aktualisieren Sie den gezahlten Betrag in der FundingObligation
Wenn Sie eine fehlerhafte Rückzahlung vornehmen oder den amount_
des verbundenen Kontos aus einem anderen Grund aktualisieren möchten, können Sie dies mit dem Endpoint /pay
über das Feld amount_
tun.
Beispielantwort
{ "id": "ifo_789", "status": "unpaid", "amount_total": 90000, "amount_outstanding": 45000, "amount_paid": 45000, "owed_to": "acct_123", // other fields }
Dadurch wird das Ereignis issuing_
gesendet.
Metadaten zu FundingObligations aktualisieren
Sie können die Metadaten zu einer FundingObligation
aktualisieren, um zusätzliche Daten mit einer FundingObligation
zu verknüpfen. Es empfiehlt sich beispielsweise, die OutboundPayment-ID aufzuzeichnen, die einer Rückzahlung entspricht.
Beispielantwort
{ "id": "ifo_789", "status": "unpaid", "amount_total": 90000, "metadata": { "repayment_id": "obp_1NUy3y2eZvKYlo2C15gktUET" }, "owed_to": "acct_123", // other fields }
Dadurch wird das Ereignis issuing_
gesendet.
Verfügbares Guthaben
Stripe stellt derzeit kein Feld zur Verfügung, das das verfügbare Guthaben des verbundenen Kontos anzeigt. Sie können diese Zahl mit der folgenden Formel berechnen:
verfügbares Guthaben = credit_ - sum(FundingObligation. )1 |
Die Gelder, die einer CA jederzeit zur Verfügung stehen, sind das verfügbare Guthaben und das Issuing-Guthaben.
1sum(FundingObligation.
) ist die Kurzform für die Summe der amount_
aller FundingObligations
im verbundenen Konto.
Geldbewegungen nachverfolgen
Sie müssen Ihren verbundenen Konten keinen Zugriff auf ein Guthabenkonto gewähren. Möglicherweise sollten Sie jedoch den Status von Autorisierungen, Transaktionen und Überweisungen verfolgen, die erstellt werden, wenn ein verbundenes Konto von Ihrer Plattform ausgezahlte Beträge ausgibt.
Gehen Sie von folgendem Ausgangsstatus aus:
Konto | Guthaben in Issuing |
---|---|
Issuing-Konto von Gymbox (Plattform) | 70 USD |
Issuing-Guthaben von Barbell (verbundenes Konto) | 0 USD |
Autorisierungen
Barbell, das bei Gymbox eine CreditPolicy
mit einem credit_
von 100 USD eingerichtet hat, gibt 10 USD aus. Dies führt zu einer Autorisierung von 10 USD auf dem Konto von Barbell:
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... } ], "card": {...}, ... }
Gleichzeitig wird dadurch das Issuing-Guthaben von Gymbox in derselben Höhe zurückgehalten. So wird sichergestellt, dass die Gelder zurückgestellt sind und nicht für Transaktionen durch die anderen verbundenen Konten von Gymbox verwendet werden können:
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrMkq3S", "object": "balance_transaction", "amount": -1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": -1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7x0N6", "object": "issuing.platform_hold", "amount": 1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGRkgcn7" }, "status": "available", "type": "issuing_authorization_hold" }
Das Guthaben beträgt jetzt:
Konto | Guthaben in Issuing |
---|---|
Issuing-Konto von Gymbox (Plattform) | 60 USD |
Issuing-Guthaben von Barbell (verbundenes Konto) | -10 USD |
Übertragungen und Transaktionserfassungen
Bevor Issuing-Autorisierungen erfasst und Issuing-Transaktionen erstellt werden, werden Gelder auf die verbundenen Konten übertragen. Anschließend werden die Rückstellungen von der Plattform freigegeben.
Auf dem Konto von Barbell wurde die Autorisierung aktualisiert und geschlossen, wodurch die zurückgehaltenen Gelder freigegeben wurden:
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... }, { "id": "txn_4t355646t54w2", "object": "balance_transaction", "amount": 1000, "type": "issuing_authorization_release", }, ], "card": {...}, "status": "closed", "transactions": [ { "id": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "object": "issuing.transaction", "amount": -1000, "authorization": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "balance_transaction": "txn_1345r1KCr4trgtrg0WfNdUCbG1w", ... } ... }
Die auf dem Konto der Plattform zurückgehaltenen Gelder werden ebenfalls freigegeben:
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrPz7bA", "object": "balance_transaction", "amount": 1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Released platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": 1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7m8Z3", "object": "issuing.platform_hold", "amount": -1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGR7bA4c" }, "status": "available", "type": "issuing_authorization_hold" }
Stripe überträgt Gelder von Gymbox auf das Issuing-Konto von Barbell und ein Transfer-Objekt wird erstellt:
{ "id": "tr_3JeQsp2eZvKYlo2C13DagtB0", "object": "transfer", "amount": 1000, "amount_reversed": 0, "balance_transaction": "txn_1032HU2eZvKYlo2CEPtcnUvl", "created": 1646912059, "currency": "usd", "description": null, "destination": "acct_1032D82eZvKYlo2C", "livemode": true, "metadata": {}, "reversals": { "object": "list", "data": [], "has_more": false, "url": "/v1/transfers/tr_3JeQsp2eZvKYlo2C13DagtB0/reversals" }, "reversed": false, "source_transaction": null, "issuing_transaction": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "metadata": {}, "source_balance": { "type": "issuing", }, // New destination_balance returned field links to the BT on the connected account side "destination_balance": { "type": "issuing", "issuing": { "balance_transaction": "txn_123", }, }, // ... other fields ... }
Diese Abfolge von Einbehaltung, Freigabe und Übertragung erfolgt, bevor Stripe die zugehörige Issuing-Transaktion erstellt. Das Guthaben beträgt jetzt:
Das Guthaben beträgt jetzt:
Konto | Guthaben in Issuing |
---|---|
Issuing-Konto von Gymbox (Plattform) | 60 USD |
Issuing-Guthaben von Barbell (verbundenes Konto) | 0 USD |
Wenn für eine Transaktion keine Originalautorisierung vorliegt und das verbundene Konto nicht über ausreichende Mittel verfügt, um diese abzudecken, erfolgt die Übertragung des Plattformguthabens und die Erstellung der Transaktion dennoch.
Rückerstattungen
Wenn ein verbundenes Konto eine Rückerstattung erhält, versucht Stripe festzustellen, ob es sich um eine Transaktion handelt, die aus dem Guthaben dieses verbundenen Kontos oder dem Plattformkonto finanziert wird. Wenn Stripe feststellt, dass die Finanzierung aus dem Guthaben des verbundenen Kontos erfolgt, wird das Geld wieder dem Guthaben des verbundenen Kontos gutgeschrieben. Wenn die Transaktion vom Konto der Plattform finanziert wird (z. B. vom Kreditrahmen des verbundenen Kontos), reduziert sich die FundingObligation
des verbundenen Kontos um diesen Betrag. Die Rückerstattung wird dann auf das Konto der Plattform überwiesen, da die Plattform Stripe bereits im Namen des verbundenen Kontos für die Transaktion bezahlt hat.
Nehmen wir an, Barbell hat eine FundingObligation
in Höhe von 100 USD hat. Wenn der Betrag zurückerstattet wird, dann:
- Die
FundingObligation
von Barbell wird von 100 auf 0 USD gesenkt - Die 100 USD werden auf das Issuing-Konto von Gymbox überwiesen, wodurch das Plattformguthaben um 100 USD erhöht wird.
Es ist möglich, dass der Parameter amount_
einer FundingObligation
negativ ist. Dies kommt vor, wenn die einzige Transaktion in einem Kreditzeitraum eine Rückerstattung ist und keine anderen Kartenausgaben erfolgen. Die FundingObligation
weist den Status „Rückerstattung erforderlich“ auf. Eine negative FundingObligation
kann auftreten, wenn Kartenausgaben anfallen, der vollständige Rückerstattungsbetrag diese jedoch übersteigt.
Anfechtungen
Wenn eine Kundin/ein Kunde eine Ausgabe-Transaktion für ein verbundenes Konto anficht, erfolgt die Anfechtung wie unter Anfechtungen in Issuing beschrieben. Verlorene Anfechtungen führen zu keiner Aktion (es werden keine Gutschriften an das verbundene Konto ausgestellt). Bei zu Ihren Gunsten entschiedenen Anfechtungen wird dem verbundenen Konto auf die gleiche Weise eine Gutschrift ausgestellt, wie im Abschnitt Rückerstattungen beschrieben.
Autorisierung abgelehnt
Autorisierungen, die für ein verbundenes Konto mit einer CreditPolicy
vorgenommen wurden, können aus folgenden Gründen abgelehnt werden:
- Das verbundene Konto versucht, Ausgaben über das verfügbare Kreditlimit hinaus zu tätigen. In diesem Fall verfügt das verbundene Konto möglicherweise über unbezahlte
FundingObligations
, die das verfügbare Guthaben reduziert haben. Achten Sie darauf, dass dieFundingObligations
Ihres verbundenen Kontos immer auf dem neuesten Stand sind, um eine Ablehnung derAuthorization
zu verhindern. - Ihr verfügbares Issuing-Plattformkonto erreicht Null und das verfügbare Issuing-Guthaben Ihres verbundenen Kontos liegt ebenfalls bei Null. Stocken Sie Ihr Issuing-Konto ausreichend auf, um Ablehnungen zu vermeiden.