Caso de éxito · SaaS B2B global confidencial

Pagos multidivisa y suscripciones con FastAPI + Airwallex para un SaaS B2B global

Cómo UnlockLive entregó un stack de pagos y suscripciones de Airwallex de nivel productivo en Python y FastAPI — cinco monedas activas en 12 semanas, 99.99% de entrega de webhooks, alineado con PCI-DSS y una reducción del 65% en la pérdida de clientes por pagos fallidos.

  • SectorFintech / SaaS
  • Año2025
  • PaísCanadá
  • Duración4 meses
Multi-Currency Payments & Subscriptions on FastAPI + Airwallex for a Global B2B SaaS hero screenshot

Resultados de un vistazo

  • 5+Monedas operativas en 12 semanas (USD, CAD, GBP, EUR, AUD)
  • 99.99%Éxito en la entrega de webhooks tras implantar el patrón inbox
  • 65%Reducción de la baja de suscripciones por pagos fallidos
  • SAQ AAlcance PCI mantenido: el backend nunca toca datos de tarjetas

El reto

Un SaaS B2B que se expandía de Norteamérica a APAC y EMEA necesitaba una infraestructura de pagos capaz de cobrar en cinco monedas, gestionar la facturación por suscripción, manejar los reintentos con elegancia y superar una revisión de seguridad. Habían superado una configuración de un solo procesador: los márgenes de cambio se comían el 1.8% de los ingresos, la liquidación tardaba varios días y su gestor de webhooks existente perdía eventos bajo carga. El CFO quería Airwallex por el cambio de divisas y las redes globales; el CTO quería conservar su stack FastAPI y no convertir los pagos en un servicio aparte que el equipo no pudiera operar.

El encargo: entregar en un solo trimestre una integración de Airwallex en producción sobre FastAPI + PostgreSQL, con una fiabilidad de webhooks a prueba de balas, una verdadera máquina de estados de suscripción, una arquitectura alineada con PCI-DSS y una operación limpia para que el ingeniero de guardia a las 2 a. m. no tenga que despertar al CTO.

Nuestra solución

Construimos una integración de Airwallex centrada en tres ideas de ingeniería: un modelo de dominio de pagos tipado, un pipeline de webhooks con patrón outbox y una máquina de estados para el ciclo de vida de la suscripción que el resto de la app puede leer, pero en la que solo el código de pagos puede escribir.

En el lado de la API, todos los datos de tarjeta se recogen con los elementos de pago alojados de Airwallex, de modo que el backend de la aplicación nunca toca un PAN — el alcance de PCI se mantiene en SAQ A. El servicio FastAPI expone una API de pagos pequeña y tipada (modelos Pydantic v2, documentada con OpenAPI) que consume el equipo de producto; las llamadas a la API de Airwallex se envuelven en un único cliente con claves de idempotencia, reintentos exponenciales y circuit breaker.

En el lado de los webhooks, cada evento de Airwallex llega a un endpoint firmado y verificado que hace una sola cosa: persistir el evento sin procesar en una tabla `inbox` dentro de una única transacción. Un worker independiente procesa el inbox en orden, con entrega al menos una vez y manejadores idempotentes. Este patrón por sí solo resolvió por completo el problema de eventos perdidos — incluso durante un pico de tráfico 4 veces mayor en el lanzamiento.

La máquina de estados de suscripción gestiona prueba, activa, vencida, reclamación de cobro, pausada, cancelada y reactivada, con transiciones permitidas explícitas y un registro de auditoría en cada cambio de estado. Los pagos fallidos ahora siguen un calendario inteligente de reintentos (no el retroceso exponencial por defecto) ajustado a los patrones del día de facturación del cliente, lo que produjo la reducción del 65% en la pérdida de clientes por pagos fallidos.

  • Elementos de pago alojados de Airwallex — el backend de la aplicación nunca toca un PAN (PCI SAQ A)
  • API de pagos FastAPI tipada con modelo de dominio Pydantic v2 y contrato OpenAPI
  • Cliente de Airwallex idempotente con claves de idempotencia, reintento exponencial y circuit breaker
  • Pipeline de webhooks con patrón inbox — verificación de firma, evento sin procesar persistido, vaciado ordenado por worker
  • Máquina de estados de suscripción: prueba, activa, vencida, reclamación de cobro, pausada, cancelada, reactivada
  • Calendario inteligente de reclamación de cobros ajustado a los patrones del día de facturación del cliente (no un retroceso ingenuo)
  • Compatibilidad multimoneda: USD, CAD, GBP, EUR, AUD activas en el lanzamiento — otras añadidas en días
  • Paneles de Datadog para retraso de webhooks, tasa de reintentos, embudo de reclamación de cobros y exposición cambiaria
  • Manual de guardia real que cubre caídas de Airwallex, acumulación de webhooks y eventos con firma inválida

