Skip to main content

Change Plan API

Full API docs for updating subscriptions.

Plan Change Preview

See charge amounts before changing plans.

Integration Guide

Step-by-step subscription setup.

What is a subscription upgrade or downgrade?

Changing plans lets you move a customer between subscription tiers or quantities. Use it to:
  • Align pricing with usage or features
  • Move from monthly to annual (or vice versa)
  • Adjust quantity for seat-based products
Plan changes can trigger an immediate charge depending on the proration mode you choose.

When to use plan changes

  • Upgrade when a customer needs more features, usage, or seats
  • Downgrade when usage decreases
  • Migrate users to a new product or price without cancelling their subscription

Plan Change Flow

Prerequisites

Before implementing subscription plan changes, ensure you have:
  • A Dodo Payments merchant account with active subscription products
  • API credentials (API key and webhook secret key) from the dashboard
  • An existing active subscription to modify
  • Webhook endpoint configured to handle subscription events
For detailed setup instructions, see our Integration Guide.

Step-by-Step Implementation Guide

Follow this comprehensive guide to implement subscription plan changes in your application:
1

Understand Plan Change Requirements

Before implementing, determine:
  • Which subscription products can be changed to which others
  • What proration mode fits your business model
  • How to handle failed plan changes gracefully
  • Which webhook events to track for state management
Test plan changes thoroughly in test mode before implementing in production.
2

Choose Your Proration Strategy

Select the billing approach that aligns with your business needs:
Best for: SaaS applications wanting to charge fairly for unused time
  • Calculates exact prorated amount based on remaining cycle time
  • Charges a prorated amount based on unused time remaining in the cycle
  • Provides transparent billing to customers
3

Implement the Change Plan API

Use the Change Plan API to modify subscription details:
string
requis
The ID of the active subscription to modify.
string
requis
The new product ID to change the subscription to.
integer
requis
Number of units for the new plan (for seat-based products).
string
requis
How to handle immediate billing: prorated_immediately, full_immediately, difference_immediately, or do_not_bill.
array
Optional addons for the new plan. Leaving this empty removes any existing addons.
string
Controls behavior when the plan change payment fails:
  • prevent_change: Keep subscription on current plan until payment succeeds
  • apply_change (default): Apply plan change immediately regardless of payment outcome
If not specified, uses the business-level default setting.
Collectez le montant du changement de plan avec un lien de paiement au lieu de débiter le moyen de paiement enregistré de l’abonnement. Le client paie sur une page de checkout hébergée.Nécessite la capacité allow_plan_change_via_payment_link de l’entreprise (Settings → Subscriptions → Collect Plan Change Payments by Payment Link), effective_at: immediately et on_payment_failure: prevent_change. Consultez Collecting Payment via a Checkout Link.Ignoré par la route de preview.
array
Codes de réduction empilés facultatifs à appliquer au nouveau plan (20 maximum, appliqués dans l’ordre du tableau). Le comportement dépend de ce que vous transmettez :
  • Non fourni / null — les réductions existantes avec preserve_on_plan_change=true sont conservées si elles s’appliquent au nouveau produit.
  • [] (tableau vide) — supprime toutes les réductions existantes de l’abonnement.
  • ["CODE_A", "CODE_B", ...] — remplace toutes les réductions existantes par cet ensemble empilé.
string
obsolète
Obsolète — préférez discount_codes pour les nouvelles intégrations. Ce champ fonctionne toujours pour assurer la rétrocompatibilité, mais ne peut pas être combiné avec discount_codes dans la même requête.
string
défaut:"immediately"
Quand appliquer le changement de plan :
  • immediately (par défaut) : applique le changement de plan immédiatement
  • next_billing_date : planifie le changement pour la prochaine date de facturation. Le client conserve son plan actuel jusqu’à la fin de la période de facturation.
Utilisez next_billing_date pour les downgrades afin que les clients conservent les avantages de leur plan actuel jusqu’à la fin de la période de facturation.
4

Handle Webhook Events

Configurez la gestion des webhooks pour suivre les résultats des changements de plan :
  • subscription.active : changement de plan réussi, abonnement mis à jour
  • subscription.plan_changed : plan d’abonnement modifié (upgrade/downgrade/mise à jour d’addon)
  • subscription.on_hold : échec du débit du changement de plan, renouvellements arrêtés
  • payment.succeeded : débit immédiat du changement de plan réussi
  • payment.failed : échec du débit immédiat
