Uber Details Its High-Throughput Payment Backend
Uber's engineering team has shared the blueprint for its highly scalable payment account processing system. Key strategies include partitioned dataflows, idempotent operations for safe retries, and asynchronous processing to decouple APIs from backend settlement.
This new payment platform was a necessity born from Uber's rapid expansion. The original monolithic system, built during a period of hypergrowth, was fragmenting, leading to slow transactions, payment discrepancies, and difficulties in reconciling accounts. As Uber expanded into new lines of business like Eats and Freight, the old architecture couldn't keep up, with restaurant payments initially being handled via spreadsheets. At its core, the system is built on the principles of double-entry bookkeeping, ensuring that for every transaction, debits and credits always sum to zero. This creates an immutable and auditable trail of all money movements. Payment orders, once created, cannot be changed; any corrections require a new, counter-balancing order. The architecture relies heavily on a distributed, stream-processing model using Apache Kafka. This allows Uber to handle tens of millions of transactions daily by treating payments as a continuous stream of events. This asynchronous approach provides the scalability and reliability needed for a global operation spanning 65 countries. To handle this massive scale, which includes processing around 1.2 billion settlements monthly, Uber developed a custom application layer called Ledger Store. This system was designed to manage the immense data volume, which involved migrating 250 billion records from the old system. The system also utilizes trillions of indexes to make data retrieval fast and efficient. A key challenge was unifying a fragmented payment landscape that had resulted in 70 different payment endpoints across Uber's various services. This fragmentation led to inconsistent user experiences, where a payment method like Apple Pay might work for a ride but not for a scheduled pickup. The new, unified platform ensures a consistent experience and dramatically accelerates the rollout of new payment methods. The platform integrates with over 50 payment service providers (PSPs) and numerous banks. This requires a flexible integration architecture that can handle both modern, real-time JSON APIs and older, file-based batch processing systems. Key engineering leaders behind this massive undertaking include Mathieu Chauvin, Nimish Sheth, Steven Karis, and Gergely Orosz.