PracHub
QuestionsPremiumCoachesLearningGuidesInterview Prep
|Home/Software Engineering Fundamentals/Airbnb

Design a banking ledger for deposits/withdrawals

Last updated: Apr 22, 2026

Quick Overview

This question evaluates a candidate's competency in monetary data modeling, concurrency control, idempotency, and maintaining transactional correctness for account balances, including handling currency precision and chronological transaction history.

  • medium
  • Airbnb
  • Software Engineering Fundamentals
  • Software Engineer

Design a banking ledger for deposits/withdrawals

Company: Airbnb

Role: Software Engineer

Category: Software Engineering Fundamentals

Difficulty: medium

Interview Round: Technical Screen

## Banking/OO Design: Account Ledger Design a minimal in-memory or persistent component for a bank account system that supports: - `deposit(account_id, amount)` - `withdraw(account_id, amount)` (reject if insufficient funds) - `transactionHistory(account_id)` (list transactions in chronological order) - `balance(account_id)` ### Requirements - Amounts are non-negative and use correct currency precision. - Concurrency: multiple operations may happen at the same time for the same account. - Avoid double-processing if a client retries a request (idempotency). Describe your data model and how you ensure correctness.

Quick Answer: This question evaluates a candidate's competency in monetary data modeling, concurrency control, idempotency, and maintaining transactional correctness for account balances, including handling currency precision and chronological transaction history.

Related Interview Questions

  • Design a Connect-Four-like board game - Airbnb (hard)
  • How do you conduct a code review exercise? - Airbnb (hard)
  • Design an extensible request Retryer - Airbnb (medium)
Airbnb logo
Airbnb
Feb 11, 2026, 12:00 AM
Software Engineer
Technical Screen
Software Engineering Fundamentals
21
0
Loading...

Banking/OO Design: Account Ledger

Design a minimal in-memory or persistent component for a bank account system that supports:

  • deposit(account_id, amount)
  • withdraw(account_id, amount) (reject if insufficient funds)
  • transactionHistory(account_id) (list transactions in chronological order)
  • balance(account_id)

Requirements

  • Amounts are non-negative and use correct currency precision.
  • Concurrency: multiple operations may happen at the same time for the same account.
  • Avoid double-processing if a client retries a request (idempotency).

Describe your data model and how you ensure correctness.

Solution

Show

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...

Browse More Questions

More Software Engineering Fundamentals•More Airbnb•More Software Engineer•Airbnb Software Engineer•Airbnb Software Engineering Fundamentals•Software Engineer Software Engineering Fundamentals
PracHub

Master your tech interviews with 8,000+ 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.