Pay As a Local

How Airbnb rolled out 20+ locally relevant payment methods worldwide in just 14 months

Gerum Haile
13 min readintermediate
--
View Original

Overview

Airbnb's Pay as a Local initiative launched 20+ locally relevant payment methods (LPMs) across multiple global markets in 14 months. The article details the technical architecture behind this expansion, including domain-driven platform modernization, multi-step transaction frameworks, config-driven integration, asynchronous payment orchestration, PSP emulator testing, and centralized observability — all enabling rapid, scalable onboarding of diverse local payment methods.

What You'll Learn

1

How to architect a config-driven payment method integration system using YAML as a single source of truth

2

How to design asynchronous payment orchestration supporting redirect, async (QR code), and direct payment flows

3

How to build a PSP emulator for end-to-end testing of local payment methods without relying on external sandboxes

4

How to implement centralized observability with composite alerts and anomaly detection across client, backend, PSP, and webhook layers

5

Why domain-driven decomposition of a monolithic payment system enables rapid expansion into new markets

Prerequisites & Requirements

  • Understanding of payment processing fundamentals (pay-in, payout, settlement, reconciliation)
  • Familiarity with domain-driven design and microservices architecture
  • Understanding of webhook-based asynchronous communication patterns
  • Experience with third-party API integrations and PSP vendor onboarding(optional)

Key Questions Answered

How did Airbnb integrate 20+ local payment methods in just 14 months?
Airbnb distilled 20+ LPM behaviors into three standardized payment flow archetypes (redirect, async, and direct), then used a config-driven YAML-based approach as a single source of truth for eligibility, input fields, refund rules, and UI rendering. Automated code generation from these configs produced Java classes, DTOs, enums, and integration scaffolding, reducing launches from months to weeks.
What are the three foundational payment flow archetypes for local payment methods?
The three flows are: (1) Redirect flow — guests are redirected to a third-party site/app to complete payment and return to Airbnb (e.g., Naver Pay, GoPay, FPX); (2) Async flow — guests complete payment externally via QR code or push notification, with confirmation via webhooks (e.g., Pix, MB Way, Blik); (3) Direct flow — guests enter credentials within Airbnb's interface for real-time processing (e.g., Cartes Bancaires, Apple Pay).
What is Airbnb's Multi-Step Transaction (MST) framework for payments?
MST is a processor-agnostic framework that supports payment flows completed across multiple stages. It defines a PSP-agnostic transaction language describing intermediate steps called Actions, which include redirects, strong customer authentication (SCA) frictions like challenges and fingerprinting, and payment method-specific flows. When a PSP requires additional user action, its vendor plugin normalizes the request into an ActionPayload with an ACTION_REQUIRED status.
How does Airbnb test local payment methods without access to local wallets?
Airbnb enhanced its in-house PSP Emulator to simulate PSP interactions for both redirect and asynchronous payment methods. For redirect payments, the Emulator provides a UI mirroring PSP acquirer pages where testers can explicitly approve or decline transactions. For async methods, it returns QR code details and automatically schedules webhook emission tasks, delivering a complete end-to-end testing environment without relying on external sandboxes.
How does Airbnb's config-driven payment widget work for local payment methods?
Rather than hardcoding forms and rules into the client, Airbnb centralizes form-field specifications and eligibility checks in the backend. Servers send configuration payloads to clients defining which fields to collect, which validation rules to apply, and which payment options to render. The frontend dynamically adapts UI and validation for each payment method, enabling launches without frequent client releases.
How does Airbnb monitor and observe local payment methods at scale?
Airbnb built a centralized monitoring framework unifying metrics across client, payment backend, PSP, and webhook layers. Onboarding a new LPM requires a single config change to start streaming metrics automatically. Standardized alerting uses composite alerts and anomaly detection with consistent patterns (failure count, rate, time window), minimizing false positives during low-traffic periods and enabling issue tracing in minutes.
How did Airbnb select which local payment methods to support?
Airbnb identified over 300 unique payment options worldwide through research. Using a structured qualification framework, they evaluated the top 75 travel markets and selected the top one to two payment methods per market, excluding those without a clear travel use case. This narrowed the list to just over 20 LPMs best suited for integration into their payment platform.
What is Airbnb's Payments LTA replatforming architecture?
Payments LTA (long-term architecture) is a multi-year initiative that shifted Airbnb from a monolithic payment system to a capability-oriented services system using domain-driven decomposition. Core subdomains include Pay-in, Payout, Transaction Fulfillment, Processing, Wallet & Instruments, Ledger, Incentives & Stored Value, Issuing, and Settlement & Reconciliation. A connector and plugin-based architecture was adopted for onboarding new PSPs.

Key Statistics & Figures

