Collecter des taxes sur les abonnements aux grilles tarifaires à l'usageVersion bêta privée
Découvrez comment calculer et collecter les taxes sur les abonnements aux grilles tarifaires à l'usage.
Version bêta privée
Les grilles tarifaires sont actuellement en version bêta privée et pourraient changer de fonctionnalité et de chemin d’intégration avant d’être généralement disponibles pour tous les utilisateurs de Stripe. Inscrivez-vous ici pour participer à la version bêta privée.
Vous pouvez utiliser Stripe Tax afin de calculer le montant de la taxe sur les paiements récurrents pour les abonnements à des grilles tarifaires. Pour gérer automatiquement le calcul des taxes lorsque votre client souhaite passer effectuer un paiement, définissez la localisation du client lorsque vous créez un abonnement à une grille tarifaire.
Activer Stripe Tax
Connectez-vous ou créez un compte Stripe pour activer Stripe Tax.
Mettre à jour les grilles tarifaires (facultatif)
Lorsque vous créez une grille tarifaire, vous spécifiez le code de taxe produit. Si vous ne spécifiez pas de code, Stripe Tax utilise le code fiscal par défaut sélectionné dans vos Paramètres fiscaux.
Recueillir les informations du clientCôté client
Après avoir obtenu une estimation des taxes et du total, vous pouvez collecter les informations du client, notamment :
- Adresse de livraison (le cas échéant)
- Adresse de facturation
- Détails du paiement
Stripe Tax collecte les informations de paiement sans créer de Setup Intent. La première étape consiste à créer un objet Elements sans Intent :
const stripe = Stripe(
); const elements = stripe.elements({ mode: 'subscription', currency: '{{CURRENCY}}', amount:"pk_test_TYooMQauvdEDq54NiTphI7jx", });{{TOTAL}}
Ensuite, créez un Address Element et un Payment Element et montez-les :
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');
Écoutez les événements de modification sur le composant Address Element. En cas de modification de l’adresse, réestimez les taxes et le montant total.
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’envoiCô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.
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
(customerDetails); // See the "Create subscription" section below to implement this server-side. const {saveCustomerDetails} = awaitclientSecret(); const { error: confirmError } = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url:createSubscription, }, }); 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. });{{RETURN_URL}}
Enregistrer les coordonnées du clientCô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.
La valeur d’énumération tax.validate_location permet de s’assurer que le territoire fiscal du client devient (ou reste) valide à la suite de cette opération. S’il n’est pas valide, Stripe fait échouer votre requête avec le code d’erreur customer_tax_location_invalid. Ceci est important, car vous ne pouvez pas créer d’abonnement avec calcul automatique des taxes pour un client dont le territoire fiscal n’est pas valide. Si vous avez précédemment vérifié l’état automatic_tax.status de vos factures en version bêta tel que recommandé, cette validation supplémentaire n’échouera jamais. Cependant, il est recommandé de définir tax[validate_
chaque fois que vous créez ou mettez à jour un objet Customer.
Abonner votre client à une grille tarifaire
Après avoir créé une grille tarifaire, vous pouvez commencer à abonner des clients.
Lorsque vous abonnez votre client à la grille tarifaire, vous définissez également la fréquence de facturation, c’est-à-dire la fréquence à laquelle vous créez des factures pour votre client. Lorsque vous créez une cadence de facturation, vous spécifiez le mode de collecte : prélèvement automatique ou envoi d’une facture. Si vous prélevez le client automatiquement, une facture est créée et le moyen de paiement par défaut du client est débité. Si vous envoyez une facture, le client reçoit une facture qu’il doit payer manuellement.