Design a highly reliable account balance system

Quick Overview

This question evaluates a candidate's ability to architect a highly reliable transactional account-balance service, testing competencies in data modeling and storage choice, API design for idempotency, concurrency and consistency mechanisms, replication/failover, partitioning for scale, and auditability.

Design a highly reliable account balance system

Company: Capital One

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Onsite

## Scenario You are designing a backend service that stores and updates **user account balances** (like a wallet/bank ledger). The system must be **highly reliable** and correct. ## Requirements - Support operations: - **Deposit** funds - **Withdraw** funds (must reject if insufficient funds) - **Transfer** funds between two accounts (atomic: both sides succeed or neither does) - **GetBalance(accountId)** - **Correctness is critical**: - No lost updates, no double-spend, no negative balance (unless explicitly allowed). - Operations may be retried by clients; must handle **idempotency**. - **High availability** with clear consistency guarantees. - Handle high write throughput (many concurrent transactions). - Provide auditability: ability to explain how a balance was derived. ## Deliverables Describe: - Data model and storage choice - API design (including idempotency) - Concurrency/consistency approach - Replication/failover strategy - How you would scale (sharding/partitioning) - Key metrics and failure modes

Overview: This question evaluates a candidate's ability to architect a highly reliable transactional account-balance service, testing competencies in data modeling and storage choice, API design for idempotency, concurrency and consistency mechanisms, replication/failover, partitioning for scale, and auditability.

|Home/System Design/Capital One
Capital One logo
Capital One
Dec 25, 2025
mediumSoftware EngineerOnsiteSystem Design
55
0

Scenario

You are designing a backend service that stores and updates user account balances (like a wallet/bank ledger). The system must be highly reliable and correct.

Requirements

  • Support operations:
    • Deposit funds
    • Withdraw funds (must reject if insufficient funds)
    • Transfer funds between two accounts (atomic: both sides succeed or neither does)
    • GetBalance(accountId)
  • Correctness is critical :
    • No lost updates, no double-spend, no negative balance (unless explicitly allowed).
    • Operations may be retried by clients; must handle idempotency .
  • High availability with clear consistency guarantees.
  • Handle high write throughput (many concurrent transactions).
  • Provide auditability: ability to explain how a balance was derived.

Deliverables

Describe:

  • Data model and storage choice
  • API design (including idempotency)
  • Concurrency/consistency approach
  • Replication/failover strategy
  • How you would scale (sharding/partitioning)
  • Key metrics and failure modes

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...