Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Outils de développement
Démarrer
Paiements
Automatisation des opérations financières
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Aperçu
Billing
Tax
    Présentation
    Démarrer
    Fonctionnement de Stripe Tax
    Configurer
    Utilisation de l'API Settings
    Tests
    Intégrer par tunnel de paiement
    Payment Links
    Checkout
    Invoicing
    Abonnements
      Modifier des abonnements existants
    Abonnements à une grille tarifaire
    Intégration de paiement personnalisée
    Réaliser une intégration avec Stripe Connect
    Présentation
    Stripe Tax pour les plateformes logicielles
    Stripe Tax pour les places de marché
    Gérez votre conformité
    Surveiller vos obligations
    S'inscrire
    Calculer la taxe
    Rapport
    Applications fiscales tierces
    Déclarer et verser
    Référence fiscale
    Codes de taxe produit
    Pays pris en charge
    FAQ
Rapports
Données
Constitution de start-up
AccueilAutomatisation des opérations financièresTax

Percevoir des taxes pour les paiements récurrents

Comment percevoir et déclarer des taxes pour les paiements récurrents.

Copier la page

Stripe Tax vous permet de calculer le montant de la taxe sur vos paiements récurrents lorsque vous utilisez Stripe Billing. Utilisez les informations relatives à l’emplacement de votre client pour obtenir un aperçu du montant des taxes avant de créer un abonnement, puis créez-le avec Stripe Tax activé lorsque votre client est prêt à payer. Stripe Tax s’intègre à Stripe Billing et gère automatiquement le calcul des taxes à l’aide de votre modèle tarifaire, de vos proratas, de vos remises, de vos essais, etc.

Ce guide part du principe que vous configurez Stripe Tax et Billing pour la première fois. Découvrez comment modifier des abonnements existants.

Si vous utilisez Stripe Checkout pour créer de nouveaux abonnements, découvrez comment prélever automatiquement des taxes sur les sessions Checkout ou regardez la courte vidéo ci-dessous :

Chargement du contenu vidéo...

Estimer les taxes et le total
Côté serveur

Lorsqu’un client entre pour la première fois dans votre flux de paiement, il se peut que vous ne disposiez pas encore de son adresse. Dans ce cas, créez un aperçu de la facture et définissez customer_details.tax.ip_address pour permettre à Stripe de les localiser à l’aide de leur adresse IP.

Mise en garde

Dans la plupart des cas, Stripe peut résoudre une adresse IP en une zone physique, mais sa précision varie et peut ne pas refléter l’emplacement réel de votre client. Nous vous déconseillons de vous fier à l’adresse IP d’un client pour déterminer son adresse au-delà d’une estimation initiale.

Command Line
cURL
curl https://api.stripe.com/v1/invoices/create_preview \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "automatic_tax[enabled]"=true \ -d "customer_details[tax][ip_address]"={{IP_ADDRESS}} \ -d "subscription_details[items][0][price]"=
{{PRICE_ID}}

Vérifiez le automatic_tax.status de la facture. S’il affiche requires_location_inputs, cela signifie que les coordonnées de l’adresse ne sont pas valides ou sont insuffisantes. Dans ce cas, invitez votre client à saisir à nouveau ses coordonnées ou à fournir des coordonnées exactes.

Le total de la facture correspond au montant payé par votre client, et la taxe correspond à la somme de tous les montants des taxes figurant sur la facture. Pour obtenir le détail des taxes, reportez-vous à la section total_tax_amounts. Tous les montants sont en cents.

Taxe zéro

Si la valeur de tax est égale à zéro, assurez-vous de disposer d’un enregistrement fiscal à l’emplacement de votre client. Découvrez comment vous inscrire pour bénéficier de la taxe de vente, de la TVA et la GST et découvrez les montants à taxe zéro et les autoliquidations.

Recueillir les informations du client
Côté client

Une fois que vous avez estimé les taxes et le montant total, commencez à collecter les informations relatives au client, notamment son adresse de livraison (le cas échéant), son adresse de facturation et ses informations de paiement. Notez que lorsque vous utilisez Stripe Tax, vous collectez des informations de paiement sans Intent. La première étape consiste à créer un objet Elements sans Intent :

checkout.js
const stripe = Stripe(
"pk_test_TYooMQauvdEDq54NiTphI7jx"
); const elements = stripe.elements({ mode: 'subscription', currency: '{{CURRENCY}}', amount:
{{TOTAL}}
, });

Ensuite, créez un Address Element et un Payment Element et montez-les :