Vérifiez toujours les signatures des webhooks et implémentez le traitement idempotent des événements.
5

Update Your Application State

En fonction des événements webhook, mettez à jour votre application :
  • Accordez ou révoquez les fonctionnalités selon le nouveau plan
  • Mettez à jour le tableau de bord client avec les détails du nouveau plan
  • Envoyez des e-mails de confirmation concernant les changements de plan
  • Consignez les changements de facturation à des fins d’audit
6

Test and Monitor

Testez soigneusement votre implémentation :
  • Testez tous les modes de proratisation avec différents scénarios
  • Vérifiez que la gestion des webhooks fonctionne correctement
  • Surveillez les taux de réussite des changements de plan
  • Configurez des alertes pour les changements de plan échoués
Votre implémentation des changements de plan d’abonnement est maintenant prête pour la production.

Prévisualiser les changements de plan

Avant de valider un changement de plan, utilisez l’API Preview pour montrer aux clients exactement le montant qui leur sera facturé :
Utilisez l’API Preview pour créer des boîtes de dialogue de confirmation qui affichent aux clients le montant exact qui leur sera facturé avant qu’ils ne confirment un changement de plan.

API Change Plan

Utilisez l’API Change Plan pour modifier le produit, la quantité et le comportement de la proratisation d’un abonnement actif.

Exemples de démarrage rapide

Un changement de plan réussi renvoie immédiatement 200 OK — avant que le moindre débit ne soit effectivement réglé. Le contenu du corps (ChangePlanResponse) dépend de la manière dont le changement a été collecté :
Dans tous les cas, cette réponse n’est pas un résultat de paiement : elle indique uniquement que la requête elle-même a été acceptée. Elle ne dit rien quant à la réussite effective d’un débit immédiat.Pour un débit immédiat ordinaire, le résultat est déterminé hors session, juste après l’appel.Pour une requête collect_via_payment_link, le résultat est déterminé ultérieurement et de manière asynchrone : la réponse vous remet uniquement un lien de checkout, l’abonnement reste sur son plan actuel et le résultat reste inconnu jusqu’à ce que le client effectue effectivement le paiement via ce lien.Dans tous les cas, ne déduisez pas le résultat de cette réponse. Confirmez-le via un webhook (payment.succeeded, payment.failed, subscription.plan_changed) ou en relisant l’abonnement avec GET /subscriptions/{subscription_id} — consultez What Happens While the Link Is Unpaid pour le cas du lien de paiement.
Si le débit immédiat échoue, l’abonnement peut passer à l’état subscription.on_hold jusqu’à la réussite du paiement.

Collecter un paiement via un lien de checkout

Par défaut, un changement de plan immédiat débite directement le moyen de paiement enregistré de l’abonnement. Définissez collect_via_payment_link: true pour rediriger le client vers une page de checkout hébergée — cette option est utile lorsqu’aucun moyen de paiement enregistré ne peut être débité hors session, ou lorsque vous souhaitez que le client confirme activement le nouveau prix.
C’est également ce qui alimente l’option Collect Plan Change Payments by Payment Link dans Settings → Subscriptions : le flux de changement de plan du Customer Portal intégré passe par le checkout au lieu d’utiliser la carte enregistrée.

Conditions requises

collect_via_payment_link: true ne réussit que lorsque toutes les conditions suivantes sont remplies — sinon la requête échoue avec 422 :
  • L’entreprise a activé la capacité allow_plan_change_via_payment_link (Settings → Subscriptions → Collect Plan Change Payments by Payment Link).
  • effective_at est égal à immediately (la valeur par défaut). Un changement planifié (next_billing_date) n’a jamais besoin d’une page de checkout, car aucun montant n’est facturé avant son application.
  • La valeur effective de on_payment_failure se résout en prevent_change. Vous n’avez pas besoin de l’envoyer explicitement : si la valeur par défaut au niveau de l’entreprise (voir Business & Collection Defaults ci-dessous) est déjà prevent_change, l’omission du champ suffit également. Une valeur explicite apply_change, ou une valeur par défaut résolue en apply_change, échoue avec 422.
