# 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.

> #### Ancienne intégration
> 
> La version&nbsp;v1 de Treasury pour les plateformes est une ancienne intégration qui ne prend pas en charge de nombreuses fonctionnalités introduites dans [Treasury pour les plateformes&nbsp;v2](https://docs.stripe.com/treasury/connect.md). Ne créez pas de nouvelle intégration&nbsp;v1.

Certains processus initiés en dehors de Treasury pour les plateformes entraînent une sortie de fonds d’un compte financier, notamment&nbsp;:

- Dépenser de l’argent avec une carte bancaire via [Stripe Issuing](https://docs.stripe.com/issuing/purchases/transactions.md#transactions)
- 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/treasury/connect/legacy/v1/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 "<<YOUR_SECRET_KEY>>:" \
  -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 "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "financial_account={{TREASURYFINANCIALACCOUNT_ID}}" \
  -d limit=1 \
  -d ending_before={{RECEIVED_DEBIT_ID}}
```

## Tester les ReceivedDebits

Treasury 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 `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)&nbsp;:

- `treasury.received_debit.created` à la création de l’événement `ReceivedDebit`.
