Percevoir des taxes pour les paiements récurrents
Comment percevoir et déclarer des taxes pour les paiements récurrents.
Stripe propose deux manières de calculer les taxes pour les paiements récurrents : Stripe Tax et Taux de taxe.
Stripe Tax : un produit payant qui calcule automatiquement les taxes liées à vos transactions, sans nécessité de définir des taux et des règles. Les frais s’appliquent uniquement après l’ajout d’au moins un de vos lieux d’immatriculation pour calculer les taxes et les verser. Pour en savoir plus, consultez la page Stripe Tax.
Taux de taxe : une fonctionnalité gratuite qui vous permet de définir le nombre de taux de taxes à appliquer à vos factures, abonnements et paiements ponctuels qui utilisent Checkout. Stripe ne créera pas et ne gèrera aucun taux de taxe en votre nom. Pour plus d’informations, consultez la rubrique Taux de taxe et la documentation sur leur utilisation.
Stripe Tax vous permet de calculer les taxes qui doivent être collectées sur vos paiements récurrents lorsque vous utilisez Stripe Billing. Vous pouvez créer de nouveaux abonnements ou ajouter Stripe Tax à des abonnements existants, et examiner l’impact que cela peut avoir sur le montant de la prochaine facture de votre client. Stripe Tax est intégré de manière native à Stripe Billing et calcule automatiquement les taxes en tenant compte de votre modèle de tarification (par exemple, nombres décimaux, forfait), du calcul des proratas, des réductions, des essais gratuits, et plus encore. Ce guide suppose que vous configurez Stripe Tax et Billing pour la première fois.
Pour modifier des abonnements existants, consultez le guide Modifier des abonnements existants.
Note
Connectez-vous ou créez un compte Stripe pour activer Stripe Tax.
Démarrer en visionnant une vidéo de présentation
Cette courte vidéo montre comment activer la collecte des taxes pour les paiements récurrents avec une intégration hébergée comme Stripe Checkout.
Modifiez vos produits et tarifs
Stripe Tax utilise des informations sauvegardées sur les API Products et Prices pour déterminer les taux et les règles appropriés à appliquer pour le calcul des taxes. Modifiez les produits et les tarifs que vous utilisez pour inclure :
Comportement fiscal : le comportement fiscal d’un tarif peut être soit TTC, soit hors taxes. Il détermine la façon dont le client voit la taxe. Lorsque vous configurez le comportement fiscal sur hors taxes, la taxe est ajoutée au montant du sous-total que vous spécifiez à votre tarif. C’est une pratique courante sur les marchés des États-Unis et pour les ventes B2B. Lorsqu’il est configuré sur TTC, le montant que votre client paie ne change jamais, même si le taux de taxe varie. C’est une pratique courante pour les clients B2C sur de nombreux marchés en dehors des États-Unis.
Définir explicitement le comportement fiscal d’un tarif est facultatif si vous définissez le comportement fiscal par défaut dans les paramètres Stripe Tax. Vous pouvez remplacer le paramètre de comportement fiscal par défaut en définissant un comportement fiscal sur un tarif.
(Facultatif) Code de taxe : un code de taxe est une classification de votre produit ou service pour Stripe Tax. Il nous permet d’appliquer le taux de taxe adéquat pour vos transactions. Voici quelques exemples : « Livre audio », « Carte cadeau » ou « Logiciels en tant que service ». Si vous ne configurez pas le code de taxe, Stripe Tax utilise les paramètres fiscaux prédéfinis.
Mise en garde
Vous ne pouvez pas modifier le comportement fiscal tax_
une fois que vous l’avez défini sur « hors taxes » ou « TTC ». Vous pouvez créer un nouveau tarif et archiver le tarif actuel.
Si vous ne voulez pas créer vos produits et vos tarifs dès le début, vous pouvez transmettre price_
et product_
lors de la création de l’subscriptions.
En savoir plus sur les produits, tarifs, codes de taxe et le comportement fiscal.
Ce guide prend l’exemple d’un magazine électronique pour illustrer un produit avec un paiement récurrent.
Pour commencer, créez sur votre serveur un objet Price avec un paiement mensuel pour un nouvel objet Product nommé « Mon produit ». Ajoutez deux champs supplémentaires pour le calcul des taxes :
tax_
de l’objet Price. Défini surbehavior inclusive
ouexclusive
. Ce champ est obligatoire si vous utilisez Stripe Tax avec Subscriptions.tax_
de l’objet Product. Un code de taxe Stripe correspondant à un code de taxe de produit. Pour en savoir plus, consultez notre liste des codes de taxe.code
Enregistrez l’ID du produit. Les ID de produit se présentent sous la forme suivante :
{ "id": "prod_H94k5odtwJXMtQ",
Utilisez cet ID de produit pour créer un tarif.
Note
Lorsque le paramètre price_
est défini sur exclusive
, la taxe est ajoutée au sous-total que vous avez spécifié. Cette approche est très courante aux États-Unis et pour les ventes interentreprises (B2B). Quand ce paramètre est défini sur inclusive
, le montant payé par votre acheteur ne change jamais, même si le taux de taxe évolue. Cette approche est généralement utilisée pour les particuliers (B2C) sur de nombreux marchés en dehors des États-Unis.
Enregistrez l’ID du tarif de manière à pouvoir l’utiliser lors des prochaines étapes. Les ID de tarif ont le format suivant :
{ "id": "price_HGd7M3DV3IMXkC",
Créer un clientCôté serveur
Lorsqu’un utilisateur s’abonne à votre site Web, créez un objet Customer sur votre serveur.
Lors de la création d’un client, il vous suffit de nous envoyer une description et le moyen de paiement. Cependant, plus vous nous envoyez d’informations, plus le calcul des taxes permet d’identifier la localisation de votre client et les taxes qu’il devra payer. Nous vous recommandons de remplir le champ customer.
. Pour garantir que l’adresse du client est valide au moment de la création, transmettez tax[validate_
. Vous pouvez également développer le champ tax
pour confirmer la localisation que Stripe Tax a identifiée pour votre client.
Vous pouvez ajouter un pays et un code postal :
Ou, idéalement, ajoutez une adresse de facturation complète :
Ou seulement une adresse IP :
Le champ tax
développé indique le lieu pour lequel les taxes ont été calculées (en utilisant d’abord l’adresse, puis l’adresse IP indiquée) et si le calcul automatique des taxes peut être utilisé pour ce client :
{ "id": "cus_13729he8947269", "object": "customer", // ... other fields omitted "tax": { "location": {"country": "US", "state": "CA", "source": "billing_address"}, "ip_address": null, "automatic_tax": "supported", } }
La valeur du paramètre automatic_
a quatre états possibles :
État | Descriptif | Action possible |
---|---|---|
supported | Taxe automatique entièrement prise en charge. | Aucune autre action n’est requise. |
unrecognized_ | L’adresse indiquée n’est pas valide et ne permet pas de déterminer un lieu fiscal. | Demandez au client de mettre à jour l’adresse et définissez customer. sur la nouvelle valeur. |
not_ | L’adresse peut être définie sur un lieu pour lequel vous n’avez pas configuré d’immatriculation fiscale. | En fonction de vos obligations fiscales, vous pouvez soit poursuivre, auquel cas Stripe Tax ne calculera aucune taxe, soit ajouter une immatriculation correspondant à la région dans laquelle le client est établi. |
failed | Une erreur rare s’est produite sur les serveurs de Stripe. | Renouvelez votre requête ou contactez le service d’assistance Stripe pour obtenir de l’aide. |
Créer un abonnementCôté serveur
Une fois le calcul des taxes configuré pour le client, vous pouvez créer un abonnement sur votre serveur avec le client et le plan sélectionné. Pour activer le calcul automatique des taxes sur les abonnements, définissez le paramètre automatic_
sur true
:
Si vous définissez ce paramètre, le calcul automatique des taxes sera activé pour toutes les factures suivantes.
Pour consulter les résultats du dernier calcul des taxes, récupérez la dernière facture d’un abonnement. Pour ce faire, vous pouvez développer le champ latest_
de n’importe quelle demande d’abonnement, comme dans les exemples ci-dessus. Vous pouvez récupérer les montants de taxe à partir des champs tax
et total_
de la dernière facture, ainsi que des champs tax_
par poste.
Si Stripe Tax ne dispose pas de suffisamment d’informations pour localiser le client, une erreur customer_tax_location_invalid s’affiche.
Recueillir les informations de paiement pour activer l'abonnementCôté client
Pour finaliser le paiement de la première facture et activer l’abonnement, utilisez stripe.
lorsque votre client soumet le formulaire.
const btn = document.querySelector('#submit-payment-btn'); btn.addEventListener('click', async (e) => { e.preventDefault(); const nameInput = document.getElementById('name'); // Create payment method and confirm payment intent. stripe.confirmCardPayment(clientSecret, { payment_method: { card: cardElement, billing_details: { name: nameInput.value, }, } }).then((result) => { if(result.error) { alert(result.error.message); } else { // Successful subscription payment } }); });
L’abonnement passe automatiquement à l’état active
à l’issue du paiement. Consultez notre guide consacré aux abonnements avec Elements pour plus d’informations sur la manière de configurer votre page de paiement.
Gestion de la validation de l'emplacement
Pour calculer la taxe avec Stripe Tax, la localisation client doit être reconnue.
Nous recommandons de valider l’état automatic_
d’un client avant de tenter de créer ou de modifier un abonnement ou un brouillon de facture ponctuelle avec le paramètre automatic_
.
Creating or updating a subscription or invoice behaves the following way when the customer location is unrecognized:
- La création ou modification d’un abonnement déclenchant une facture immédiate génère une erreur avec code d’état HTTP 400.
- La modification d’un abonnement qui ne génère pas de facture ou de tentative de paiement immédiate renvoie une réponse avec code d’état HTTP 200. Cependant, la validation de la localisation du client a lieu ultérieurement de manière asynchrone lors de la finalisation de la facture. Si la localisation du client n’est pas valide lors de la finalisation de la facture, Stripe envoie un webhook
invoice.
. En l’absence d’action, la facture reste à l’étatfinalization_ failed draft
, quelle que soit la valeur deauto_
.advance - La création ou modification d’un brouillon de facture (juste après un cycle d’abonnement ou pour une facture ponctuelle) a pour effet de définir le paramètre
automatic_
surtax. status requires_
. Vous pouvez alors mettre à jour l’adresse de l’objet Customer et modifier ou finaliser la facture, ou désactiver le calcul automatique des taxes. En l’absence d’action de votre part, la facture demeure à l’étatlocation_ inputs draft
, quelle que soit la valeur du paramètreauto_
.advance
Si le calcul de la taxe échoue en raison de l’emplacement d’un client non reconnu sur une facture d’abonnement récurrente, Stripe envoie un webhook invoice.
lors de la tentative de finalisation de la facture. Gardez cela à l’esprit lorsque vous mettez à jour les informations de localisation de votre client.
Nous vous recommandons d’écouter les événements liés aux abonnements (par exemple, les échecs de finalisation de facture) à l’aide de webhooks, car la majeure partie de l’activité se déroule de manière asynchrone.
Prévisualisation d'un tarif avant de créer un client ou un abonnementFacultatif
Stripe fournit également un endpoint permettant de prévisualiser la prochaine facture relative à un abonnement. Vous pouvez utiliser cet endpoint pour prévisualiser la facture initiale d’un nouvel abonnement :
Si vous n’avez pas encore créé d’objet Customer, mais avez recueilli les informations de facturation de votre client, vous pouvez utiliser le paramètre customer_
à la place d’un ID de client :
Lorsque vous prévisualisez la première facture d’un abonnement, l’ID d’abonnement dans la réponse ne renvoie pas vers un abonnement valide.
Vous pouvez également utiliser cet endpoint si vous disposez d’un abonnement en cours sans taxes, et que vous souhaitez avoir un aperçu de la facture à venir si vous activiez le calcul automatique des taxes.