checkout.js
const addressElement = elements.create('address', { mode: 'billing' // or 'shipping', if you are shipping goods }); addressElement.mount('#address-element'); const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');

Ensuite, vous pouvez écouter change events sur l’Address Element. En cas de modification de l’adresse, réestimez les taxes et le montant total.

checkout.js
addressElement.on('change', function(event) { // Throttle your requests to avoid overloading your server or hitting // Stripe's rate limits. const { tax, total } = await updateEstimate(event.value.address); elements.update({ amount: total }); // Update your page to display the new tax and total to the user... });

Erreur fréquente

Lorsque votre client saisit son adresse, Address Element déclenche un événement change pour chaque saisie au clavier. Pour éviter de surcharger votre serveur et d’atteindre les limites de débit de Stripe, attendez un certain temps après le dernier événement change avant de réestimer les taxes et le total.

Gérer l’envoi
Côté client

Lorsque votre client envoie le formulaire, appelez elements.submit() pour valider les champs du formulaire et collecter toutes les données requises pour les wallets. Vous devez attendre que la promesse de cette fonction soit résolue avant d’effectuer toute autre opération.

checkout.js
document.querySelector("#form").addEventListener("submit", function(event) { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); const { error: submitError } = await elements.submit(); if (submitError) { // Handle error... return; } const { value: customerDetails } = await addressElement.getValue(); // See the "Save customer details" section below to implement this // server-side. await
saveCustomerDetails
(customerDetails); // See the "Create subscription" section below to implement this server-side. const {
clientSecret
} = await
createSubscription
(); const { error: confirmError } = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url:
{{RETURN_URL}}
, }, }); if (confirmError) { // Handle error... return; } // Upon a successful confirmation, your user will be redirected to the // return_url you provide before the Promise ever resolves. });

Enregistrer les coordonnées du client
Côté serveur

Modifiez votre objet Customer à l’aide des informations que vous avez recueillies auprès de votre client. Stripe Tax pourra ainsi déterminer son emplacement précis et obtenir des résultats précis.

Spécificités régionales
États-Unis

Si votre client se trouve aux États-Unis, fournissez une adresse complète si possible. Elle doit être suffisamment précise, de manière à ce que nous pouvons attribuer l’emplacement de votre client à une maison ou à un bâtiment spécifique. Cela permet d’obtenir une plus grande précision, lorsque deux maisons situées côte à côte dans la même rue peuvent être assujetties à des taux d’imposition différents, en raison des limites complexes des juridictions.

Si vous n’avez pas encore créé d’objet Customer (par exemple, lorsque votre client s’inscrit pour la première fois sur votre site Web), vous pouvez en créer un maintenant.

Command Line
cURL
curl https://api.stripe.com/v1/customers/
{{CUSTOMER_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "address[line1]"={{LINE1}} \ -d "address[line2]"={{LINE2}} \ -d "address[city]"={{CITY}} \ -d "address[state]"={{STATE}} \ -d "address[postal_code]"={{POSTAL_CODE}} \ -d "address[country]"={{COUNTRY}} \ -d "tax[validate_location]"=immediately

Mise en garde

Si votre client dispose d’autres abonnements pour lesquels la taxe automatique est activée et que vous modifiez ses coordonnées, les taxes et les montants totaux de ses futures factures peuvent être différents. En effet, les taux de taxe varient en fonction de l’emplacement du client.

La valeur tax.validate_location enum vous permet de vérifier que l’emplacement fiscal du client devient (ou reste) valide à la suite de cette opération. Dans le cas contraire, Stripe refuse la requête et renvoie le code d’erreur customer_tax_location_invalid. Cela est important, car vous ne pouvez pas créer d’abonnement automatique pour les taxes pour un client dont l’emplacement fiscal n’est pas valide. Si vous avez vérifié le automatic_tax.status dans l’aperçu de vos factures comme indiqué précédemment, cette validation supplémentaire n’échouera jamais. Cependant, il est recommandé de définir tax[validate_location]="immediately" chaque fois que vous créez ou modifiez un objet Customer.

Création d'un abonnement
Côté serveur

Créez un abonnement pour lequel la taxe automatique est activée.

Command Line
cURL
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "automatic_tax[enabled]"=true \ -d customer=
{{CUSTOMER_ID}}
\ -d "items[0][price]"=
{{PRICE_ID}}
\ -d "payment_settings[save_default_payment_method]"=on_subscription \ -d "expand[0]"="latest_invoice.confirmation_secret"

The latest_invoice.confirmation_secret.client_secret is the client secret of the payment intent of the first (and the latest) invoice of the new subscription. You need to pass the client secret to your front end to be able to confirm the payment intent.

Conseil en matière de sécurité

Ne stockez pas la clé secrète du client, ne l’enregistrez pas et ne la divulguez pas à une autre partie que le client. Veillez à ce que le protocole TLS soit activé sur toutes les pages qui contiennent la clé secrète du client.

Si votre client dispose d’un moyen de paiement par défaut, la première facture de l’abonnement est payée automatiquement. Vous pouvez le vérifier à l’aide du latest_invoice.status de l’abonnement. Si vous souhaitez utiliser les nouvelles informations de paiement collectées auprès de votre client dans votre flux de paiement, vérifiez que la première facture n’est pas payée automatiquement. Transmettez default_incomplete pour le payment_behavior lors de la création de votre abonnement et confirmez l’intention de paiement à l’aide de stripe.confirmPayment(), comme indiqué. Consultez la page Méthodes de recouvrement de la facturation pour en savoir plus.

FacultatifModifiez vos produits et tarifs

FacultatifGérer les remboursements
Côté serveur

Utiliser des webhooks

Nous vous recommandons d’écouter les événements d’abonnement avec des webhooks, car la plupart des activités d’abonnement se déroulent de manière asynchrone.

Lorsque vous commencez à utiliser Stripe Tax, assurez-vous d’écouter les événements invoice.finalization_failed Si le automatic_tax.status de la facture est requires_location_inputs, cela signifie que les coordonnées de votre client ne sont pas valides ou sont insuffisantes. Dans ce cas, Stripe n’est pas en mesure de calculer les taxes, de finaliser la facture ni de percevoir le paiement. Demandez à votre client de saisir à nouveau son adresse ou de fournir une adresse exacte.

See Using webhooks with subscriptions to learn more.

Voir aussi

  • Modifier des abonnements existants
  • Utiliser Stripe Tax avec Connect
  • Calculer les taxes dans votre tunnel de paiement personnalisé
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc