# Migrer des abonnements vers Stripe Billing à l'aide des API Stripe Comment migrer vos abonnements existants vers Stripe à l'aide des API Stripe. Comment migrer vos *abonnements* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) existants d’un système maison tiers ou d’un compte Stripe existant vers Stripe Billing à l’aide des API Stripe. ## Avant de commencer 1. Si vous ne l’avez pas encore fait, passez en revue les [étapes de la migration](https://docs.stripe.com/billing/subscriptions/migrate-subscriptions.md). 1. [Créez une intégration de Stripe Billing](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md). Cette condition préalable n’est requise qu’une seule fois avant d’importer des abonnements vers Stripe et vous n’aurez pas besoin de la répéter pour les prochaines migrations. 1. [Demandez l’importation des données du PAN à votre prestataire de services de paiement actuel](https://docs.stripe.com/get-started/data-migrations/pan-import.md). Si vous effectuez une migration interne à Stripe, cette étape n’est pas nécessaire car vous utilisez déjà Stripe pour le traitement de vos paiements. ## Gérer les anciens produits et tarifs Si vous avez besoin d’utiliser vos *modèles tarifaires* (The pricing model consists of the products or services you sell, how much they cost, what currency you accept for payments, and the service period to charge (for subscriptions). To build the pricing model, you use Products—what you sell—and Prices—how much and how often to charge for your products) *antérieurs* (Technology that's no longer recommended) dans Stripe, créez un produit substituable (par exemple, `Legacy plan`). En voici un exemple : ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d id={{NEW_PRODUCT_ID}} \ -d "name=Legacy plan" \ -d "description=Imported legacy plan from source system" \ -d "metadata[OLD_PRODUCT_ID]={{OLD_PRODUCT_ID}}" ``` Pour modifier des abonnements correspondant à des offres antérieures, transmettez les tarifs voulus à l’aide du paramètre `items.price_data`. Cette action remplace tous les tarifs existants. Pour en savoir plus, consultez la page [Tarifs variables](https://docs.stripe.com/products-prices/how-products-and-prices-work.md#variable-pricing). ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "items[0][price_data][currency]=USD" \ -d "items[0][price_data][product]={{PRODUCT_ID}}" \ -d "items[0][price_data][recurring][interval]=month" \ -d "items[0][price_data][recurring][interval_count]=3" \ -d "items[0][price_data][unit_amount]=1000" \ -d "items[0][quantity]=1" ``` ## Importer vos abonnements Une fois que vous avez importé vos clients et créé un modèle tarifaire, vous pouvez commencer à importer vos abonnements. Vous devriez pouvoir exporter les données d’abonnement des systèmes tiers via leur interface utilisateur ou leur API. Si cette option n’est pas proposée, contactez le prestataire auprès duquel vous avez créé vos abonnements. Pour importer des Abonnement, utilisez la liste de vos clients afin de créer pour chacun d ’ eux l ’ abonnement qui convient. Par exemple, si un abonné souscrit une offre tarifaire mensuelle `Basic` dans votre ancien modèle, utilisez le tarif récurrent mensuel associé à ce niveau lorsque vous créez son abonnement dans Stripe. ### Rendre les données source compatibles avec Stripe Avant de lancer l’importation des abonnements dans Stripe, veillez à ce que toutes vos données sources correspondent au format que nous attendons. #### Champs importants pour migrer des abonnements Si des données d’abonnement pertinentes sont utilisées dans votre intégration personnalisée mais pas par Stripe, vous pouvez appliquer vos données au champ `metadata` des abonnements que vous créez dans Stripe. Le tableau suivant décrit les autres champs importants à prendre en compte lors de l’importation d’abonnements. | Champ | Description | | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [customer](https://docs.stripe.com/api/subscription_schedules/object.md#subscription_schedule_object-customer) | Vérifiez que votre nouvel ID client dans Stripe corresponde à l’ID client de vos données sources. | | [phases.items.price](https://docs.stripe.com/api/subscription_schedules/object.md#subscription_schedule_object-phases-items-price) | Vérifiez que votre nouvel ID de tarif dans Stripe corresponde à l’ID de tarif de vos données sources. | | [current_phase.start_date](https://docs.stripe.com/api/subscription_schedules/object.md#subscription_schedule_object-current_phase-start_date) | Veillez à ce que la planification d’abonnement que vous avez définie sur Stripe corresponde à vos données sources initiales et que leur continuité soit maintenue. Par exemple, s’il reste 6 mois sur l’abonnement annuel d’un client dans votre système source, assurez-vous que les paramètres `billing_cycle_anchor` et `start_date` reflètent le fait que l’abonnement est à moitié écoulé. | | Métadonnées tierces | Importez d’éventuels champs de données supplémentaires à partir de vos données sources. Il peut s’agir de noms de produits ou d’offres, ainsi que d’ID d’applications tierces. | | Paramètres fiscaux | Indiquez les numéros fiscaux, les numéros de TVA ou tout autre information à caractère fiscal. | #### Préparer les tarifs existants Si vous avez créé des paramètres substituables pour vos [anciens tarifs](https://docs.stripe.com/billing/subscriptions/import-subscriptions.md#legacy-prices), vous devez faire correspondre ces tarifs aux abonnements et aux clients que vous importez. Pour chaque abonnement bénéficiant d’un ancien tarif, utilisez le paramètre [price_data](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data) de l’API [Subscriptions](https://docs.stripe.com/api/subscriptions.md#subscriptions) afin de transmettre des informations relatives au tarif et à l’abonnement. Les champs suivants sont obligatoires : | Paramètre | Description | | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [currency](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-currency) | Devise du tarif, qui respecte le code ISO à trois lettres. | | [product](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-product) | ID d’emplacement du produit. Vous pouvez l’utiliser pour tous vos tarifs antérieurs. | | [recurring](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-recurring) | Informations relatives au montant et à la fréquence du tarif récurrent. | | [recurring.interval](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-recurring) | Fréquence de l’intervalle : `day`, `week`, `month` ou `year`. | | [recurring.interval_count](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-recurring-interval_count) | Périodes entre les facturations. Par exemple, si vous définissez `interval=day` et `interval_count=30`, cela signifie que vous allez facturer votre client tous les 30 jours. La période maximale est de 1 an (1 an, 12 mois ou 52 semaines). | | [recurring.unit_amount_decimal](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-unit_amount_decimal) | Comme le [unit_amount](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items-price_data-unit_amount), mais avec la possibilité d’indiquer des montants plus précis en centimes, jusqu’à 12 décimales. Vous ne pouvez définir qu’un seul des éléments suivants : `unit_amount` ou `unit_amount_decimal`. | ### Importer des données d’abonnement dans Stripe Une fois que vous avez préparé vos données sources, vous pouvez commencer l’importation de vos abonnements dans Stripe. #### Tests Utilisez un *environnement 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 réaliser au moins une fois le processus d’importation du modèle tarifaire avant de l’exécuter en mode production. Vous devez remapper votre script : - Si vous supprimez les données dans l’environnement de test et que vous réalisez à nouveau l’importation. - Au moment de passer en mode production, car les ID des tarifs diffèrent selon le mode utilisé. Dans un environnement de test, vous pouvez utiliser des [horloges de simulation](https://docs.stripe.com/billing/testing/test-clocks.md) pour tester l’évolution des abonnements dans le temps. Vous pouvez ainsi observer le comportement des abonnements migrés en mode production. #### Créer des abonnements Bien qu’il soit possible de créer des abonnements à l’aide de l’API [Subscription](https://docs.stripe.com/api/subscriptions.md), nous vous recommandons d’utiliser l’API [Subscription Schedules](https://docs.stripe.com/api/subscription_schedules.md), qui permet de planifier des abonnements démarrant à une date ultérieure. Par exemple, seule cette API vous donne la possibilité de démarrer des abonnements mensuels avec plus de 30 jours d’avance. Le fait de pouvoir planifier des abonnements futurs vous permet également de vérifier l’importation avant de lancer la facturation de vos clients en mode production. En outre, l’API Subscription Schedules propose des `phases`, qui permettent une bien meilleure flexibilité en matière de définition de paramètres (tels que le comportement fiscal, la méthode d’encaissement et l’utilisation des bons de réduction) sur des périodes plus précises. Vous avez également la possibilité de définir un comportement différent pour des périodes distinctes. Par exemple, vous pourriez appliquer un bon de réduction pour les 3 premiers mois d’un abonnement annuel. Voici comment créer des abonnements démarrant le 1 juin 2022 à 00:00 UTC. ```curl curl https://api.stripe.com/v1/subscription_schedules \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "default_settings[billing_cycle_anchor]=phase_start" \ -d "phases[0][items][0][price]={{PRICE_ID}}" \ -d start_date=1654066801 ``` ## Confirmer votre migration Une fois vos abonnements importés, utilisez l’API pour vérifier que les abonnements ont bien été créés dans Stripe. Pour afficher tous les abonnements dans Stripe, utilisez l’[API List Subscriptions](https://docs.stripe.com/api/subscriptions/list.md). Vous pouvez transmettre le paramètre [created](https://docs.stripe.com/api/subscriptions/list.md#list_subscriptions-created) pour afficher uniquement les abonnements récents. ```curl curl -G https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "created[gt]=1647294709" ``` ## See also - [Planifications d’abonnement](https://docs.stripe.com/api/subscription_schedules.md)