Previously, Airbnb’s payment orchestration system (which ensures reliable money transfer between hosts, guests, and Airbnb) was tightly coupled with its concept of a rental reservation. As such, it could not be reused for other products like Airbnb Experiences. To address this limitation and migrate towards a service-oriented architecture, Airbnb redesigned this system. In this post, Bryon Ross describes how Airbnb used Orpheus, its idempotency framework to ensure consistency between events and transactional data sources; separated payment-specific logic from product-specific logic; and modify payment orchestration plans based on immutable data. He also described the migration to the new payment orchestration system, including how it was subdivided into phases by feature or product and the challenges associated with adopting a new payment data model.