collect_via_payment_link ne se limite pas aux upgrades : il s’applique à tout changement immédiat entraînant un débit, y compris les downgrades, tant que les conditions ci-dessus sont remplies.
Si le changement aboutit à zéro ou à un créditproration_billing_mode: do_not_bill, ou un autre mode dont le solde net est nul pour ce cycle — il n’y a rien à placer sur une page de checkout. Aucun lien de paiement n’est émis, payment_link et les champs associés renvoient null, et le changement s’applique immédiatement, comme il le ferait sans collect_via_payment_link. Il ne s’agit pas d’une 422 ; cet indicateur ne prend effet que lorsqu’un montant positif doit être collecté. Si vous définissez collect_via_payment_link pour les changements de plan de manière générale plutôt que pour des upgrades clairement identifiés, appelez d’abord Preview Plan Change et ne demandez un lien que lorsque le montant prévisualisé mérite d’être collecté.
Une requête réussie renvoie les identifiants de checkout :

Ce qui se passe tant que le lien n’est pas payé

  • L’abonnement reste sur son plan actuelproduct_id, recurring_pre_tax_amount et next_billing_date restent tous inchangés jusqu’au paiement du lien.
  • Toute nouvelle requête change-plan sur le même abonnement est rejetée avec 409 PendingPlanChangeExists tant que le lien est en attente. Annulez un changement planifié avec DELETE /subscriptions/{subscription_id}/change-plan/scheduled si nécessaire, mais cet endpoint n’annule pas un changement par lien de paiement en attente : seul un paiement réussi ou l’expiration du lien le permet.
  • Après un refus, le client peut réessayer avec une carte dans la même session de checkout ; un nouvel appel change-plan n’est pas la procédure de nouvelle tentative.
  • Si le lien n’est jamais payé, il cesse de fonctionner après expires_on — l’abonnement redevient automatiquement disponible pour accepter une nouvelle requête de changement de plan peu après.
  • Si un changement planifié (next_billing_date) existait déjà et que vous le remplacez par cancel_scheduled_change_plan: true, la planification d’origine reste en place tant que le lien n’est pas payé et n’est annulée qu’une fois le lien payé — dans la même transaction que celle qui applique le nouveau plan.
Une fois qu’un changement immédiat par lien de paiement est émis, toute nouvelle requête de changement de plan sur cet abonnement — y compris la preview sans effet secondaire — est bloquée jusqu’à la résolution du lien. N’émettez pas un lien que vous ne comptez pas faire payer immédiatement au client.

Gérer les addons

Lors de la modification des plans d’abonnement, vous pouvez également modifier les addons :
Les addons sont inclus dans le calcul de la proratisation et seront facturés selon le mode de proratisation sélectionné.

Appliquer des codes de réduction

Vous pouvez appliquer un ou plusieurs codes de réduction empilés lors de la modification des plans d’abonnement (20 maximum, appliqués dans l’ordre du tableau). Cette fonctionnalité est utile pour proposer des tarifs promotionnels lors d’upgrades ou de migrations.

Comportement des réductions lors d’un changement de plan

Le champ singulier discount_code de cet endpoint est obsolète, mais fonctionne toujours pour assurer la rétrocompatibilité — les intégrations existantes n’ont pas besoin d’être modifiées immédiatement. Il ne peut pas être combiné avec discount_codes dans la même requête. Migrez vers la forme tableau lorsque cela vous conviendra.
Utilisez l’API Preview Plan Change avec discount_codes pour montrer aux clients exactement combien ils économiseront avant de confirmer le changement de plan.

Modes de proratisation

Choisissez comment facturer le client lors d’un changement de plan :

prorated_immediately

  • Facture la différence partielle pour le cycle actuel
  • En période d’essai, facture immédiatement et bascule maintenant vers le nouveau plan
  • Downgrade : peut générer un crédit proratisé appliqué aux futurs renouvellements

full_immediately

  • Facture immédiatement le montant total du nouveau plan
  • Ignore le temps restant de l’ancien plan
Les crédits créés par les downgrades utilisant difference_immediately sont associés à l’abonnement et distincts des avantages de Credit-Based Billing. Ils s’appliquent automatiquement aux futurs renouvellements du même abonnement et ne sont pas transférables entre abonnements.

difference_immediately

  • Upgrade : facture immédiatement la différence de prix entre l’ancien et le nouveau plan
  • Downgrade : ajoute la valeur restante sous forme de crédit interne à l’abonnement et l’applique automatiquement aux renouvellements

