# Stripe Tax avec les PaymentIntents
Calculez et collectez la taxe dans des tunnels de paiement personnalisés à l’aide de l’API Stripe Tax.
Utilisez l’API Stripe Tax pour calculer et collecter la taxe dans votre intégration PaymentIntents. Après le calcul de la taxe, associez le calcul à un PaymentIntent et Stripe enregistre la transaction à des fins de reporting.
> #### Choisissez votre intégration
>
> Stripe propose deux méthodes pour gérer les taxes avec les PaymentIntents :
>
> - **[Simplified](https://docs.stripe.com/tax/payment-intent/simplified.md)** : Stripe gère automatiquement les transactions fiscales et les annulations. Les annulations de remboursement utilisent une distribution à montant fixe. Recommandée pour la plupart des cas d’usage.
- **[Custom](https://docs.stripe.com/tax/payment-intent/custom.md)** : Vous enregistrez manuellement les transactions fiscales et contrôler les annulations au niveau de chaque poste. À utiliser si vous avez besoin d’un contrôle précis.
>
> Pour [Checkout](https://docs.stripe.com/tax/checkout.md), [Invoicing](https://docs.stripe.com/tax/invoicing.md) ou [Subscriptions](https://docs.stripe.com/tax/subscriptions.md), utilisez plutôt leurs intégrations Stripe Tax intégrées.
## Ajouter des immatriculations
Stripe Tax calcule les taxes uniquement dans les juridictions où vous êtes immatriculé pour collecter la TVA. Vous devez [ajouter vos immatriculations fiscales](https://docs.stripe.com/tax/registering.md#add-a-registration) dans le Dashboard.
## Optional: Collecter l’adresse du client [Côté client]
La taxe que vous collectez dépend généralement de l’emplacement de votre client. Pour un calcul de taxe plus précis, veuillez collecter l’adresse complète de votre client. Avant de la collecter, vous pouvez afficher une estimation à votre client en fonction de son [adresse IP](https://docs.stripe.com/tax/payment-intent.md#calculate-tax).
> Les exemples ci-dessous utilisent le composant [Address Element](https://docs.stripe.com/elements/address-element.md) pour collecter les adresses des clients avec des fonctionnalités d’autocomplétion et de localisation. Si vous avez uniquement besoin d’un [encaissement fiscal minimal](https://docs.stripe.com/tax/customer-locations.md#supported-formats), vous pouvez également utiliser un formulaire d’adresse personnalisé simple.
L’exemple ci-dessous monte un formulaire complet d’adresse de facturation avec le composant Address Element :
```html
```
Vous pouvez transmettre l’adresse à l’endpoint de votre serveur comme suit :
```js
const elements = stripe.elements();
const addressElement = elements.create('address', {mode: 'billing'});
addressElement.mount('#address-element');
document.getElementById('address-form').addEventListener('submit', function(event) {
event.preventDefault();
addressElement.getValue().then(function(result) {
if (!result.complete) {
return;
}
var response = fetch('/preview-cart', {
method: 'POST',
body: JSON.stringify({address: result.value.address}),
headers: {'Content-Type': 'application/json'},
}).then(function(response) {
return response.json();
}).then(function(responseJson) {
// Handle errors, or display calculated tax to your customer.
});
});
});
```
Les informations d’adresse requises pour le calcul de la taxe [varient selon le pays du client](https://docs.stripe.com/tax/customer-locations.md#supported-formats) :
- **États-Unis** : nous exigeons au moins le code postal de votre client. Pour un calcul plus précis des taxes, nous vous recommandons de fournir une adresse complète.
- **Canada** : nous avons besoin du code postal ou de la province de votre client.
- **Autres pays** : nous exigeons uniquement le code pays de votre client.
## Calculer la taxe [Côté serveur]
Vous choisissez quand et à quelle fréquence [calculer la taxe](https://docs.stripe.com/api/tax/calculations/create.md). Par exemple, vous pouvez :
Vous pouvez également utiliser une intégration de [confirmation en deux étapes](https://docs.stripe.com/payments/build-a-two-step-confirmation.md) pour calculer les taxes avec un Payment Element entre les étapes d’encaissement et de confirmation du paiement.
- Montrez une estimation des taxes basée sur l’adresse IP du client lorsqu’il accède à votre tunnel de paiement
- Recalculer les taxes lorsque le client saisit son adresse de facturation ou de livraison
- Calculer le montant final de la taxe à percevoir lorsque votre client a saisi son adresse
Stripe [ facture des frais](https://stripe.com/tax/pricing) par appel API de calcul de taxe. Vous pouvez limiter les appels API de calcul de taxe afin de gérer vos coûts.
Les exemples ci-dessous montrent comment calculer la taxe dans différents scénarios. Stripe Tax ne calcule la taxe que dans les juridictions où vous avez effectué votre enregistrement pour la percevoir. Vous devez [ajouter vos immatriculations fiscales](https://docs.stripe.com/tax/registering.md#add-a-registration) dans le Dashboard.
#### Exemple - États-Unis : article hors taxes
Cet exemple calcule la taxe pour une adresse de livraison aux États-Unis. Le poste a un prix de 10 USD et utilise le [code fiscal prédéfini de votre compte](https://docs.stripe.com/tax/set-up.md#preset-tax-code).
```curl
curl https://api.stripe.com/v1/tax/calculations \
-u "<>:" \
-d currency=usd \
-d "line_items[0][amount]=1000" \
-d "line_items[0][reference]=L1" \
-d "customer_details[address][line1]=920 5th Ave" \
-d "customer_details[address][city]=Seattle" \
-d "customer_details[address][state]=WA" \
-d "customer_details[address][postal_code]=98104" \
-d "customer_details[address][country]=US" \
-d "customer_details[address_source]=shipping"
```
#### Exemple - États-Unis : plusieurs articles avec livraison
Dans cet exemple, il y a plusieurs postes hors taxe et des frais de livraison de 5 USD.
```curl
curl https://api.stripe.com/v1/tax/calculations \
-u "<>:" \
-d currency=usd \
-d "line_items[0][amount]=1000" \
-d "line_items[0][reference]=L1" \
-d "line_items[0][tax_code]=txcd_99999999" \
-d "line_items[1][amount]=5000" \
-d "line_items[1][reference]=L2" \
-d "line_items[1][tax_code]=txcd_99999999" \
-d "line_items[2][amount]=9999" \
-d "line_items[2][reference]=L3" \
-d "line_items[2][tax_code]=txcd_99999999" \
-d "shipping_cost[amount]=500" \
-d "customer_details[address][line1]=920 5th Ave" \
-d "customer_details[address][city]=Seattle" \
-d "customer_details[address][state]=WA" \
-d "customer_details[address][postal_code]=98104" \
-d "customer_details[address][country]=US" \
-d "customer_details[address_source]=shipping"
```
#### Exemple - Europe : article TTC
Dans cet exemple, la taxe est calculée pour une adresse de facturation en Irlande, où les taxes sont généralement incluses dans les tarifs pratiqués pour les clients non professionnels. L’article est proposé à un tarif de 29,99 EUR et utilise le code fiscal `txcd_10302000` (ebook).
```curl
curl https://api.stripe.com/v1/tax/calculations \
-u "<>:" \
-d currency=eur \
-d "line_items[0][amount]=2999" \
-d "line_items[0][reference]=L1" \
-d "line_items[0][tax_behavior]=inclusive" \
-d "line_items[0][tax_code]=txcd_10302000" \
-d "customer_details[address][country]=IE" \
-d "customer_details[address_source]=billing"
```
#### Exemple - Europe : plusieurs articles avec livraison
Dans cet exemple, la taxe est calculée pour une adresse de livraison en Irlande, où les taxes sont généralement incluses dans les tarifs pratiqués pour les clients non professionnels. L’article est proposé à un tarif de 59,99 EUR, auquel s’ajoutent des frais de livraison de 5 EUR. Comme les deux montants sont TTC, le client paie toujours 64,99 EUR.
```curl
curl https://api.stripe.com/v1/tax/calculations \
-u "<>:" \
-d currency=eur \
-d "line_items[0][amount]=5999" \
-d "line_items[0][reference]=L1" \
-d "line_items[0][tax_behavior]=inclusive" \
-d "line_items[0][tax_code]=txcd_99999999" \
-d "shipping_cost[amount]=500" \
-d "shipping_cost[tax_behavior]=inclusive" \
-d "customer_details[address][line1]=123 Some House" \
-d "customer_details[address][city]=Dublin" \
-d "customer_details[address][country]=IE" \
-d "customer_details[address_source]=shipping"
```
La [réponse de calcul](https://docs.stripe.com/api/tax/calculations/object.md) contient des montants que vous pouvez afficher à votre client, et utiliser pour accepter les paiements :
| Attribut | Description |
| -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [amount_total](https://docs.stripe.com/api/tax/calculations/object.md#tax_calculation_object-amount_total) | Le montant total après calcul des taxes. Utilisez ce montant pour définir le [montant](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-amount) du PaymentIntent à facturer à votre client. |
| [tax_amount_exclusive](https://docs.stripe.com/api/tax/calculations/object.md#tax_calculation_object-tax_amount_exclusive) | Le montant des taxes qui vient s’ajouter aux postes de facture et aux frais de livraison, faisant s’accroître la valeur `amount_total`. Utilisez-le pour indiquer à votre client le montant de taxes ajouté au sous-total de la transaction. |
| [tax_amount_inclusive](https://docs.stripe.com/api/tax/calculations/object.md#tax_calculation_object-tax_amount_inclusive) | Le montant des taxes inclus dans vos postes de facture et vos frais de livraison (si vous avez opté pour les tarification TTC). Ce montant n’augmente pas la valeur `amount_total`. Utilisez-le pour communiquer à votre client quelle est la part des taxes dans le montant total payé. |
| [tax_breakdown](https://docs.stripe.com/api/tax/calculations/object.md#tax_calculation_object-tax_breakdown) | Liste de montants de taxe répartis par taux d’imposition du pays ou de l’État. Vous pouvez vous en servir pour indiquer à vos clients quelles taxes vous collectez. |
### Gérer les erreurs d’emplacement du client
Si l’adresse de votre client n’est pas valide ou pas assez précise pour calculer la taxe, le calcul renvoie le code d’erreur `customer_tax_location_invalid` :
```json
{
"error": {
"doc_url": "https://docs.stripe.com/error-codes#customer-tax-location-invalid","code": "customer_tax_location_invalid",
"message": "We could not determine the customer's tax location based on the provided customer address.",
"param": "customer_details[address]",
"type": "invalid_request_error"
}
}
```
Si vous recevez cette erreur, demandez à votre client de vérifier l’adresse saisie et de corriger toute éventuelle faute de frappe.
## Prochaines étapes
Choisissez la façon de gérer les transactions fiscales et les annulations :
- **[Intégration simplifiée](https://docs.stripe.com/tax/payment-intent/simplified.md)** : Associez le calcul à un PaymentIntent et Stripe crée automatiquement des transactions fiscales lors du succès du paiement, et enregistre les annulations lors des remboursements.
- **[Intégration personnalisée](https://docs.stripe.com/tax/payment-intent/custom.md)** : Créez manuellement des transactions fiscales à partir des calculs, avec un contrôle au niveau de chaque poste pour les annulations.
## Tests
Utilisez les *environnements de test* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) pour vérifier que votre intégration fonctionne correctement avant de la mise en production. Les réponses en environnement de test ont une structure identique aux réponses en mode production.
> Dans les environnements de test, les calculs ne garantissent pas des résultats de taxation à jour. Vous êtes limité à 1 000 calculs de taxes par jour. Si vous avez besoin d’une limite plus élevée, contactez le [service d’assistance Stripe](https://support.stripe.com/contact). Pour obtenir des conseils sur les tests automatisés et les stratégies permettant d’éviter les limites d’appels dans les environnements de test, consultez la section [Tests automatisés](https://docs.stripe.com/automated-testing.md).
## Afficher les transactions fiscales
Vous pouvez afficher toutes les transactions comportant des taxes de votre compte sur la page [Transactions avec taxe](https://dashboard.stripe.com/test/tax/transactions) du Dashboard. Cliquez sur une transaction donnée pour afficher le détail des taxes calculées par territoire fiscal et par produit inclus dans la transaction.
> La page [Transactions fiscales](https://dashboard.stripe.com/tax/transactions) n’inclut que les *transactions* et non les *calculs*. Si cherchez un calcul et que vous ne le trouvez pas sur cette page, vérifiez que vous avez bien créé une transaction fiscale à partir du calcul.
## See also
- [API Tax Standalone](https://docs.stripe.com/tax/standalone-tax-api.md)
- [API Stripe Tax Simplified](https://docs.stripe.com/tax/payment-intent/simplified.md)
- [API Stripe Tax Custom](https://docs.stripe.com/tax/payment-intent/custom.md)
- [Paiements externes à Stripe](https://docs.stripe.com/tax/off-stripe.md)
- [Déclarations fiscales](https://docs.stripe.com/tax/reports.md)