# Transactions Issuing Comment utiliser Issuing pour gérer des transactions. Une fois qu’une [autorisation](https://docs.stripe.com/issuing/purchases/authorizations.md) est approuvée et capturée, le `status` de l’autorisation est défini sur `closed`, et un objet [Transaction](https://docs.stripe.com/api.md#issuing_transaction_object) est créé. Cela survient généralement sous 24 heures. Cependant, les hôtels, les compagnies aériennes et les sociétés de location de voiture peuvent capturer une autorisation jusqu’à 31 jours plus tard. Lorsqu’une autorisation est capturée, deux choses surviennent. - Le `status` de l’autorisation est défini sur `closed`, libérant le montant de l’achat maintenu pour cette autorisation. Une [transaction de solde](https://docs.stripe.com/reports/balance-transaction-types.md) de type `issuing_authorization_release` est créée pour représenter cette action. - Un nouvel objet de transaction de type `capture` est créé. Le montant de l’achat est déduit du [solde utilisé pour Issuing](https://docs.stripe.com/issuing/funding/balance.md). (See full diagram at https://docs.stripe.com/issuing/purchases/transactions) Les [contrôles des dépenses](https://docs.stripe.com/issuing/controls/spending-controls.md), les [contrôles des autorisations en temps réel](https://docs.stripe.com/issuing/controls/real-time-authorizations.md) et les contrôles d’état de la carte (si elle est active ou non) ne s’appliquent pas à la capture. Ceux-ci peuvent être utilisés pour déterminer si les autorisations sont approuvées, mais les captures pour les autorisations approuvées aboutissent toujours. ## Traitement d’autres transactions En plus des autorisations régulières, il existe d’autres cas que vous devriez savoir gérer. #### Remboursements Un remboursement est une transaction de `type` `refund`. Lorsque nous créons une transaction représentant un remboursement ou un crédit, nous essayons de la lier à l’autorisation de paiement initiale. Cependant, les remboursements ne sont pas toujours liés à ce paiement ou à cette autorisation d’origine, des erreurs peuvent donc se produire. Il se peut que nous l’associons à une autorisation sans rapport ou qu’il nous soit impossible de l’associer à l’autorisation correspondante (par exemple, si la carte est créditée au lieu d’être remboursée). Dans ce cas, le champ `authorization` de la transaction est défini sur `null` et la transaction ne sera pas liée à l’autorisation. Nous traitons tous les remboursements et crédits de la même manière, indépendamment de leur lien avec une autorisation de paiement. > Les remboursements seront toujours traités et crédités auprès de vous même si le [status](https://docs.stripe.com/api/issuing/cards/object.md#issuing_card_object-status) de votre carte bancaire est `inactive` ou `canceled`. ### Exemple de remboursement standards ```json { "id": "ipi_1GTG10EEsyYlpYZ9VJn2xV3B", "object": "issuing.transaction","amount": 100, "authorization": "iauth_1GBZQyEEsyYlpYZ9255L8GQC", "balance_transaction": null, "card": "{{CARD_ID}}", "cardholder": null, "created": 1585783834, "currency": "usd", "livemode": false, "merchant_amount": 100, "merchant_currency": "usd", "merchant_data": { "category": "taxicabs_limousines", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94111", "state": "CA", "url": null }, "metadata": {},"type": "refund" } ``` ### Annulations de remboursement Dans de rares cas, un remboursement peut avoir besoin d’être annulé. Cela se produit généralement lorsque des remboursements ont été traités en double et qu’un remboursement doit être annulé. Les annulations de remboursement sont représentées par des transactions dont le `type` est défini sur `refund` et dont le champ `amount` est négatif (le champ `amount` est positif pour les remboursements standards). Par exemple, si un marchand traite accidentellement deux remboursements de 17,70 USD pour la même transaction, le système crée une transaction d’annulation de remboursement d’un montant de -17,70 USD (ou un montant similaire, compte tenu des différences de change) pour annuler l’un des remboursements en double. ```json { "id": "ipi_1SftmD05sFo7Lo8prb0oyBgc", "object": "issuing.transaction","amount": -1770, "authorization": "iauth_1GBZQyEEsyYlpYZ9255L8GQC", "balance_transaction": null, "card": "{{CARD_ID}}", "cardholder": null, "created": 1585783834, "currency": "usd", "livemode": false, "merchant_amount": -1770, "merchant_currency": "usd", "merchant_data": { "category": "taxicabs_limousines", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94111", "state": "CA", "url": null }, "metadata": {},"type": "refund" } ``` ### Tester les remboursements Pour simuler la création d’une transaction de remboursement, vous pouvez utiliser l’[API Transaction Refund](https://docs.stripe.com/api/issuing/transactions/test_mode_refund.md) dans les assistants de test d’Issuing. ```curl curl -X POST https://api.stripe.com/v1/test_helpers/issuing/transactions/{{ISSUINGTRANSACTION_ID}}/refund \ -u "<>:" ``` Pour créer une transaction de remboursement qui ne soit pas liée à une autorisation, utilisez l’[API Create Unlinked Refund](https://docs.stripe.com/api/issuing/transactions/test_mode_create_unlinked_refund.md) dans les assistants de test d’Issuing. ```curl curl https://api.stripe.com/v1/test_helpers/issuing/transactions/create_unlinked_refund \ -u "<>:" \ -d "card={{ISSUINGCARD_ID}}" \ -d amount=1000 ``` #### Capture partielle Les marchands peuvent capturer un montant inférieur au montant autorisé. Ainsi, une transaction peut afficher un montant inférieur à celui de l’autorisation correspondante. Dans ce cas, le montant des fonds bloqués par Stripe pour une autorisation correspond à la différence entre le montant de l’autorisation et celui de tous les montants des transactions de capture associées. ### Tests Pour simuler la capture d’une autorisation inférieure au montant autorisé, vous pouvez utiliser l’[API Authorization Capture](https://docs.stripe.com/api/issuing/authorizations/test_mode_capture.md) dans les assistants de test d’Issuing. ```curl curl https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" \ -d capture_amount=1000 ``` #### Surcapture Les entreprises relevant de certaines [catégories de marchand](https://docs.stripe.com/issuing/categories.md) (notamment la location de véhicules, les bars et restaurants et les transports terrestres) ne connaissent pas le montant final de la transaction au moment de l’autorisation. Ces entreprises peuvent autoriser une carte pour un montant, puis capturer des fonds supérieurs à ce montant. Par exemple, un restaurant autorise souvent un paiement pour le montant de la note, puis capture un montant qui inclut le pourboire. Dans ce cas, le montant autorisé est une estimation assez proche du montant à capturer. Cependant, dans le cas d’un transport terrestre, le montant autorisé est en général un montant minimal, tandis que le montant capturé reflète la transaction réellement effectuée par le titulaire de la carte. Parfois le montant supplémentaire capturé est excessif et peut être le résultat d’un comportement frauduleux. C’est à vous (ou au titulaire de la carte) de détecter et de [contester](https://docs.stripe.com/issuing/purchases/disputes.md) les transactions illégitimes. La surcapture étant souvent légitime, vous ne pouvez pas bloquer ces transactions. ### Tests Pour simuler la capture d’une autorisation supérieure au montant autorisé, vous pouvez utiliser l’[API Authorization Capture](https://docs.stripe.com/api/issuing/authorizations/test_mode_capture.md) dans les assistants de test d’Issuing. ```curl curl https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" \ -d capture_amount=1000 ``` #### Multicaptures Certaines [catégories de marchands](https://docs.stripe.com/issuing/categories.md) (dont les croisiéristes, les compagnies aériennes ou les compagnies de chemins de fer) peuvent autoriser une transaction, puis capturer les fonds en plusieurs fois. Cette situation peut se produire lorsque vous achetez plusieurs articles et que ceux-ci sont expédiés séparément à mesure de leur disponibilité. Cela entraîne la création de plusieurs [événements de webhook](https://docs.stripe.com/api/events/types.md#event_types-issuing_authorization.updated) `issuing_authorization.updated` et de plusieurs [transactions](https://docs.stripe.com/api.md#issuing_transaction_object). ### Tests Pour simuler plusieurs captures correspondant à une même autorisation, vous pouvez utiliser l’[API Authorization Capture](https://docs.stripe.com/api/issuing/authorizations/test_mode_capture.md) dans les assistants de test d’Issuing. ```curl curl https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" \ -d capture_amount=1000 \ -d close_authorization=false ``` Vous pouvez capturer l’autorisation à plusieurs reprises avec le paramétrage `close_authorization = false`. Pour fermer l’autorisation, définissez cette valeur sur `true` ou omettez le paramètre. #### Forcer la capture Les marchands peuvent initier une capture en ayant reçu une autorisation refusée, ou même sans autorisation. Dans tous les cas, Stripe créé les objets de la transaction et nous déduisons le montant capturé de votre solde Issuing , puis l’envoyons au marchand. Si nous ne recevons aucune autorisation, les objets de la transaction ne seront pas liés à l’objet de l’autorisation. Parfois ces transactions correspondent à des achats légitimes. Dans d’autres cas, elles correspondent à des achats non autorisés ou à un comportement frauduleux. C’est à vous (ou au détenteur de la carte) de reconnaître lorsque cela est le cas et de [contester](https://docs.stripe.com/issuing/purchases/disputes.md) les transactions illégitimes. Comme certaines de ces transactions sont légitimes, vous ne pouvez pas les bloquer. Un paiement à bord d’un avion est un exemple de transaction légitime sans autorisation. Les terminaux utilisés dans les avions ne sont pas connectés à Internet en général. Les achats effectués pendant les vols ne peuvent pas créer d’autorisations et créent à la place des transactions envoyées après l’atterrissage de l’avion. ```json { "id": "ipi_1GTG10EEsyYlpYZ9VJn2xV3B", "object": "issuing.transaction", "amount": -100,"authorization": null, "balance_transaction": null, "card": "{{CARD_ID}}", "cardholder": null, "created": 1585783834, "currency": "usd", "livemode": false, "merchant_amount": -100, "merchant_currency": "usd", "merchant_data": { "category": "airlines_air_carriers", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94111", "state": "CA", "url": null }, "metadata": {}, "type": "capture" } ``` ### Tests Pour simuler la création d’une capture forcée, vous pouvez utiliser l’[API Transaction Create Force Capture](https://docs.stripe.com/api/issuing/transactions/test_mode_create_force_capture.md) dans les assistants de test d’Issuing. ```curl curl https://api.stripe.com/v1/test_helpers/issuing/transactions/create_force_capture \ -u "<>:" \ -d "card={{ISSUINGCARD_ID}}" \ -d amount=100 ```