do_not_bill

  • Aucun débit ni crédit n’est calculé
  • Le client passe immédiatement au nouveau plan sans ajustement de facturation
  • Le cycle de facturation reste inchangé
  • Idéal pour les migrations commerciales, les passages à un plan gratuit ou l’absorption des différences de coût

Exemples de scénarios

Utilisez systématiquement ces valeurs de référence :
  • Plan actuel : Basic à 30 $/mois
  • Cible de l’upgrade : Pro à 80 $/mois
  • Cible du downgrade (depuis Pro) : Starter à 20 $/mois
  • Cycle de facturation : 30 jours, commencé le 1er janvier
  • Le changement de plan a lieu le 16 janvier (15 jours restants, 15 jours écoulés)

Traitement de la facturation selon chaque mode

Choisissez prorated_immediately pour une comptabilisation équitable fondée sur le temps ; choisissez full_immediately pour redémarrer la facturation ; utilisez difference_immediately pour les upgrades simples et le crédit automatique lors des downgrades ; ou utilisez do_not_bill pour changer de plan sans aucun ajustement de facturation.

Gérer les échecs de paiement

Contrôlez ce qui se passe lorsqu’un paiement de changement de plan échoue à l’aide du paramètre on_payment_failure.

Modes d’échec de paiement

S’il n’est pas spécifié, le paramètre on_payment_failure utilise la valeur par défaut au niveau de l’entreprise, configurée dans le tableau de bord.

Quand utiliser chaque mode

Valeurs par défaut de l’entreprise et de la collection

Au lieu de transmettre des paramètres de proratisation à chaque changement de plan, vous pouvez définir une fois le comportement par défaut des upgrades et downgrades au niveau de l’entreprise. Ces valeurs par défaut s’appliquent à tous les changements de plan du portail client et peuvent être remplacées pour chaque collection de produits. Des valeurs par défaut distinctes sont disponibles pour les upgrades et les downgrades : Configurez les valeurs par défaut de l’entreprise sous Settings → Subscriptions, et les remplacements de collection dans chaque collection de produits. Chaque champ de collection est indépendant : laissez-le vide pour hériter de la valeur par défaut de l’entreprise, ou définissez une valeur pour la remplacer uniquement pour cette collection.

Ordre de résolution

Pour un changement de plan donné, chaque paramètre est résolu dans l’ordre suivant :
Une valeur transmise explicitement à l’API Change Plan est toujours prioritaire. Les valeurs par défaut de l’entreprise et de la collection ne prennent effet qu’en l’absence de valeur explicite — ce qui est le cas pour tous les changements de plan initiés depuis le portail client.
Configuration courante : conservez immediately + difference_immediately pour les upgrades afin que les clients paient la différence et obtiennent l’accès immédiatement, et conservez next_billing_date pour les downgrades afin qu’ils gardent leur plan actuel jusqu’à la fin du cycle.

Gérer les webhooks

Suivez l’état de l’abonnement via les webhooks pour confirmer les changements de plan et les paiements.

Types d’événements à gérer

  • subscription.active : abonnement activé
  • subscription.plan_changed : plan d’abonnement modifié (upgrade/downgrade/modifications d’addons)
  • subscription.on_hold : débit échoué, renouvellements arrêtés
  • subscription.renewed : renouvellement réussi
  • payment.succeeded : paiement du changement de plan ou du renouvellement réussi
  • payment.failed : paiement échoué
Nous recommandons de fonder la logique métier sur les événements d’abonnement et d’utiliser les événements de paiement pour la confirmation et le rapprochement.

Vérifier les signatures et gérer les intents

Pour les schémas détaillés des payloads, consultez les payloads webhook d’abonnement et les payloads webhook de paiement.

Bonnes pratiques

Suivez ces recommandations pour garantir la fiabilité des changements de plan d’abonnement :

Stratégie de changement de plan

  • Testez soigneusement : testez toujours les changements de plan en mode test avant la production
  • Choisissez la proratisation avec attention : sélectionnez le mode de proratisation adapté à votre modèle économique
  • Gérez les échecs avec élégance : implémentez une gestion appropriée des erreurs et une logique de nouvelle tentative
  • Surveillez les taux de réussite : suivez les taux de réussite et d’échec des changements de plan et examinez les problèmes

