# Utiliser les montants de taxe provenant de systèmes non pris en charge avec Stripe Billing Utiliser les taxes calculées à partir d'un système externe non pris en charge avec Stripe Invoices. Si vous utilisez un moteur fiscal tiers qui n’a pas d’application prise en charge dans [Stripe App Marketplace](https://docs.stripe.com/tax/third-party-apps.md) pour calculer la taxe, vous pouvez définir manuellement les montants de taxe sur vos factures à l’aide du paramètre [taxer_amounts](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts). Pour que Stripe calcule les taxes pour vous, utilisez [Stripe Tax](https://docs.stripe.com/tax.md) ## Créer une facture avec des montants de taxe manuels Cette section décrit l’ajout manuel de montants de taxe aux sous-postes de facture. ### Créer une facture avec un poste de facture La première étape consiste à créer une facture. Nous partons du principe que vous avez déjà créé un client, mais si ce n’est pas le cas, veuillez vous reporter au guide concernant les [clients](https://docs.stripe.com/invoicing/customer.md). ```curl curl https://api.stripe.com/v1/invoices \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" ``` Les montants de taxe manuels peuvent uniquement être ajoutés aux sous-postes de facture. Ajoutez donc un poste de facture à la facture. ```curl curl https://api.stripe.com/v1/invoiceitems \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "invoice={{INVOICE_ID}}" \ -d amount=100 \ -d currency=usd ``` ### Mettre à jour le poste de facture avec les montants de taxe Utiliser le paramètre [tax_amounts](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts) pour définir directement les montants de taxe lorsque vous [mettez à jour des sous-postes de facture](https://docs.stripe.com/api/invoices/update_line.md). Vous devez fournir [tax_rate_data](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts-tax_rate_data) avec `tax_amounts`,  afin que les informations pertinentes soient affichées au client. L’exemple suivant montre comment mettre à jour une ligne de facture avec le paramètre `tax_amounts` : ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/lines/il_0O4tNe589O8KAxCGYD7OyXPP \ -u "<>:" \ -d "tax_amounts[0][amount]=10" \ -d "tax_amounts[0][taxable_amount]=100" \ -d "tax_amounts[0][tax_rate_data][percentage]=10" \ -d "tax_amounts[0][tax_rate_data][inclusive]=false" \ -d "tax_amounts[0][tax_rate_data][tax_type]=sales_tax" \ -d "tax_amounts[0][tax_rate_data][display_name]=Sales Tax" \ -d "tax_amounts[0][tax_rate_data][description]=Texas Sales Tax" \ -d "tax_amounts[0][tax_rate_data][jurisdiction]=Texas" \ -d "tax_amounts[0][tax_rate_data][jurisdiction_level]=state" \ -d "tax_amounts[0][tax_rate_data][country]=US" \ -d "tax_amounts[0][tax_rate_data][state]=TX" ``` Tous les champs sous `tax_amounts` sont obligatoires sauf `description`, `jurisdiction`, `jurisdiction_level`, `country`, `state` et `tax_type`. L’[objet sous-poste de facture](https://docs.stripe.com/api/invoice-line-item/object.md) renvoie un champ `tax_amounts`. ```json { id: "il_0O4tNe589O8KAxCGYD7OyXPP", object: "line_item", amount: 100, amount_excluding_tax: 100, currency: "usd", ... tax_amounts: [ { amount: 10, inclusive: false, tax_rate: "txr_0Ns7kW589O8KAxCGXoi7EAuS", taxability_reason: null, taxable_amount: 100 } ], tax_rates: [], ... } ``` > Stripe crée ou réutilise automatiquement un taux de taxe existant en fonction de `tax_rate_data`. Cependant, Stripe calcule uniquement le montant des taxes sur la facture en fonction du paramètre amount. Les autres valeurs, telles que le taux de taxe, ne sont utilisées qu’à des fins d’affichage sur la facture. Aucune validation n’est exécutée sur ces champs pour s’assurer qu’ils sont cohérents avec les montants de taxe indiqués. ### Finaliser la facture Une fois que tous les postes de facture ont été mis à jour avec les montants des taxes, vous devez finaliser la facture. Les montants de taxe ne peuvent pas être modifiés après la finalisation de la facture. Reportez-vous au guide de [modification de facture](https://docs.stripe.com/invoicing/invoice-edits.md) si vous devez modifier la facture après sa finalisation. ```curl curl -X POST https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/finalize \ -u "<>:" ``` ## Stripe crée automatiquement des taux de taxe Pour les montants de taxe manuels, Stripe exige des informations sur le taux de taxe correspondant. Le taux de taxe n’est utilisé que pour présenter des informations aux clients. Il n’est utilisé dans aucun calcul. Stripe crée automatiquement des objets de taux de taxe en arrière-plan d’après `tax_rate_data`. Si les mêmes données de taux de taxe sont transmises plusieurs fois, Stripe référence l’objet de taux de taxe existant au lieu d’en créer un autre. Les champs suivants permettent de dédupliquer le taux de taxe : `percentage`, `inclusive`, `display_name`, `jurisdiction`, `jurisdiction_level`, `country`, `state`, et `tax_type`. Dans cet exemple, supposons qu’un deuxième sous-poste de facture ait été mis à jour sur la facture de la section précédente avec le même `tax_rate_data`. ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/lines/il_0P6nbg589O8KAxCGRWBJAdNV \ -u "<>:" \ -d "tax_amounts[0][amount]=50" \ -d "tax_amounts[0][taxable_amount]=500" \ -d "tax_amounts[0][tax_rate_data][percentage]=10" \ -d "tax_amounts[0][tax_rate_data][inclusive]=false" \ -d "tax_amounts[0][tax_rate_data][tax_type]=sales_tax" \ -d "tax_amounts[0][tax_rate_data][display_name]=Sales Tax" \ -d "tax_amounts[0][tax_rate_data][description]=Texas Sales Tax" \ -d "tax_amounts[0][tax_rate_data][jurisdiction]=Texas" \ -d "tax_amounts[0][tax_rate_data][jurisdiction_level]=state" \ -d "tax_amounts[0][tax_rate_data][country]=US" \ -d "tax_amounts[0][tax_rate_data][state]=TX" ``` ```json { id: "il_0P6nbg589O8KAxCGRWBJAdNV", object: "line_item", amount: 100, amount_excluding_tax: 100, currency: "usd", ... tax_amounts: [ { amount: 10, inclusive: false, tax_rate: "txr_0Ny6QR589O8KAxCGo6MKGPxM", taxability_reason: null, taxable_amount: 100 } ], tax_rates: [], ... } ``` Les deux sous-postes de facture ont le même ID `tax_rate` sous `tax_amount`. Stripe gère la création et la déduplication des taux de taxe afin de simplifier la tâche des entreprises. Bien que l’ID `tax_rate` corresponde à un objet de taux de taxe valide, les ID mappés à des taux de taxe créés automatiquement ne peuvent pas être transmis dans le champ `tax_rates` de l’API. La seule exception à cette règle est l’endpoint de création d’avoirs. ## Émettre un avoir Les avoirs permettent d’ajuster les factures sans avoir à annuler la facture. Lors de l’émission d’un avoir pour un sous-poste de facture avec des montants de taxe manuels, l’API a besoin d’informations supplémentaires pour le créer avec précision. ### Créer un avoir L’endpoint de création d’avoirs accepte également le paramètre `tax_amounts`. Ce champ est obligatoire lorsque le sous-poste de facture correspondant comporte des montants de taxe manuels. Cela permet de garantir une comptabilité précise de l’avoir et d’assurer la cohérence avec vos factures. ```curl curl https://api.stripe.com/v1/credit_notes \ -u "<>:" \ -d "invoice={{INVOICE_ID}}" \ -d reason=duplicate \ -d "lines[0][type]=invoice_line_item" \ -d "lines[0][invoice_line_item]=il_0O4tNe589O8KAxCGYD7OyXPP" \ -d "lines[0][tax_amounts][0][amount]=10" \ -d "lines[0][tax_amounts][0][taxable_amount]=100" \ -d "lines[0][tax_amounts][0][tax_rate]=txr_0Ns7kW589O8KAxCGXoi7EAuS" ``` ## Limites Gardez à l’esprit les contraintes suivantes lorsque vous travaillez avec des montants de taxe manuels. ### Les postes de facture n’ont pas de montant de taxe Les montants de taxe manuels peuvent uniquement être ajoutés aux sous-postes de facture. ### Les champs taxable_amount et tax_rates ne sont pas validés Le montant d’imposition et le taux de taxe transmis dans la requête ne sont utilisés qu’à des fins d’affichage. Ils ne sont pas validés par rapport au montant de taxe indiqué dans la requête. ### Impossible de mélanger tax_amounts et tax_rates Un sous-poste de facture ne peut pas comporter de montants de taxe manuels s’il possède également un taux de taxe, et inversement. De plus, les sous-postes de facture ne peuvent pas comporter de montants de taxe manuels si la facture présente un taux de taxe par défaut ou si l’un des autres sous-postes de la facture présente un taux de taxe. ### tax_amounts peut devenir obsolète lors de la mise à jour d’autres champs Les montants de taxe manuels existants restent sur le poste de facture, sauf s’ils sont directement modifiés. Cela peut rendre des montants de taxe obsolètes lorsque vous [mettez à jour le poste de facture](https://docs.stripe.com/api/invoiceitems/update.md) avec des champs associés à son montant, tels que `amount`, `discounts` ou `price`. ### Les taux de taxe créés automatiquement ne peuvent pas être utilisés directement Stripe crée automatiquement des objets de taux de taxe pour les montants de taxe manuels. Ces taux de taxe ne peuvent pas être directement référencés sur les endpoints liés aux factures ou aux paiements, à l’exception de l’endpoint des avoirs. Ils ne peuvent pas non plus être mis à jour directement et ne seront pas inclus dans l’endpoint de tous les taux de taxe. Cependant, les données du taux de taxe sont accessibles en appelant l’endpoint de récupération du taux de taxe avec son token.