Étude de cas · SaaS B2B mondial confidentiel

Paiements et abonnements multidevises sur FastAPI + Airwallex pour un SaaS B2B mondial

Comment UnlockLive a livré une pile de paiements et d’abonnements Airwallex de niveau production sur Python et FastAPI — cinq devises en service en 12 semaines, 99,99 % de livraison des webhooks, alignée PCI-DSS et une baisse de 65 % du churn lié aux paiements échoués.

  • SecteurFintech / SaaS
  • Année2025
  • PaysCanada
  • Durée4 mois
Multi-Currency Payments & Subscriptions on FastAPI + Airwallex for a Global B2B SaaS hero screenshot

Résultats en un coup d'œil

  • 5+Devises en production en 12 semaines (USD, CAD, GBP, EUR, AUD)
  • 99.99%Succès de livraison des webhooks après la mise en place du modèle inbox
  • 65%Réduction du taux de désabonnement lié aux paiements échoués
  • SAQ APérimètre PCI maintenu : le backend ne touche jamais aux données de carte

Le défi

Un SaaS B2B en expansion de l’Amérique du Nord vers l’APAC et l’EMEA avait besoin d’une infrastructure de paiement capable d’encaisser en cinq devises, de gérer la facturation d’abonnements, de traiter les nouvelles tentatives avec élégance et de réussir une revue de sécurité. Il avait dépassé une configuration à processeur unique — les marges de change absorbaient 1,8 % du chiffre d’affaires, le règlement prenait plusieurs jours et son gestionnaire de webhooks perdait des événements sous charge. Le directeur financier voulait Airwallex pour le change et les rails mondiaux ; le directeur technique voulait conserver sa pile FastAPI existante et ne pas faire des paiements un service distinct que l’équipe ne pourrait pas exploiter.

La demande : livrer en un seul trimestre une intégration Airwallex en production sur FastAPI + PostgreSQL, avec une fiabilité des webhooks à toute épreuve, une véritable machine à états d’abonnement, une architecture alignée PCI-DSS et un dispositif d’exploitation clair pour que l’ingénieur d’astreinte à 2 h du matin n’ait pas à appeler le directeur technique.

Notre solution

Nous avons construit une intégration Airwallex ciblée autour de trois idées d’ingénierie : un modèle de domaine de paiement typé, un pipeline de webhooks selon le modèle outbox et une machine à états pour le cycle de vie des abonnements que le reste de l’application peut lire mais que seul le code de paiement peut écrire.

Côté API, toutes les données de carte sont collectées avec les éléments de paiement hébergés d’Airwallex, de sorte que le backend de l’application ne touche jamais un PAN — le périmètre PCI reste au niveau SAQ A. Le service FastAPI expose une petite API de paiements typée (modèles Pydantic v2, documentée OpenAPI) que l’équipe produit consomme ; les appels à l’API Airwallex sont encapsulés dans un client unique avec clés d’idempotence, nouvelles tentatives exponentielles et coupe-circuit.

Côté webhooks, chaque événement Airwallex arrive sur un point de terminaison signé et vérifié qui ne fait qu’une chose : persister l’événement brut dans une table `inbox` au sein d’une seule transaction. Un worker distinct traite l’inbox dans l’ordre, avec une livraison au moins une fois et des gestionnaires idempotents. Ce modèle seul a réglé complètement le problème des événements perdus — même lors d’un pic de trafic multiplié par 4 au lancement.

La machine à états des abonnements gère l’essai, l’actif, l’impayé, la relance, la pause, l’annulation et la réactivation, avec des transitions autorisées explicites et un journal d’audit à chaque changement d’état. Les paiements échoués suivent désormais un calendrier de nouvelles tentatives intelligent (et non le backoff exponentiel par défaut) adapté aux habitudes de jour de facturation du client, ce qui a produit la baisse de 65 % du churn lié aux paiements échoués.

  • Éléments de paiement hébergés Airwallex — le backend de l’application ne touche jamais un PAN (PCI SAQ A)
  • API de paiements FastAPI typée avec modèle de domaine Pydantic v2 et contrat OpenAPI
  • Client Airwallex idempotent avec clés d’idempotence, nouvelles tentatives exponentielles et coupe-circuit
  • Pipeline de webhooks selon le modèle inbox — vérification de signature, événement brut persisté, traitement ordonné par un worker
  • Machine à états d’abonnement : essai, actif, impayé, relance, pause, annulé, réactivé
  • Calendrier de relance intelligent adapté aux habitudes de jour de facturation des clients (pas un backoff naïf)
  • Prise en charge multidevise : USD, CAD, GBP, EUR, AUD au lancement — d’autres ajoutées en quelques jours
  • Tableaux de bord Datadog pour le retard des webhooks, le taux de nouvelles tentatives, l’entonnoir de relance et l’exposition au change
  • Véritable guide d’astreinte couvrant une panne d’Airwallex, un arriéré de webhooks et des événements à signature invalide

