PracHub
QuestionsPremiumLearningGuidesInterview PrepNEWCoaches
|Home/System Design/Airbnb

Design an Airbnb wallet with holds and payouts

Last updated: Apr 21, 2026

Quick Overview

This question evaluates a candidate's competency in designing financial transaction systems, covering double-entry append-only ledgers, holds/authorizations and captures, refunds and payouts, multi-currency FX conversion and rounding, idempotency, concurrency safety, and auditable reconciliation.

  • hard
  • Airbnb
  • System Design
  • Software Engineer

Design an Airbnb wallet with holds and payouts

Company: Airbnb

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Technical Screen

Design and implement an Airbnb-style wallet system. Requirements: ( 1) create user accounts and allow deposits; ( 2) support booking holds/authorizations and later captures at check-in; ( 3) allow hold release on cancellation; ( 4) process partial/full refunds; ( 5) pay out hosts after platform fees and taxes; ( 6) enforce spendable vs. total balance with no negative spendable balance; ( 7) support multi-currency balances with FX conversion and rounding rules; ( 8) ensure idempotent operations via client-supplied idempotency keys; ( 9) guarantee concurrency safety for duplicate or overlapping requests; ( 10) maintain an append-only auditable ledger and derive balances from it; ( 11) provide reconciliation to detect inconsistencies; ( 12) define persistence schema (tables or classes) and transaction isolation choices; ( 13) expose clear APIs/methods and include a minimal main() to run sample scenarios; ( 14) write unit tests for happy paths and edge cases (insufficient funds, expired holds, double-capture attempts, partial refunds, FX rate changes). Specify core classes (e.g., Wallet, Account, Transaction, Hold, Capture, Refund, Payout, LedgerEntry, FXConverter), their relationships, and method signatures, and analyze time/space complexity of critical operations.

Quick Answer: This question evaluates a candidate's competency in designing financial transaction systems, covering double-entry append-only ledgers, holds/authorizations and captures, refunds and payouts, multi-currency FX conversion and rounding, idempotency, concurrency safety, and auditable reconciliation.

Related Interview Questions

  • Design a Scalable Job Scheduler - Airbnb
  • Design a Rental Marketplace Backend - Airbnb (hard)
  • Design a booking system - Airbnb (medium)
  • Design a group chat system - Airbnb (medium)
  • Design a real-time chat system with hot groups - Airbnb (hard)
Airbnb logo
Airbnb
Sep 6, 2025, 12:00 AM
Software Engineer
Technical Screen
System Design
20
0

System Design: Airbnb-Style Wallet with Ledger, Holds, FX, and Idempotency

Context

You are asked to design and implement an Airbnb-style wallet system that supports customer deposits, booking holds and captures, refunds, host payouts, multi-currency balances with FX conversion, and a double-entry append-only ledger. The system must be auditable, concurrency-safe, and idempotent.

Assumptions (explicit and minimal):

  • Amounts are stored in minor units (integers) to avoid floating-point errors.
  • Each user has a wallet with per-currency sub-accounts. Platform and hosts are also modeled as accounts.
  • A double-entry ledger ensures that for every entry, debits equal credits; balances are derived from the ledger. For performance, a materialized balances table is maintained transactionally.
  • Booking currency is used for hold and capture; users may convert between currencies within their wallet via an explicit convert operation.

Requirements

  1. Create user accounts and allow deposits.
  2. Support booking holds/authorizations and later captures at check-in.
  3. Allow hold release on cancellation or expiry.
  4. Process partial/full refunds.
  5. Pay out hosts after platform fees and taxes.
  6. Enforce spendable vs. total balance with no negative spendable balance.
  7. Support multi-currency balances with FX conversion and rounding rules.
  8. Ensure idempotent operations via client-supplied idempotency keys.
  9. Guarantee concurrency safety for duplicate or overlapping requests.
  10. Maintain an append-only auditable ledger and derive balances from it.
  11. Provide reconciliation to detect inconsistencies.
  12. Define persistence schema (tables or classes) and transaction isolation choices.
  13. Expose clear APIs/methods and include a minimal main() to run sample scenarios.
  14. Write unit tests for happy paths and edge cases (insufficient funds, expired holds, double-capture attempts, partial refunds, FX rate changes). Include core classes (Wallet, Account, Transaction, Hold, Capture, Refund, Payout, LedgerEntry, FXConverter), their relationships, method signatures, and analyze time/space complexity of critical operations.

Solution

Show

Comments (0)

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Airbnb•More Software Engineer•Airbnb Software Engineer•Airbnb System Design•Software Engineer System Design
PracHub

Master your tech interviews with 7,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.