# Transférer des fonds à l'aide d'objets CreditReversal

Découvrez comment restituer des fonds provenant de crédits reçus qui viennent alimenter votre 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.

L’annulation d’un [ReceivedCredit](https://docs.stripe.com/api/treasury/received_credits.md) entraîne la création d’une [CreditReversal](https://docs.stripe.com/api/treasury/credit_reversals.md). Vous ne pouvez annuler des `ReceivedCredits` que sous certaines conditions (détaillées dans le tableau suivant). Pour savoir si vous pouvez annuler un `ReceivedCredit`, vous devez tenir compte du réseau utilisé et du flux source.

Le sous-hachage `reversal_details` de l’objet `ReceivedCredit` peut présenter les combinaisons de valeurs suivantes, qui permettent de déterminer si vous pouvez annuler ou non le `ReceivedCredit`.

| MOTIF DE LA RESTRICTION | DATE LIMITE (HORODATAGE EPOCH) | EXEMPLE DE SCÉNARIO |
| --- | --- | --- |
| `source_flow_restricted` | `null` | Un `ReceivedCredit` du réseau Stripe qui est le résultat d’un flux autre qu’un `OutboundPayment`. Stripe ne permet pas aux utilisateurs d’annuler ces `ReceivedCredits`. |
| `network_restricted` | `null` | Les contraintes du réseau empêchent Stripe d’autoriser l’annulation de certains `ReceivedCredits`, comme un `ReceivedCredit` issu d’un virement bancaire ou d’un transfert par paiement en temps réel (RTP). |
| `null` | `{{TIMESTAMP}}` | Un `ReceivedCredit`, qui est annulable, mais uniquement jusqu’à l’horodatage indiqué dans `deadline`. Les `ReceivedCredits` ACH ne peuvent être annulés que pendant un certain délai. |
| `deadline_passed` | `{{TIMESTAMP}}` | Un `ReceivedCredit` qui était annulable jusqu’à l’horodatage spécifié dans `deadline`, mais qui n’est plus annulable car la `deadline`est échue. Après leur création, les `ReceivedCredits` ACH ne peuvent être annulés que pendant une durée limitée. |
| `already_reversed` | `null` | Un `ReceivedCredit`qui est déjà annulé possède cette `restricted_reason`. Dans certains cas, sa valeur `deadline` peut être non nulle. |
| `null` | `null` | Vous pouvez annuler des `ReceivedCredits` à tout moment si `restricted_reason` et `deadline` ont la valeur `null`. |

## Créer un CreditReversal

Utilisez `POST /v1/treasury/credit_reversals` pour créer un `CreditReversal`. Définissez le paramètre `received_credit` dans le corps de la requête sur la valeur de l’ID du `ReceivedCredit` à annuler.

> Vous ne pouvez pas mettre à jour des `CreditReversals`, vous devez donc définir les [métadonnées](https://docs.stripe.com/api/treasury/credit_reversals/create.md#create_credit_reversal-metadata) facultatives lors de leur création.

La requête suivante permet de créer un `CreditReversal` à partir de la valeur de l’ID du `ReceivedCredit` du paramètre `received_credit` requis. Elle définit également la valeur des métadonnées (facultatif).

```curl
curl https://api.stripe.com/v1/treasury/credit_reversals \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d received_credit={{RECEIVED_CREDIT_ID}} \
  -d "metadata[reason]=Because"
```

Sauf échec de l’opération, la réponse renvoie le nouvel objet `CreditReversal`.

```json
{
    "id": "{{CREDIT_REVERSAL_ID}}",
    "object": "credit_reversal",
    "amount": 1000,
    "currency": "usd",
    "financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
    "hosted_regulatory_receipt_url": "https://payments.stripe.com/regulatory-receipt/{{URL_ID}}",
    "livemode": false,
    "metadata": {
        "csr_id": "CSR-12"
    },
    "network": "ach",
    "received_credit": "{{RECEIVED_CREDIT_ID}}",
    "status": "processing",
    "status_transitions": {
        "posted_at": null
    },
    "transaction": "{{TRANSACTION_ID}}"
}
```

## Récupérer un CreditReversal

Utilisez `GET /v1/treasury/credit_reversals/{{CREDIT_REVERSAL_ID}}` pour récupérer le `CreditReversal` avec l’ID associé.

```curl
curl https://api.stripe.com/v1/treasury/credit_reversals/{{CREDIT_REVERSAL_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}"
```

La réponse renvoie l’objet `CreditReversal` spécifique.

#### JSON (commenté)

```json
{
  "id": "{{CREDIT_REVERSAL_ID}}",
  "object": "credit_reversal",
  "livemode": "{{Boolean}}",
  "created": "{{Timestamp}}",
  "financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
  "amount": 1000,
  "currency": "usd",
  // The ReceivedCredit that was reversed
  "received_credit": "{{RECEIVED_CREDIT_ID}}",
  // The rails used to reversed. Always the same as that of the ReceivedCredit
  "network": "ach",
  "status": "processing" | "posted",
  "status_transitions": {
    "posted_at": null | "{{Timestamp}}"
  },
  // Transaction representing balance impact of the CreditReversal
  "transaction": "{{TRANSACTION_ID}}",
  // A unique, Stripe-hosted direct link to the regulatory receipt for the CreditReversal
  "hosted_regulatory_receipt_url": "{{Url}}",
  // A map of String-String intended for users to use custom data
  "metadata": {}
}
```

## Répertorier les CreditReversals

Utilisez `GET /v1/treasury/credit_reversals` pour récupérer la liste des `CreditReversals` du compte financier avec l’ID fourni dans le paramètre obligatoire `financial_account`. Vous pouvez filtrer la liste en utilisant les paramètres de liste standard, par `status` ou par ID `ReceivedCredit` à l’aide du paramètre `received_credit`.

```
{
  // Standard list parameters
  "limit", "starting_after", "ending_before",
  // Filter by status
  "status": "processing" | "posted",
  // Filter by FinancialAccount (Required)
  "financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
  // Filter by ReceivedCredit
  "received_credit": "{{RECEIVED_CREDIT_ID}}"
}
```

La requête suivante renvoie les trois annulations de crédits les plus récentes avec un état `posted` pour le compte financier spécifié.

```curl
curl -G https://api.stripe.com/v1/treasury/credit_reversals \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d limit=3 \
  -d status=posted \
  -d "financial_account={{TREASURYFINANCIALACCOUNT_ID}}"
```

Sauf échec de l’opération, la réponse renvoie la liste pertinente des [objets CreditReversal](https://docs.stripe.com/api/treasury/credit_reversals.md).

## Tester les CreditReversals

Pour tester CreditReversals, vous devez d’abord créer des [ReceivedCredits de test](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/into/credit-reversals.md#testcr). Ensuite, utilisez `POST /v1/treasury/credit_reversals` et indiquez l’ID du `ReceivedCredit` de test dans le paramètre `received_credit` afin de créer un `CreditReversal` de test.

## Webhooks CreditReversal

Stripe émet les événements `CreditReversal` suivants à votre endpoint de [webhook](https://docs.stripe.com/webhooks.md)&nbsp;:

- `treasury.credit_reversal.created` à la création du `CreditReversal`.
- `treasury.credit_reversal.posted` lors de la comptabilisation du `CreditReversal`.