Comment nous l'avons construit

  1. 01

    Découverte : flux de paiement, change, périmètre de conformité

    Nous avons cartographié les parcours existants de paiement, d'abonnement, de relance et de remboursement ; documenté chaque endroit touchant à l'argent ou aux données de carte ; et produit un document de cadrage PCI d'une page définissant précisément quelles surfaces resteraient dans le périmètre SAQ A. Nous avons aussi passé en revue les chiffres de change sur le mix de devises prévu afin de confirmer le business case d'Airwallex avant d'écrire la moindre ligne de code.

  2. 02

    Architecture : domaine typé, webhooks outbox, idempotence

    Nous avons conçu un domaine de paiements typé (Pydantic v2 + un petit modèle de dépôt), le pipeline de webhooks inbox/outbox, la machine à états des abonnements et le contrat d'idempotence pour le client Airwallex. Chaque appel externe reçoit une clé d'idempotence dérivée de l'événement métier, de sorte qu'une nouvelle tentative ne peut jamais créer un paiement en double.

  3. 03

    Développement : incrémental, derrière des feature flags, avec des tests de rejeu

    Nous avons livré une devise et un parcours d'abonnement à la fois derrière des feature flags, en commençant par le nouveau marché le moins risqué. Chaque gestionnaire de webhook a été livré avec un test de rejeu : nous capturions de vrais événements du bac à sable Airwallex, puis démontrions que le gestionnaire restait correct en cas de désordre, de doublon et de défaillance partielle.

  4. 04

    Lancement : revue PCI, tableaux de bord, guide d'astreinte

    Avant la mise en production, nous avons présenté au responsable de la revue de sécurité le périmètre PCI et le modèle de menaces, déployé des tableaux de bord Datadog pour le retard des webhooks, le taux de nouvelles tentatives, l'entonnoir de relance des impayés et l'exposition au change, et rédigé un véritable playbook d'astreinte qu'un ingénieur peut suivre à 2 h du matin sans réveiller le responsable. Nous sommes restés sous contrat de suivi pendant 8 semaines d'ajustements post-lancement.

Stack technique

  • Python
  • FastAPI
  • Airwallex API
  • PostgreSQL
  • Redis
  • Celery
  • Next.js
  • AWS
  • Sentry
  • Datadog
  • Intégration de paiements
  • Python et FastAPI
  • Ingénierie backend
  • Cybersécurité
“Nous sommes passés d'une configuration à processeur de paiement unique qui perdait des webhooks sous charge à une intégration Airwallex en laquelle notre équipe financière a confiance et que notre responsable de la revue de sécurité a validée du premier coup. La refonte de la relance des impayés a suffi à rentabiliser le projet.”
CTO · SaaS B2B mondial (nom confidentiel)

Questions fréquentes

Comment construire un gestionnaire de webhooks Airwallex fiable dans FastAPI ?

Utilisez le modèle inbox. L'endpoint HTTP fait exactement deux choses : vérifier la signature Airwallex et enregistrer l'événement brut dans une table de base de données au sein d'une seule transaction. Un worker distinct vide la table dans l'ordre, avec une livraison au moins une fois et des handlers idempotents. Cette séparation garantit qu'un handler lent, un déploiement ou une panne en aval ne peut jamais vous faire perdre ou traiter en double un webhook.

Comment maintenir le périmètre PCI au niveau SAQ A tout en utilisant Airwallex sur un backend sur mesure ?

Collectez toutes les données de carte avec les éléments de paiement hébergés d'Airwallex (ou leur Drop-in / Hosted Payment Page). Votre backend ne voit jamais que des identifiants et des jetons Airwallex, jamais un PAN, un CVV ou une date d'expiration. Nous documentons ce périmètre dans une note de cadrage PCI d'une page que votre responsable sécurité peut valider, puis nous mettons en place des garde-fous dans le code afin qu'un futur ingénieur ne puisse pas, par accident, faire entrer des données de carte dans le backend.

FastAPI peut-il gérer de façon fiable un volume de paiements en production ?

Oui : le modèle asynchrone de FastAPI est excellent pour la nature liée aux E/S des API de paiement. La fiabilité vient des modèles qui l’entourent : clés d’idempotence sur chaque appel Airwallex, modèle inbox pour les webhooks, disjoncteur pour le client Airwallex et véritable machine à états d’abonnement. Nous avons livré des piles de paiement FastAPI traitant des dizaines de milliers de paiements par jour avec une livraison des webhooks à cinq neuf.

Comment Airwallex se compare-t-il à Stripe pour un SaaS mondial ?

Airwallex a tendance à l'emporter pour les entreprises qui encaissent dans plus de 4 devises, grâce à de meilleures marges de change et à un règlement transfrontalier plus rapide. Stripe l'emporte généralement pour les SaaS exclusivement nord-américains qui valorisent son écosystème tiers bien plus vaste. Nous intégrons les deux et avons aidé des clients à les faire fonctionner côte à côte par région : les modèles d'intégration que nous utilisons (domaine typé, webhooks en inbox, machine à états) sont indépendants du processeur de paiement.

Combien de temps dure généralement un projet d'intégration Airwallex ?

De 10 à 16 semaines pour une intégration de qualité production couvrant le paiement, les abonnements, les webhooks, le recouvrement, les remboursements et les rapports, pour une seule devise et un seul produit. Chaque devise ou flux d’abonnement supplémentaire ajoute ensuite généralement 1 à 2 semaines. Nous travaillons par tranches serrées derrière des feature flags pour que vous puissiez lancer la première devise avant que la seconde ne soit terminée.

Envie d'un résultat comme celui-ci ?

Parlez à l'équipe qui a construit Paiements et abonnements multidevises sur FastAPI + Airwallex pour un SaaS B2B mondial. Nous définirons le périmètre de votre projet, vous remettrons une proposition à prix fixe et vous présenterons l'exemple le plus proche de notre portfolio.

Réserver un appel stratégique