Implémentation des webhooks

  • Vérifiez les signatures : validez toujours les signatures des webhooks pour garantir leur authenticité
  • Implémentez l’idempotence : gérez correctement les événements webhook en double
  • Traitez les événements de manière asynchrone : ne bloquez pas les réponses webhook avec des opérations lourdes
  • Consignez tout : conservez des journaux détaillés à des fins de débogage et d’audit

Expérience utilisateur

  • Communiquez clairement : informez les clients des changements de facturation et de leur calendrier
  • Fournissez des confirmations : envoyez des confirmations par e-mail pour les changements de plan réussis
  • Gérez les cas particuliers : tenez compte des périodes d’essai, des proratisations et des paiements échoués
  • Mettez l’interface à jour immédiatement : reflétez les changements de plan dans l’interface de votre application

Problèmes courants et solutions

Résolvez les problèmes typiques rencontrés lors des changements de plan d’abonnement :
Symptômes : l’appel API réussit, mais l’abonnement reste sur l’ancien planCauses courantes :
  • Le traitement du webhook a échoué ou a été retardé
  • L’état de l’application n’a pas été mis à jour après la réception des webhooks
  • Problèmes de transaction de base de données lors de la mise à jour de l’état
Solutions :
  • Implémentez une gestion robuste des webhooks avec une logique de nouvelle tentative
  • Utilisez des opérations idempotentes pour les mises à jour d’état
  • Ajoutez une surveillance pour détecter les événements webhook manqués et déclencher des alertes
  • Vérifiez que l’endpoint webhook est accessible et répond correctement
Symptômes : le client effectue un downgrade, mais ne voit pas son solde de créditsCauses courantes :
  • Attentes liées au mode de proratisation : les downgrades créditent la différence totale de prix entre les plans avec difference_immediately, tandis que prorated_immediately crée un crédit proratisé fondé sur le temps restant du cycle
  • Les crédits sont spécifiques à l’abonnement et ne sont pas transférables entre abonnements
  • Le solde de crédits n’est pas visible dans le tableau de bord client
Solutions :
  • Utilisez difference_immediately pour les downgrades lorsque vous souhaitez des crédits automatiques
  • Expliquez aux clients que les crédits s’appliquent aux futurs renouvellements du même abonnement
  • Implémentez le portail client pour afficher les soldes de crédits
  • Consultez la preview de la prochaine facture pour voir les crédits appliqués
Symptômes : les événements webhook sont rejetés en raison d’une signature non valideCauses courantes :
  • Clé secrète webhook incorrecte
  • Corps brut de la requête modifié avant la vérification de la signature
  • Algorithme de vérification de signature incorrect
Solutions :
  • Vérifiez que vous utilisez le bon DODO_WEBHOOK_SECRET depuis le tableau de bord
  • Lisez le corps brut de la requête avant tout middleware d’analyse JSON
  • Utilisez la bibliothèque standard de vérification des webhooks pour votre plateforme
  • Testez la vérification des signatures webhook dans l’environnement de développement
Symptômes : l’API renvoie une erreur 422 Unprocessable EntityCauses courantes :
  • ID d’abonnement ou ID de produit invalide
  • Abonnement dans un état inactif
  • Paramètres requis manquants
  • Produit non disponible pour les changements de plan
Solutions :
  • Vérifiez que l’abonnement existe et est actif
  • Vérifiez que l’ID du produit est valide et disponible
  • Assurez-vous que tous les paramètres requis sont fournis
  • Consultez la documentation de l’API pour connaître les exigences des paramètres
Symptômes : le changement de plan est initié, mais le débit immédiat échoueCauses courantes :
  • Fonds insuffisants sur le moyen de paiement du client
  • Moyen de paiement expiré ou invalide
  • Transaction refusée par la banque
  • Débit bloqué par la détection des fraudes
Solutions :
  • Gérez correctement les événements webhook payment.failed
  • Demandez au client de mettre à jour son moyen de paiement
  • Implémentez une logique de nouvelle tentative pour les échecs temporaires
  • Envisagez d’autoriser les changements de plan malgré les échecs de débits immédiats
