PracHub
QuestionsPremiumLearningGuidesCheatsheetNEWCoaches
|Home/System Design/Coinbase

Design a basic banking system

Last updated: Mar 29, 2026

Quick Overview

This question evaluates understanding of transactional system design, data modeling for financial domains, API design, idempotency, concurrency control, immutable audit trails, and security considerations in an online banking context.

  • hard
  • Coinbase
  • System Design
  • Software Engineer

Design a basic banking system

Company: Coinbase

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Onsite

Design and implement a basic online banking system that supports creating accounts, deposits, withdrawals, and transfers between users. Define the data model and APIs, ensure atomicity and idempotency of money movements, prevent double spending under concurrency, maintain an immutable ledger/audit trail, and address security concerns (authentication, authorization, input validation). Discuss consistency guarantees and error handling.

Quick Answer: This question evaluates understanding of transactional system design, data modeling for financial domains, API design, idempotency, concurrency control, immutable audit trails, and security considerations in an online banking context.

Related Interview Questions

  • Design Crypto Order Routing - Coinbase (hard)
  • Design a crypto trading web frontend - Coinbase (hard)
  • Design query pagination for large datasets - Coinbase (medium)
  • Design a food delivery system - Coinbase (medium)
  • Design real-time crypto prices homepage - Coinbase (hard)
Coinbase logo
Coinbase
Aug 8, 2025, 12:00 AM
Software Engineer
Onsite
System Design
10
0

System Design: Basic Online Banking with Safe Money Movements

Context

Design a minimal but production-minded online banking service. It must support core money operations while ensuring correctness under retries and concurrency, and provide strong auditability and security.

Assume a single region deployment with a relational database (e.g., PostgreSQL). Currency is fiat (e.g., USD) with integer minor units (cents) to avoid floating point error.

Functional Requirements

  1. Create accounts for users.
  2. Deposit funds into an account.
  3. Withdraw funds from an account.
  4. Transfer funds between accounts.

Non-Functional Requirements

  • Atomicity: Money movements are all-or-nothing.
  • Idempotency: Safe client retries without duplicate movements.
  • Concurrency safety: Prevent double-spend and race conditions.
  • Immutable ledger/audit trail: Append-only financial records with reversals, not edits.
  • Security: Authentication, authorization, input validation.
  • Consistency and error handling: State guarantees and clear error semantics.

Deliverables

  • Data model (schemas at the level of tables and key fields).
  • API design (endpoints, key request/response fields, idempotency).
  • Transaction flow for deposits, withdrawals, and transfers (including concurrency control).
  • Approach to an immutable ledger and auditability.
  • Security considerations.
  • Consistency guarantees and error handling strategy.

Solution

Show

Comments (0)

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Coinbase•More Software Engineer•Coinbase Software Engineer•Coinbase 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.