# Accepter des paiements partiels pour les factures Découvrez comment capturer les paiements partiels effectués sur une facture. La plupart des *factures* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) de Stripe sont réglées en un seul paiement. Pour les factures plus importantes, vous pouvez accepter plusieurs paiements plus modestes. Vous pouvez utiliser le Dashboard ou l’API pour accepter des paiements partiels. ## Capturer des paiements partiels #### Dashboard Avant de débiter un client à partir du Dashboard, assurez-vous qu’il dispose d’un moyen de paiement enregistré. 1. Dans le Dashboard, accédez à **Facturation** > [Factures](https://dashboard.stripe.com/invoices). 1. Sélectionnez une facture à l’état `open`. 1. Sur la page des détails de la facture, cliquez sur **Débiter le client**. 1. Dans la boîte de dialogue **Débiter le client pour la facture**, mettez à jour le **Montant**. Vous pouvez débiter tout montant inférieur ou égal au total du solde restant sur la facture. 1. Cliquez sur **Débiter le client**. #### API Lorsque vous finalisez une [facture](https://docs.stripe.com/api/invoices.md), Stripe crée un paiement par défaut que vous pouvez utiliser pour régler la facture dans son intégralité. Vous ne pouvez pas modifier directement le PaymentIntent associé au paiement par défaut. Pour prendre en charge les paiements partiels, vous pouvez créer et associer un PaymentIntent distinct à votre facture. Créez un *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) pour le montant de la facture que vous souhaitez payer. L’objet PaymentIntent doit avoir les mêmes paramètres `currency` et `customer` que la facture, mais vous pouvez fixer librement son champ `amount`, à condition de ne pas dépasser le [montant restant dû](https://docs.stripe.com/api/invoices/object.md#invoice_object-amount_remaining) sur la facture. Une fois le PaymentIntent créé, renvoyez le `client_secret` au front-end pour finaliser le paiement : ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "automatic_payment_methods[enabled]=true" ``` Lorsque vous associez un paiement à une facture, Stripe crée un objet `InvoicePayment`. Pour consulter tous les paiements d’une facture, développez le champ [payments](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments). Associez l’objet PaymentIntent à la facture : ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/attach_payment \ -u "<>:" \ -d "payment_intent={{PAYMENTINTENT_ID}}" ``` En savoir plus sur l’utilisation de l’API Invoicing pour [recueillir les informations du paiement et effectuer le paiement](https://docs.stripe.com/invoicing/integration.md). ### Cycle de vie d’un paiement Chaque tentative de paiement effectuée par votre client est enregistrée dans la liste des [paiements](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments) de la facture. Voici le cycle de vie d’un paiement en général : 1. Créez un objet PaymentIntent. 1. Associez le PaymentIntent à la facture. 1. L’API ajoute automatiquement un objet InvoicePayment à la liste des `payments` de la facture. 1. Confirmez le PaymentIntent. 1. Si le paiement réussit, Stripe met à jour les paramètres `amount_paid` et `amount_remaining` de la facture. 1. Lorsque la facture est entièrement payée, Stripe assigne au paramètre `status` la valeur `paid`. L’association de l’état `succeeded` du PaymentIntent à une facture entraîne immédiatement la mise à jour de celle-ci. Dans le cas contraire, Stripe attendra la réussite du paiement avant de mettre à jour la facture. ## Paiements partiels pour les factures d’abonnement Pour les factures envoyées automatiquement par Stripe après finalisation, vous pouvez accepter les paiements partiels pour les [abonnements actifs](https://docs.stripe.com/billing/invoices/subscription.md). Si vous utilisez l’API, le paramètre [collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) est défini sur `send_invoice`. Les paiements partiels ne sont pas pris en charge pour les factures d’abonnement [facturées automatiquement](https://docs.stripe.com/invoicing/automatic-charging.md). Si vous utilisez l’API, le `collection_method` est défini sur `charge_automatically`. Le [cycle de vie d’un abonnement](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle) est pratiquement identique pour les factures d’abonnement avec paiement partiel. Cependant, les factures sont considérées comme payées uniquement lorsqu’elles sont réglées dans leur intégralité. Si vous utilisez l’API, cela signifie que `amount_remaining` correspond à `0` et l’état à `status=paid`. ## États des paiements de factures Chaque paiement de facture présente un [état](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments-data-status), qui vous permet de déterminer si un paiement a réussi sans avoir à récupérer l’objet PaymentIntent associé. Certains états limitent également les actions que vous pouvez effectuer : - Lorsqu’une facture comporte des paiements à l’état `open` ou `paid`, vous ne pouvez plus annuler ni [modifier](https://docs.stripe.com/invoicing/invoice-edits.md) la facture. - Lorsqu’une facture comporte des paiements à l’état `open`, vous ne pouvez plus la marquer comme non recouvrable. Si un paiement règle intégralement la facture, l’état passe à `paid`. L’état des factures d’abonnement ne change pas après l’application d’un paiement. Pour tout paiement sur une facture, autre que le PaymentIntent par défaut créé automatiquement par la facture, vous pouvez faire passer l’état du paiement de `open` à `canceled` en [annulant](https://docs.stripe.com/api/payment_intents/cancel.md) le PaymentIntent qui lui est associé. ## Suivre les factures partiellement payées Vous pouvez consulter l’état des factures partiellement payées sur la page [Factures](https://dashboard.stripe.com/invoices) du Dashboard. Ajoutez la colonne **Montant restant** pour afficher le montant restant dû sur la facture. Une fois que votre client a partiellement payé une facture, il voit le montant restant sur la facture et l’état `partially paid` dans son portail client. Vous pouvez effectuer l’une des actions suivantes sur une facture dont l’état est `partially paid` : - Envoyez la facture à un client pour paiement. - Modifiez [certains éléments de la facture](https://docs.stripe.com/invoicing/invoice-edits.md). Pour apporter des modifications plus importantes, créez une nouvelle facture et annulez l’ancienne. - Modifiez l’état de la facture pour afficher `paid` ou `uncollectible`. Pour tout paiement de facture qui n’est pas effectué à la date d’échéance, l’état `overdue` s’affiche en priorité. Si vous utilisez l’API, affichez les champs `amount_due` et `payments` pour afficher les détails de l’état de la facture. ## Éviter les trop-perçus de factures Si une facture comporte plusieurs paiements `open`, il est possible qu’un montant trop élevé ait été payé par erreur. Vous pouvez éviter les trop-perçus en annulant les paiements dont vous n’avez pas besoin. En cas de trop-perçu, Stripe crédite automatiquement les fonds excédentaires sur le [solde créditeur](https://docs.stripe.com/invoicing/customer/balance.md) du client. Les opérations sur solde de ces crédits sont de [type](https://docs.stripe.com/api/customer_balance_transactions/object.md#customer_balance_transaction_object-type)`invoice_overpaid`. Votre intégration peut écouter le webhook [invoice.overpaid](https://docs.stripe.com/api/events/types.md#event_types-invoice.overpaid) pour gérer les trop-perçus à l’aide d’une intégration personnalisée. Par exemple, pour rembourser un trop-perçu : 1. Écoutez le [webhook](https://docs.stripe.com/webhooks.md) `invoice.overpaid`. 1. Utilisez le champ [amount_overpaid](https://docs.stripe.com/api/invoices/object.md#invoice_object-amount_overpaid) pour déterminer le montant du remboursement. 1. Récupérez le [invoice_credit_balance](https://docs.stripe.com/api/customers/object.md#customer_object-invoice_credit_balance) du client. Si le solde du client est inférieur au montant du remboursement, le trop-perçu n’est pas remboursé, car il pourrait être imputé à une autre facture. 1. Ajustez le solde du client et soustrayez le crédit pour trop-perçu. 1. Créez un remboursement. ## Émettre un avoir Lorsque vous émettez un avoir, Stripe tente de diminuer le paramètre `amount_remaining` de la facture de la valeur `amount` de l’avoir. Si le montant de l’avoir est supérieur au montant restant dû de la facture, vous devez rembourser le montant excédentaire à votre client. Vous pouvez [prévisualiser](https://docs.stripe.com/api/credit_notes/preview.md) un avoir afin de déterminer le montant à rembourser à votre client. La valeur `pre_payment_amount` correspond au montant à déduire de la valeur `amount_remaining` de la facture, tandis que la valeur `post_payment_amount` indique le montant à rembourser à votre client. En savoir plus sur le [fonctionnement des avoirs](https://docs.stripe.com/invoicing/dashboard/credit-notes.md). ## Remboursements Lorsque vous créez un avoir avec un paramètre `refund_amount`, Stripe tente de rembourser le paiement de facture le plus récent. Si vous avez déjà effectué un remboursement pour ce paiement, ou si le montant à rembourser est supérieur au montant du paiement, le remboursement échoue. Pour créer un avoir dans ce type de situation, créez les remboursements séparément et associez-les à l’avoir à l’aide du paramètre [refunds](https://docs.stripe.com/api/credit_notes/create.md#create_credit_note-refunds). Aucune intervention de votre part n’est requise pour les factures à l’état `refunded`. ## Limitations Tenez compte des limites suivantes lors de l’utilisation de paiements partiels : - Le [Stripe Connector for NetSuite](https://docs.stripe.com/use-stripe-apps/netsuite/overview.md) ne prend pas en charge les paiements partiels. - Vos clients ne peuvent pas régler un montant partiel sur la [page de facture hébergée](https://docs.stripe.com/invoicing/hosted-invoice-page.md).