Local payment methods launched
20+
Launched across multiple global markets in 14 months
Global markets Airbnb operates in
220+
Markets where cards are the primary payment method
Unique payment options identified worldwide
300+
Identified through Airbnb's LPM research phase
Travel markets evaluated
75
Top travel markets evaluated for LPM selection
Naver Pay active users in South Korea
30.6 million
As of early 2025, approximately 60% of South Korean population
Pix adoption in Brazil
76%+ of population
By late 2024, surpassing cash, credit, and debit cards
Pix transaction volume in 2024
BRL 26.4 trillion
~USD 4.6 trillion

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Backend
Java
Backend services with automated code generation producing Java classes, DTOs, enums, and integration scaffolding
Configuration
YAML
Central Payment Method Config acting as single source of truth for payment method flows, eligibility, and rules
Integration
Webhooks
Asynchronous payment confirmation from PSP vendors for redirect and async payment flows
Frontend
Qr Code
Payment initiation for async flow methods like Pix where users scan to complete payment
Payment Method
Naver Pay
South Korean digital wallet using redirect flow for payment completion
Payment Method
Pix
Brazilian instant payment system using async QR code flow
Payment Method
Apple Pay
Direct flow payment method processed within Airbnb's interface

Key Actionable Insights

1
Distill diverse integration behaviors into a small set of standardized flow archetypes to maximize reusability. Airbnb analyzed 20+ LPMs and found that all could be categorized into just three flows (redirect, async, direct), which dramatically reduced per-integration engineering effort.
This pattern applies whenever you're integrating with many third-party providers that have superficially different APIs but fundamentally similar interaction patterns.
2
Use a central YAML-based config as a single source of truth for payment method logic including eligibility, UI fields, validation rules, refund behavior, and business rules. This eliminates duplication across frontend, backend, and various services, and enables automated code generation for backend scaffolding.
Config-driven approaches are particularly powerful when you need to onboard many similar integrations quickly — Airbnb reduced launch timelines from months to weeks using this strategy.
3
Build an in-house emulator for third-party service providers rather than depending on their sandbox environments. Airbnb's PSP Emulator allowed developers to test end-to-end payment flows for redirect and async methods without needing access to local wallets or unstable external test environments.
This is essential when integrating with diverse regional vendors whose sandbox environments may be unreliable, incomplete, or simply nonexistent for certain payment methods.
4
Implement centralized, config-driven observability where adding monitoring for a new integration is a single config change. Airbnb's framework automatically streams metrics across client, backend, PSP, and webhook layers when a new payment method name is added.
Use composite alerts combining failure count, failure rate, and time windows to minimize false positives during low-traffic periods while still catching regressions quickly.
5
Design backend-driven UI rendering where servers send configuration payloads defining form fields, validation rules, and payment options. This decouples frontend releases from payment method launches, allowing dynamic adaptation without client updates.
This pattern is critical for mobile apps or any platform where client release cycles are slow and costly, enabling server-side control over checkout experiences.
6
Adopt domain-driven decomposition when modernizing a monolithic payment system, structuring services by capability domains rather than technical layers. Airbnb's shift to subdomains (Pay-in, Payout, Processing, Ledger, etc.) increased reusability, team autonomy, and reduced time to market.
This approach is recommended for any large-scale platform where multiple teams need to work independently on different aspects of the payment lifecycle.

Common Pitfalls

1
Scattering payment method logic across frontend, backend, and various services rather than centralizing in a single config. This leads to duplication, manual updates, and inconsistencies that multiply with each new payment method integration.
Airbnb solved this with a central YAML-based Payment Method Config that both core services and frontend dynamically reference as a single source of truth.
2
Relying on external PSP sandbox environments for testing local payment methods. Many PSPs have unstable or nonexistent sandboxes, and developers often lack access to regional wallets needed for real testing, leading to incomplete test coverage and regressions.
Building an in-house PSP Emulator that simulates both redirect and async flows provides reliable, controllable end-to-end testing without external dependencies.
3
Using a single aggregate 'payment success rate' metric to monitor diverse payment methods. Real-time card payments and asynchronous LPM flows follow completely different technical paths, so a single metric can mask regressions in specific methods until they affect real users.
Airbnb implemented per-method monitoring across four layers (client, backend, PSP, webhook) with composite alerts that combine failure count, rate, and time windows.
4
Hardcoding payment form fields and validation rules into client applications. This creates tight coupling between frontend releases and payment method launches, slowing down integration timelines and requiring app updates for each new market.
Backend-driven UI configuration with server-sent payloads allows dynamic adaptation of checkout forms without requiring client-side code changes or releases.

Related Concepts

Domain-driven Design
Payment Service Provider Integration
Microservices Architecture
Config-driven Development
Asynchronous Payment Orchestration
Strong Customer Authentication (sca)
Webhook-based Event Processing
Payment Platform Modernization
Multi-step Transaction Processing
Connector And Plugin Architecture
Observability And Monitoring
Code Generation From Configuration
Backend-driven UI Rendering
Service Emulators For Testing