Symptômes : le débit du changement de plan échoue et l’abonnement passe à l’état on_holdCe qui se passe : Lorsqu’un débit de changement de plan échoue, l’abonnement est automatiquement placé à l’état on_hold. Il ne se renouvellera pas automatiquement tant que le moyen de paiement n’aura pas été mis à jour.Solution : mettez à jour le moyen de paiement pour réactiver l’abonnementPour réactiver un abonnement à l’état on_hold après un changement de plan échoué :
  1. Mettez à jour le moyen de paiement à l’aide de l’API Update Payment Method
  2. Création automatique du débit : l’API crée automatiquement un débit pour les sommes restantes dues
  3. Génération de la facture : une facture est générée pour le débit
  4. Traitement du paiement : le paiement est traité avec le nouveau moyen de paiement
  5. Réactivation : après la réussite du paiement, l’abonnement est réactivé à l’état active
Événements webhook à surveiller :
  • subscription.on_hold : abonnement mis en attente (reçu lorsque le débit du changement de plan échoue)
  • payment.succeeded : paiement des sommes restantes dues réussi (après la mise à jour du moyen de paiement)
  • subscription.active : abonnement réactivé après la réussite du paiement
Bonnes pratiques :
  • Informez immédiatement les clients lorsqu’un débit de changement de plan échoue
  • Fournissez des instructions claires pour mettre à jour leur moyen de paiement
  • Surveillez les événements webhook pour suivre l’état de la réactivation
  • Envisagez d’implémenter une logique de nouvelle tentative automatique pour les échecs de paiement temporaires

Update Payment Method API Reference

Consultez la documentation complète de l’API pour mettre à jour les moyens de paiement et réactiver les abonnements.

Tester votre implémentation

Suivez ces étapes pour tester soigneusement votre implémentation des changements de plan d’abonnement :
1

Set up test environment

  • Utilisez des clés API de test et des produits de test
  • Créez des abonnements de test avec différents types de plans
  • Configurez un endpoint webhook de test
  • Configurez la surveillance et la journalisation
2

Test different proration modes

  • Testez prorated_immediately avec différentes positions dans le cycle de facturation
  • Testez difference_immediately pour les upgrades et les downgrades
  • Testez full_immediately pour réinitialiser les cycles de facturation
  • Testez do_not_bill pour les changements de plan sans débit ni crédit
  • Vérifiez que les calculs de crédits sont corrects
3

Test webhook handling

  • Vérifiez que tous les événements webhook pertinents sont reçus
  • Testez la vérification des signatures webhook
  • Gérez correctement les événements webhook en double
  • Testez les scénarios d’échec du traitement des webhooks
4

Test error scenarios

  • Testez avec des ID d’abonnement invalides
  • Testez avec des moyens de paiement expirés
  • Testez les défaillances réseau et les expirations de délai
  • Testez avec des fonds insuffisants
5

Monitor in production

  • Configurez des alertes pour les changements de plan échoués
  • Surveillez les délais de traitement des webhooks
  • Suivez les taux de réussite des changements de plan
  • Examinez les tickets du support client relatifs aux problèmes de changement de plan

Gestion des erreurs

Gérez correctement les erreurs API courantes dans votre implémentation :

Codes d’état HTTP

La requête de changement de plan a été traitée avec succès. Le corps de la réponse est vide, sauf pour une requête collect_via_payment_link réussie, qui renvoie des identifiants de checkout — consultez Collecting Payment via a Checkout Link. Si on_payment_failure=prevent_change, le changement de plan reste en attente jusqu’à la réussite du paiement.
Paramètres de requête invalides. Vérifiez que tous les champs requis sont fournis et correctement formatés.
Clé API invalide ou manquante. Vérifiez que votre DODO_PAYMENTS_API_KEY est correcte et dispose des autorisations appropriées.
ID d’abonnement introuvable ou n’appartenant pas à votre compte.
Un changement de plan en attente existe déjà pour cet abonnement (PendingPlanChangeExists). Pour un changement planifié, annulez-le avec DELETE /subscriptions/{subscription_id}/change-plan/scheduled avant d’en soumettre un nouveau. Pour un changement par lien de paiement en attente, aucun endpoint d’annulation n’existe : l’abonnement accepte une nouvelle requête de changement de plan une fois que le client paie ou que le lien expire.
L’abonnement est inactif ou à la demande, ou la requête n’est pas éligible pour collect_via_payment_link — l’entreprise n’a pas activé la capacité, effective_at n’est pas égal à immediately, ou on_payment_failure n’est pas égal à prevent_change. Consultez Conditions requises.
Une erreur serveur s’est produite. Réessayez la requête après un court délai.

Format de réponse d’erreur

Étapes suivantes

Dernière modification le 26 août 2026