Cómo lo construimos

  1. 01

    Descubrimiento: flujos de pago, divisas, alcance de cumplimiento

    Mapeamos los flujos existentes de pago, suscripción, dunning y reembolso; documentamos cada punto que tocaba dinero o datos de tarjeta; y elaboramos un documento de alcance PCI de una página que definía exactamente qué superficies permanecerían en SAQ A. También ejecutamos las cifras de FX sobre la mezcla de monedas prevista para confirmar el caso de negocio de Airwallex antes de escribir una sola línea de código.

  2. 02

    Arquitectura: dominio tipado, webhooks con outbox, idempotencia

    Diseñamos un dominio de pagos tipado (Pydantic v2 + un pequeño patrón de repositorio), el pipeline de webhooks inbox/outbox, la máquina de estados de suscripciones y el contrato de idempotencia para el cliente de Airwallex. Cada llamada externa recibe una clave de idempotencia derivada del evento de negocio, de modo que un reintento nunca pueda crear un cobro duplicado.

  3. 03

    Desarrollo: incremental, con feature flags y pruebas de repetición

    Entregamos una moneda y un flujo de suscripción a la vez detrás de feature flags, empezando por el nuevo mercado de menor riesgo. Cada manejador de webhooks se entregó con una prueba de repetición: capturábamos eventos reales del sandbox de Airwallex y luego demostrábamos que el manejador seguía siendo correcto ante reordenamientos, duplicados y fallos parciales.

  4. 04

    Lanzamiento: revisión PCI, paneles, manual de guardia

    Antes del lanzamiento guiamos al revisor de seguridad por el alcance de PCI y el modelo de amenazas, desplegamos dashboards de Datadog para el retraso de webhooks, la tasa de reintentos, el embudo de reclamo de pagos (dunning) y la exposición cambiaria, y escribimos un playbook de guardia real que un ingeniero puede seguir a las 2 a. m. sin avisar al responsable. Continuamos con un contrato de soporte durante 8 semanas de ajustes posteriores al lanzamiento.

Stack tecnológico

  • Python
  • FastAPI
  • Airwallex API
  • PostgreSQL
  • Redis
  • Celery
  • Next.js
  • AWS
  • Sentry
  • Datadog
  • Integración de pagos
  • Python y FastAPI
  • Ingeniería backend
  • Ciberseguridad
“Pasamos de una configuración con un solo procesador que perdía webhooks bajo carga a una integración con Airwallex en la que confía nuestro equipo de finanzas y que nuestro revisor de seguridad aprobó a la primera. La reconstrucción del dunning pagó el proyecto por sí sola.”
CTO · SaaS B2B global (nombre confidencial)

Preguntas frecuentes

¿Cómo se construye un manejador de webhooks de Airwallex fiable en FastAPI?

Use el patrón inbox. El endpoint HTTP hace exactamente dos cosas: verificar la firma de Airwallex y persistir el evento sin procesar en una tabla de la base de datos dentro de una única transacción. Un worker independiente vacía la tabla en orden, con entrega al menos una vez y manejadores idempotentes. Esta separación significa que un manejador lento, un despliegue o una caída aguas abajo nunca podrán hacerle perder o procesar dos veces un webhook.

¿Cómo se mantiene el alcance de PCI en SAQ A usando Airwallex sobre un backend a medida?

Recopile todos los datos de tarjeta con los elementos de pago alojados de Airwallex (o su Drop-in / Hosted Payment Page). Su backend solo ve ID y tokens de Airwallex, nunca un PAN, CVV o fecha de vencimiento. Documentamos este alcance en una nota de alcance PCI de una página que su revisor de seguridad puede aprobar, y luego añadimos salvaguardas en el código para que un futuro ingeniero no pueda introducir datos de tarjeta en el backend por accidente.

¿Puede FastAPI manejar de forma fiable un volumen de pagos de producción?

Sí: el modelo asíncrono de FastAPI es excelente para la naturaleza limitada por E/S de las API de pago. La fiabilidad proviene de los patrones que lo rodean: claves de idempotencia en cada llamada a Airwallex, el patrón inbox para webhooks, un circuit breaker para el cliente de Airwallex y una verdadera máquina de estados de suscripciones. Hemos entregado soluciones de pago con FastAPI que procesan decenas de miles de cargos al día con entrega de webhooks de cinco nueves.

¿Cómo se compara Airwallex con Stripe para un SaaS global?

Airwallex suele ganar para empresas que cobran en 4 o más monedas gracias a mejores márgenes de cambio y una liquidación transfronteriza más rápida. Stripe suele ganar para SaaS solo de Norteamérica que valoran su ecosistema de terceros mucho más amplio. Integramos ambos y hemos ayudado a clientes a operarlos en paralelo por región: los patrones de integración que usamos (dominio tipado, webhooks con inbox, máquina de estados) son independientes del procesador.

¿Cuánto suele durar un proyecto de integración con Airwallex?

De 10 a 16 semanas para una integración de nivel productivo que cubra checkout, suscripciones, webhooks, dunning, reembolsos e informes con una sola moneda y producto. Cada moneda o flujo de suscripción adicional suele añadir de 1 a 2 semanas. Trabajamos en incrementos acotados con feature flags para que pueda lanzar la primera moneda antes de terminar la segunda.

¿Quiere un resultado como este?

Hable con el mismo equipo que construyó Pagos multidivisa y suscripciones con FastAPI + Airwallex para un SaaS B2B global. Definiremos el alcance de su proyecto, le daremos una propuesta a precio fijo y le mostraremos el caso más parecido de nuestro portafolio.

Reservar una llamada estratégica