How Airbnb Rolled Out 20+ Local Payment Methods in ~14 Months

At global scale, relying only on cards does not match local payment habits or financial inclusion in many markets. The "Pay as a Local" initiative is about offering locally preferred methods without turning every partner into a one-off engineering project.

Disclaimer: this post is a synthesis based on publicly shared information from Airbnb Engineering. If you spot an inaccuracy, let me know and I will correct it.

For a long time, credit and debit cards were enough. Across 220+ countries, that assumption breaks down: in many regions, cards are not the default, or are simply not accessible to a meaningful share of users.

The product goal sounds simple; execution is not: ship on the order of twenty local payment methods in about fourteen months, without making every integration a bespoke, non-repeatable effort.

Local payment methods: what they are and why they matter

LPMs span very different realities: digital wallets, bank transfers or instant schemes (QR, push), regional networks, and more. They are not a single uniform category, but a family of user journeys and regulatory constraints.

The product upside is direct:

  • better checkout conversion with a familiar instrument
  • access to markets where cards are not dominant
  • lower friction for users without a usable card

According to the public write-up, Airbnb first mapped a very wide candidate set, then prioritized a subset per market, with a pragmatic "impact first" cut rather than trying to boil the ocean on day one.

Modernize the platform before stacking integrations

The core story is not "plug in another PSP" but reduce the cost of change. A tightly coupled monolith makes every addition slow, regression-prone, and hard to parallelize across teams.

The direction described publicly is to reshape payments around domains and capabilities (pay-in, payout, processing, ledger, wallet, and so on). That is structural work: it pays off when integration velocity and reliability are both non-negotiable.

Diagram illustrating payment platform decomposition by domain and capability (pay-in, payout, ledger, etc.)

Domain / capability decomposition - illustrative structure.

MST: PSP-agnostic multi-step transactions

Many LPMs do not follow a single-shot card authorization. They often require redirects, strong authentication, QR flows, session resume, or waiting for asynchronous confirmation.

To avoid a bespoke branch per partner, Airbnb describes a Multi-Step Transactions (MST) framework: the PSP expresses what the user must do as actions, and the platform orchestrates state transitions (for example an "action required"-style status). The architectural bet is composability: the same building blocks serve multiple methods.

Illustrative envelope (simplified, not a real API contract):

{
  "actionType": "redirect",
  "actionParameters": {
    "redirectUrl": "https://...",
    "method": "GET"
  }
}

Three foundational flows

Instead of twenty unique implementations, the public narrative groups behaviors into a small set of flows, each with its own security and state-recovery requirements.

1. Redirect

The user temporarily leaves Airbnb to complete payment at the PSP, then returns through a resume mechanism. The hard parts are session coherence, validating the return path, and managing intermediate states safely.

2. Asynchronous (webhook)

Payment finalizes on a local network (QR, push, etc.); Airbnb learns the outcome later, typically via webhook. Complexity shifts to idempotency, callback load, and correlating external events with internal transactions.

3. Direct

Credentials are collected inside Airbnb's UI and the response is immediate, in a card-like pattern. Useful when the PSP supports it and the product needs a fully in-app experience.

This decomposition is a deliberate trade-off: accept orchestration complexity to prevent an explosion of ad hoc paths.

Payment orchestration diagram: action-required state and flow resume (redirect, QR, etc.)

Multi-step orchestration: action-required handling and flow resume (redirect, QR, etc.).

Config-driven integration: YAML as the single source of truth

To industrialize onboarding a new method, variability (eligibility, required fields, refund rules, flow type, and more) is centralized in a Payment Method Config, publicly described as YAML that acts as a shared contract across teams and systems.

The intended benefit is less duplicated logic across frontend and backend, fewer alignment bugs, and a more declarative integration story. Airbnb goes further by deriving code generation (DTOs, enums, schemas, scaffolding) from that config to speed delivery and reduce missed edge cases.

Before and after comparison: method-specific logic moves into centralized Payment Method configuration

Before / after - Payment Method Config (YAML) as the shared source of truth.

Dynamic widget: backend-driven fields and validation

LPMs often need method-specific fields (local tax identifiers, account formats, etc.). Rather than hard-coding forms in every mobile and web client, the platform can push a specification (fields, constraints, error messaging). Clients interpret rather than encode business rules.

Trade-off: more operational flexibility and fewer client releases per method, in exchange for a richer API contract, stronger compatibility guardrails, and a wider testing surface.

Checkout example: Visa card entry and Or pay with Pix option

Checkout UX example: Visa card and alternate local method (Pix) on one screen.

Pix flow diagram with Payment Method Config, fields, and validation

Pix flow driven by config: method, fields, and validation rules.

Testing: a PSP emulator for realistic terrain

Testing every method "for real" is often impossible for a developer: bank accounts, country constraints, reliance on partner sandboxes. The described approach relies on a PSP emulator (redirects, scheduled webhooks, controlled approve/decline paths) to approximate end-to-end journeys without access to every local wallet worldwide.

Cost: build and maintain the tool; benefit: catch regressions earlier on paths that are already fragile by nature.

Test setup with PSP emulator simulating redirects and webhooks

PSP emulator for realistic end-to-end testing.

Observability: layered metrics and consistent alerting

More methods mean more execution paths. Without aligned telemetry, regressions surface too late, often only in production.

The public narrative emphasizes instrumentation across layers (client, payments backend, PSP calls, webhooks) and standardized alerting rules (volume, failure rates, time windows). The goal is for a new method to be "observable by default" instead of every team reinventing dashboards.

Takeaways

This path is a platform bet: MST, centralized config and codegen, dynamic UI, an emulator, observability, and rollout governance. It is not free in organizational complexity or ongoing maintenance.

It tends to make sense when:

  • checkout is business-critical
  • real-world diversity of methods and flows is high
  • you need fast launches without sacrificing perceived reliability

In a smaller scope (few methods, a PSP that already covers the essentials, tolerance for manual workflows), a simpler architecture may still be the best cost/risk trade-off.

Reference

Airbnb Engineering: "Pay as a Local".

Written by

Youssef LAIDOUNI

Full Stack Engineer | Java • Angular • PHP | APIs, MVP, Performance & Automation