← Airbnb Interview Insights

Airbnb·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jul 2026

Summary

Airbnb system design round for a software engineer role. The question was a full wallet system build, the kind where you think you know where it's going and then fifteen minutes in you're drowning in edge cases about FX rounding and idempotency. Brutal but fair.

Questions Asked (1)

Q1

Design and implement an Airbnb-style wallet system that supports user accounts, deposits, booking holds and captures, cancellation releases, partial and full refunds, host payouts after fees and taxes, multi-currency balances with FX conversion, idempotent operations, concurrency safety, and an append-only auditable ledger. Define your schema, APIs, core classes, and analyze complexity.

System DesignData ModelingTechnical Trade-offs
Author's notes

This is basically a full payments platform crammed into one question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scope, then design an append-only ledger as the source of truth with double-entry accounting. Define the schema, APIs, and core classes to handle idempotency, concurrency, and multi-currency, and finally analyze complexity and trade-offs.

Pro tip: Emphasize idempotency and auditability from the start—use idempotency keys for all mutating operations and ensure every transaction is recorded in an append-only ledger. This demonstrates maturity in handling financial systems.

1. Clarify Requirements and Scope

Ask questions to understand expected scale, consistency requirements, supported currencies, and regulatory constraints. Confirm the need for idempotency, concurrency safety, and auditability.

2. Design the Ledger and Schema

Propose an append-only ledger with double-entry accounting. Define tables for accounts, transactions, ledger entries, holds, and refunds, including fields for idempotency keys, currency, and timestamps.

3. Define APIs and Core Classes

Outline RESTful APIs for deposits, holds, captures, releases, refunds, payouts, and FX conversion. Describe core classes like Wallet, Ledger, Transaction, and IdempotencyManager.

4. Address Concurrency and Idempotency

Explain how to use database transactions, optimistic locking, and idempotency keys to ensure consistency and prevent duplicate operations. Discuss handling of concurrent updates to balances.

5. Analyze Complexity and Trade-offs

Discuss time and space complexity of key operations, scalability considerations, and trade-offs between consistency and availability. Mention potential bottlenecks and mitigation strategies.

Key Points to Mention

  • Append-only ledger with double-entry accounting for auditability
  • Idempotency keys for all mutating operations to prevent duplicates
  • Concurrency control using database transactions and optimistic locking
  • Multi-currency support with FX conversion and rounding handling
  • Separation of holds and captures to manage booking flows
  • Host payouts after deducting fees and taxes, with proper ledger entries

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.