# Transférer des fonds à l'aide d'objets ReceivedDebit Découvrez comment les titulaires de comptes externes peuvent retirer des fonds d'un compte financier. Certains processus initiés en dehors de Financial Accounts pour les plateformes entraînent une sortie de fonds d’un compte financier, notamment : - Dépenser de l’argent avec une carte bancaire via [Stripe Issuing](https://docs.stripe.com/issuing/purchases/transactions.md#transactions-with-financial-accounts-for-platforms) - Retirer de l’argent sur un compte financier et le déposer sur un compte externe via des prélèvements ACH - Retirer de l’argent d’un compte financier d’une plateforme pour le déposer sur son solde Stripe Payments sur la même plateforme à l’aide de [recharges](https://docs.stripe.com/financial-accounts/connect/moving-money/payouts.md#top-ups) Ces mouvements de fonds génèrent des objets `ReceivedDebit`. Vous ne créez pas ces objets directement, vous observez seulement leur création à l’aide de webhooks. Dans la grande majorité des cas, si les fonds du compte sont insuffisants pour effectuer l’opération, le `ReceivedDebit` échoue. ## Récupérer un ReceivedDebit Utilisez `GET /v1/treasury/received_debits/{{RECEIVED_DEBIT_ID}}` pour récupérer le `ReceivedDebit` avec l’ID associé. ```curl curl https://api.stripe.com/v1/treasury/received_debits/{{RECEIVED_DEBIT_ID}} \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" ``` Sauf échec de l’opération, la réponse renvoie l’objet `ReceivedDebit` et l’ID associé. Certains des paramètres de la réponse comportent des informations supplémentaires qui ne sont renvoyées que si vous les ajoutez comme valeurs au paramètre `expand[]`. Les champs que vous pouvez développer affichent le commentaire “Expandable”, comme illustré dans l’exemple de réponse suivant. Pour en savoir plus sur le développement des objets renvoyés, consultez la section [consacrée à ce sujet](https://docs.stripe.com/api/expanding_objects.md). #### JSON (commenté) ```json { "id": "{{RECEIVED_DEBIT_ID}}", "object": "received_debit", "livemode": Boolean, "created": Timestamp, // The FinancialAccount funds have been pulled from "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // Expandable "amount": 1000, "currency": "usd", "description": "Testing", // ReceivedCredits are created with a status of either succeeded (approved) or failed // (declined). When failed, no Transaction is created. The failure reason can be found // under "failure_code". "status": "succeeded" | "failed", // The network that was used for this movement // Can only be ach today "network": "ach", // Information about how the debit was created. "received_payment_method_details": { "type": "us_bank_account" | "balance" | "financial_account", // Only set if type is `us_bank_account`. // This contains information of the source external bank account. "us_bank_account": nil | { "bank_name": String, "routing_number": "12341234", "last4": "6789" }, // Only set if type is `financial_account`. // This contains information of the source FinancialAccount. "financial_account": nil | { "id": "{{DESTINATION_FINANCIAL_ACCOUNT_ID}}" }, // Only set if type is `balance`. // This is only set when the source is a Payout. "balance": nil | "payments", "billing_details": nil | { "name": nil | String, "phone": nil | String, "email": nil | String, "address": nil | { "line1": nil | String, "line2": nil | String, "city": nil | String, "state": nil | String, "postal_code": nil | String, "country": nil | String } } }, // A unique, Stripe-hosted direct link to the regulatory receipt for the ReceivedDebit "hosted_regulatory_receipt_url": Url, "reversal_details": { "restricted_reason": nil | "source_flow_restricted" | "network_restricted" | "deadline_passed" | "already_reversed", "deadline": nil | Timestamp, }, "linked_flows": { // DebitReversals allow you to reverse a ReceivedDebit as long as it's before the reversal_details['deadline'] // If reversed, the ReceivedDebit will link to the DebitReversal. "debit_reversal": nil | "{{DEBIT_REVERSAL_ID}}", "returns_flow": nil | "{{INBOUND_TRANSFER_ID}}", }, // nil when status succeeded "failure_code": "insufficient_funds" | "account_closed" | "account_frozen", "failure_message": "The ReceivedDebit could not be completed because the Financial Account doesn't have a sufficient balance available. Please try again using an amount less than or equal to the Financial Account’s available balance." | "Funds can't be sent or withdrawn from this Financial Account because it has been closed. Please re-open the account, or try again with another Financial Account." | "Funds can't be sent or withdrawn from this Financial Account because it has been frozen.", // Transaction created by the ReceivedDebit. Only set for succeeded ReceivedDebits. "transaction": nil | "{{TRANSACTION_ID}}", // Expandable } ``` ## Répertorier les ReceivedDebits Utilisez `GET /v1/treasury/received_debits` pour récupérer tous les `ReceivedDebits` d’un compte financier. Vous devez indiquer l’ID d’un compte financier pour le paramètre `financial_account`. Vous pouvez filtrer les résultats en utilisant les paramètres de liste standard ou par `status`. ```json { // Standard list parameters "limit", "starting_after", "ending_before", // Filter by FinancialAccount (Required) "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // Filter by status "status": "succeeded" | "failed" } ``` La requête suivante permet de récupérer le dernier [objet ReceivedDebit](https://docs.stripe.com/api/treasury/received_debits/object.md) ayant abouti avant le `ReceivedDebit` fourni pour le compte financier identifié. ```curl curl -G https://api.stripe.com/v1/treasury/received_debits \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d financial_account="{{TREASURYFINANCIALACCOUNT_ID}}" \ -d limit=1 \ -d ending_before={{RECEIVED_DEBIT_ID}} ``` ## Tester les ReceivedDebits Financial Accounts pour les plateformes fournit des endpoints de test pour les objets `ReceivedDebit`. Dans les environnements de test, utilisez la méthode `POST /v1/test_helpers/treasury/received_debits` pour simuler la création d’un `ReceivedDebit`. Vous ne pouvez pas créer d’objets `ReceivedDebit` en mode production. L’utilisation de cet endpoint vous permet donc de tester le flux de fonds lorsqu’un tiers initie la création d’un `ReceivedDebit`. Définissez `financial_account` sur l’ID du compte financier à partir duquel envoyer l’argent. Définissez le `network` sur `ach` et fournissez éventuellement les détails de l’adresse financière ABA pour le paramètre `source_details.aba`. Comme en mode production, les `ReceivedDebits` de test échouent si les fonds disponibles sont insuffisants. ## Webhooks ReceivedDebit Stripe envoie les événements `ReceivedDebit` suivants à votre endpoint de [webhook](https://docs.stripe.com/webhooks.md) : - `treasury.received_debit.created` à la création de l’événement `ReceivedDebit`.