← Coinbase Interview Insights

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

Senior
Jul 2026

Summary

Coinbase system design round for a software engineer role. The whole thing was basically one giant question about building an online bank account opening system, and they wanted you to go deep on pretty much every layer of it.

Questions Asked (10)

Q1

Design an end-to-end online bank account opening workflow, including APIs for starting, saving, submitting, and resuming an application.

System DesignAPI & Integrations
Author's notes

I started with the happy path and drew out the state machine for an application going from draft to submitted to approved.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a stateful application workflow with clear states and transitions. Define RESTful APIs for each action (start, save, submit, resume) with idempotency and security in mind, and discuss data storage, concurrency, and integration with KYC/AML services.

Pro tip: Emphasize idempotency and resumability: use a unique application ID and versioning to handle concurrent saves and network retries, and store partial state securely. This shows you understand real-world fintech reliability needs.

1. Clarify Requirements and Scope

Ask about expected scale, regulatory requirements (KYC/AML), supported regions, and whether the flow is for retail or institutional clients. Confirm non-functional needs like latency, availability, and security.

2. Define Application States and Transitions

Model the application lifecycle (e.g., DRAFT, SUBMITTED, UNDER_REVIEW, APPROVED, REJECTED) and allowed transitions. This ensures the API design aligns with business logic and auditability.

3. Design API Endpoints and Contracts

Specify endpoints for starting (POST /applications), saving (PATCH /applications/{id}), submitting (POST /applications/{id}/submit), and resuming (GET /applications/{id}). Include request/response schemas, status codes, and error handling.

4. Address Data Storage and Concurrency

Choose a durable store (e.g., SQL with JSON columns or NoSQL) for partial applications. Implement optimistic locking or versioning to prevent lost updates during concurrent saves.

5. Integrate Security and External Services

Incorporate authentication/authorization, encryption at rest/in transit, and idempotency keys. Discuss integration with KYC providers, fraud checks, and notification systems.

Key Points to Mention

  • Idempotency for start and submit operations to handle retries safely.
  • Versioning or optimistic locking to manage concurrent saves and resumption.
  • Secure storage of PII with encryption and access controls.
  • Asynchronous processing for KYC/AML checks with status polling or webhooks.
  • Clear error handling and validation for each API endpoint.
  • Audit logging and compliance with financial regulations.

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

Q2

How would you handle KYC/AML and sanctions checks within this workflow, and how do you decide which steps are synchronous versus asynchronous?

System DesignTechnical Trade-offs
Author's notes

This is where it got interesting.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the workflow's goals and constraints, then propose a layered architecture where synchronous checks are minimal and asynchronous checks handle heavy lifting. Emphasize risk-based decision-making and user experience trade-offs.

Pro tip: Mention that KYC/AML checks should be idempotent and auditable, and that you'd use a state machine to track verification status across retries and failures.

1. Clarify requirements and constraints

Ask about the specific workflow (e.g., onboarding, transaction), regulatory requirements, latency SLAs, and user experience expectations.

2. Categorize checks by criticality and latency

Identify which checks are mandatory before proceeding (e.g., sanctions screening for high-risk users) versus those that can be deferred (e.g., document verification for low-risk users).

3. Design synchronous vs asynchronous boundaries

Make only fast, deterministic checks synchronous (e.g., basic format validation, internal blacklist lookup) and offload time-consuming or third-party checks to asynchronous queues with callbacks.

4. Implement a state machine and retry logic

Use a state machine to track each check's status, handle retries, and ensure idempotency. Provide clear user feedback for pending states.

5. Address failure modes and compliance

Define fallback behavior for timeouts or failures (e.g., manual review, temporary holds) and ensure all actions are logged for audit.

Key Points to Mention

  • Risk-based approach: not all users need the same level of scrutiny
  • Idempotency and exactly-once processing for checks
  • Use of message queues (e.g., Kafka, SQS) for asynchronous tasks
  • User experience: clear communication during pending checks
  • Compliance and auditability: logging, immutable records
  • Fallback strategies: manual review, retries with exponential backoff

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

Q3

How would you prevent duplicate accounts from being created?

System DesignData Modeling
Author's notes

Talked about deduplication at the API layer using idempotency keys, plus a uniqueness constraint on PII fields like email and government ID hash at the database level.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the definition of a duplicate account (e.g., same email, phone, government ID, or device fingerprint) and the business context at Coinbase (KYC/AML requirements). Then propose a layered prevention strategy: enforce uniqueness at the database level, add application-level checks, and incorporate identity verification and risk signals. Finally, discuss trade-offs, edge cases, and how to handle false positives.

Pro tip: Emphasize that preventing duplicates is not just a technical problem but also a business and compliance requirement; mention that you would collaborate with fraud, compliance, and product teams to define the right signals and thresholds.

1. Clarify requirements and definitions

Ask what constitutes a duplicate (email, phone, SSN, device ID, etc.) and what the business impact is (fraud, regulatory, user experience). This shows you understand the problem space before jumping to solutions.

2. Enforce uniqueness at the data layer

Propose database constraints (unique indexes) on key identifiers like email, phone number, and government ID. Discuss how to handle soft deletes and case-insensitive comparisons.

3. Add application-level checks and validation

Implement pre-insert checks and real-time validation during signup. Use normalized data and consider fuzzy matching for names/addresses to catch near-duplicates.

4. Leverage identity verification and risk signals

Integrate KYC providers, device fingerprinting, IP analysis, and behavioral signals to detect and block duplicate attempts. Use a risk score to decide whether to allow, challenge, or block.

5. Monitor, iterate, and handle edge cases

Set up monitoring for duplicate creation attempts, false positives, and user friction. Define a process for manual review and account merging, and continuously refine rules based on data.

Key Points to Mention

  • Unique database constraints (e.g., unique index on email, phone, government ID)
  • Normalization of input data (lowercasing emails, standardizing phone numbers)
  • Use of KYC/identity verification services to validate government IDs
  • Device fingerprinting and IP analysis to detect multiple accounts from same device
  • Risk-based approach: not all duplicates are malicious; consider legitimate cases (e.g., shared devices)
  • Handling of soft-deleted accounts and re-registration attempts
  • Compliance with regulations (AML, KYC) and data privacy laws (GDPR, CCPA)

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

Q4

How would you provide real-time application status updates to users?

System DesignAPI & Integrations
Author's notes

Went with WebSockets for active sessions and a polling fallback, plus push notifications for users who closed the tab.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what types of status updates, expected latency, scale, and client platforms. Then propose a real-time push architecture using WebSockets or Server-Sent Events, with a fallback to polling, and discuss how you'd handle reliability, scalability, and security in a fintech context like Coinbase.

Pro tip: Emphasize idempotency and exactly-once delivery semantics for status updates, especially for financial transactions, and mention how you'd handle reconnection and missed events with a sequence number or event log.

1. Clarify Requirements

Ask about the types of status updates (e.g., transaction confirmations, order fills), expected update frequency, latency tolerance, number of concurrent users, and client types (web, mobile).

2. Choose a Real-Time Transport

Evaluate WebSockets, Server-Sent Events (SSE), and long polling. For Coinbase, WebSockets are ideal for bidirectional, low-latency updates, but SSE can work for one-way status streams.

3. Design the Backend Architecture

Outline a pub/sub system (e.g., Redis Pub/Sub, Kafka) to fan out updates from services to a connection gateway that manages client sessions. Ensure horizontal scalability and fault tolerance.

4. Handle Reliability and Ordering

Incorporate sequence numbers, acknowledgments, and idempotent updates to handle reconnections and missed messages. Discuss how to recover state after a disconnect.

5. Address Security and Compliance

Mention authentication (e.g., JWT), authorization, encryption (TLS), and rate limiting. For Coinbase, ensure compliance with financial regulations and audit logging.

Key Points to Mention

  • WebSockets vs. Server-Sent Events vs. polling trade-offs
  • Pub/sub architecture with message brokers (Kafka, Redis)
  • Connection management and scaling (load balancers, sticky sessions)
  • Reliability patterns: sequence numbers, idempotency, reconnection logic
  • Security: authentication, authorization, TLS, rate limiting
  • Fallback mechanisms for degraded networks or unsupported clients

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

Q5

Walk me through your approach to document upload and verification in this system.

System DesignTechnical Trade-offs
Author's notes

Described a pre-signed URL flow to upload directly to object storage, then a background job that calls a document verification vendor.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and constraints, such as document types, volume, and compliance needs. Then outline a high-level architecture covering upload, storage, verification, and security, and dive into trade-offs and failure handling. Emphasize scalability, reliability, and user experience throughout.

Pro tip: Highlight how you would handle edge cases like blurry documents or fraudulent uploads, and discuss how you'd monitor and iterate on the system post-launch. This shows you think beyond the happy path and consider real-world operational challenges.

1. Clarify Requirements

Ask about document types, expected volume, latency requirements, compliance (e.g., KYC/AML), and user experience expectations. This ensures your design meets the actual needs.

2. High-Level Architecture

Outline the main components: client-side upload, secure transmission, storage (e.g., S3), verification service (OCR, third-party APIs), and result handling. Mention asynchronous processing for scalability.

3. Deep Dive into Verification

Explain how you'd verify documents: extract data via OCR, validate against expected formats, check for tampering, and integrate with identity verification providers. Discuss handling failures and retries.

4. Security and Compliance

Describe encryption at rest and in transit, access controls, audit logging, and data retention policies. Mention compliance standards like GDPR, CCPA, and financial regulations.

5. Trade-offs and Scalability

Discuss trade-offs between synchronous vs asynchronous processing, cost vs performance, and build vs buy for verification. Explain how the system scales with increasing load.

Key Points to Mention

  • Use of pre-signed URLs for secure direct uploads to cloud storage, reducing server load.
  • Asynchronous processing with message queues (e.g., SQS, Kafka) to decouple upload from verification and handle spikes.
  • Integration with third-party KYC providers (e.g., Jumio, Onfido) and fallback to manual review for edge cases.
  • Data encryption, tokenization, and secure deletion to protect sensitive user documents.
  • Monitoring and alerting for verification success rates, latency, and fraud detection.
  • Idempotency and retry mechanisms to handle duplicate uploads and transient failures.

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

Q6

How would you design the data model for applicants and their applications, and how do you handle PII security including encryption and access control?

Data ModelingSystem Design
Author's notes

I split applicant (person) from application (process instance) early on, which felt right.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining the core entities (Applicant, Application) and their relationships, then discuss how to model them for scalability and query patterns. Transition into PII security by covering encryption at rest and in transit, access control mechanisms, and compliance considerations relevant to Coinbase's regulatory environment.

Pro tip: Emphasize a data-centric security approach: encrypt PII at the field level and use tokenization to minimize exposure, while implementing least-privilege access with audit trails. This shows you understand both engineering and compliance needs in a fintech context.

1. Identify Entities and Relationships

Define the main entities: Applicant (personal details, contact info) and Application (submitted data, status, timestamps). Establish relationships (one applicant can have multiple applications) and consider normalization vs. denormalization based on access patterns.

2. Design Schema for Scalability and Queries

Choose appropriate data stores (e.g., relational for transactional integrity, NoSQL for flexible schemas) and design tables/collections with indexes to support common queries like fetching applications by applicant or status. Consider partitioning and sharding for scale.

3. Classify and Encrypt PII

Identify which fields contain PII (e.g., SSN, address, email). Apply encryption at rest (AES-256) and in transit (TLS). Use field-level encryption or tokenization for sensitive data to limit exposure, and manage keys securely with a KMS.

4. Implement Access Control and Auditing

Enforce least privilege with role-based access control (RBAC) or attribute-based access control (ABAC). Ensure all access to PII is logged and monitored, and implement data masking for non-production environments.

5. Address Compliance and Data Lifecycle

Align with regulations like GDPR, CCPA, and financial industry standards. Define data retention policies, secure deletion, and consent management. Consider data residency requirements for global operations.

Key Points to Mention

  • Entity-relationship modeling with clear separation of Applicant and Application, including one-to-many relationships.
  • Choice of database technology (SQL vs NoSQL) based on consistency, scalability, and query needs.
  • Encryption strategies: TLS for data in transit, AES-256 for data at rest, and field-level encryption for sensitive attributes.
  • Access control models: RBAC/ABAC, least privilege, and just-in-time access for sensitive operations.
  • Audit logging and monitoring for all PII access, with anomaly detection.
  • Compliance considerations: GDPR, CCPA, PCI DSS (if handling payment data), and data residency.

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

Q7

How would you implement audit trails for this system?

System Design
Author's notes

Append-only event log, each state transition writes a record with who triggered it, when, and from what IP.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements and compliance needs, then design an append-only, tamper-evident audit log that captures who did what, when, and from where. Discuss storage, querying, retention, and how to integrate audit trails without impacting performance or security.

Pro tip: Emphasize that audit trails must be immutable and tamper-evident, and mention using cryptographic hashing or blockchain-like chaining to ensure integrity—this resonates well in a crypto company like Coinbase.

1. Clarify Requirements

Ask about regulatory requirements (e.g., SOX, GDPR, PCI), what events need auditing, retention period, and who will access the audit logs.

2. Design Data Model

Define the schema for audit events: timestamp, actor, action, resource, before/after values, IP, user agent, and a unique event ID. Ensure it's append-only.

3. Choose Storage & Integrity

Select a durable, scalable storage (e.g., write-once object store, append-only database) and implement tamper-evidence via cryptographic hashing or chaining.

4. Implement Capture & Processing

Integrate audit logging into the application, possibly using an event-driven approach (e.g., publish events to a queue) to decouple and ensure reliability.

5. Address Querying, Retention & Security

Provide efficient querying for auditors, enforce strict access controls, and automate retention policies (e.g., archival or deletion after X years).

Key Points to Mention

  • Immutability and tamper-evidence (e.g., cryptographic hashing, append-only logs)
  • Compliance and regulatory requirements (e.g., GDPR, SOX, PCI-DSS)
  • Scalability and performance impact (e.g., asynchronous logging, partitioning)
  • Data retention and archival policies
  • Access control and privacy (e.g., encryption, role-based access)
  • Integration with existing systems (e.g., event sourcing, message queues)

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

Q8

How would you handle failure scenarios and retries, especially for external service calls like KYC providers?

System DesignTechnical Trade-offs
Author's notes

Exponential backoff with jitter, dead-letter queues for things that keep failing, and a manual review queue as the final fallback.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging that failures are inevitable and must be handled gracefully. Then, outline a layered strategy: classify failures, implement retries with backoff and jitter, use circuit breakers, and ensure idempotency. Finally, discuss trade-offs and monitoring, emphasizing user experience and data consistency.

Pro tip: Emphasize idempotency keys for external calls like KYC to prevent duplicate submissions, and mention that you'd align retry policies with the provider's rate limits and SLAs to avoid penalties.

1. Classify failures

Distinguish between transient (network blips, timeouts) and permanent (invalid input, auth errors) failures. Only retry transient errors.

2. Design retry strategy

Use exponential backoff with jitter, set a max retry limit, and consider the overall timeout budget. For critical flows, use a dead-letter queue for later analysis.

3. Implement circuit breakers

Prevent cascading failures by tripping the circuit after repeated failures, and fall back to a degraded mode or queue for later processing.

4. Ensure idempotency

Use idempotency keys for external calls to avoid duplicate side effects when retrying. For KYC, ensure that repeated submissions don't create multiple cases.

5. Monitor and alert

Track retry rates, failure types, and circuit breaker states. Set up alerts for anomalies and use logs to debug issues.

Key Points to Mention

  • Exponential backoff with jitter to avoid thundering herd
  • Circuit breaker pattern to prevent cascading failures
  • Idempotency keys for external API calls (e.g., KYC submissions)
  • Dead-letter queues for failed requests after max retries
  • Trade-offs between retry latency and user experience
  • Monitoring and alerting on failure rates and retry counts

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

Q9

How would you implement rate limiting and fraud or risk scoring in this workflow?

System DesignAPI & Integrations
Author's notes

Rate limiting I covered at the API gateway level, keyed on IP and user identity separately.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the workflow's critical paths and failure modes, then layer rate limiting (e.g., token bucket per user/IP) and risk scoring (e.g., rules + ML) as independent but coordinated services. Emphasize trade-offs between latency, accuracy, and availability, and how you'd handle false positives/negatives in a financial context.

Pro tip: At Coinbase, fraud prevention is a business-critical function, so show you understand that rate limiting and risk scoring must be tunable without deploys and must degrade gracefully—e.g., fall back to conservative rules if the ML service is down.

1. Clarify requirements and constraints

Ask about expected traffic volume, latency SLAs, regulatory requirements, and what constitutes fraud vs. legitimate behavior. Identify the workflow's entry points and sensitive operations.

2. Design rate limiting

Choose an algorithm (token bucket, sliding window) and enforcement point (API gateway, service mesh, or application). Discuss distributed rate limiting with Redis or a dedicated service, and how to handle bursts and global vs. per-user limits.

3. Design risk scoring

Outline a pipeline: collect signals (device, IP, velocity, historical behavior), compute a score via rules and/or ML model, and define actions (allow, challenge, block). Explain how to keep scoring fast and how to update models without downtime.

4. Integrate and orchestrate

Show how rate limiting and risk scoring work together—e.g., rate limiting as a first line of defense, then risk scoring for finer-grained decisions. Discuss ordering, fallbacks, and how to avoid double-counting or conflicting actions.

5. Address operational concerns

Cover monitoring, alerting, A/B testing, and feedback loops for false positives/negatives. Explain how to handle failures (e.g., circuit breakers) and ensure auditability for compliance.

Key Points to Mention

  • Distributed rate limiting using Redis or a dedicated service with atomic operations
  • Token bucket vs. sliding window algorithms and their trade-offs
  • Risk scoring signals: IP reputation, device fingerprint, user history, transaction velocity
  • Real-time ML model serving with low latency (e.g., feature store, model caching)
  • Graceful degradation: fallback to rules if ML service is unavailable
  • Monitoring and feedback loops to reduce false positives and adapt to new fraud patterns

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

Q10

How would you scale this system to handle millions of applications per day across multiple geographic regions?

System DesignTechnical Trade-offs
Author's notes

Went with a multi-region active-active setup with data residency constraints for regulated markets, async replication for non-critical data, and strong consistency only where legally required like the dedup check.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scale and requirements, then propose a high-level architecture that partitions the system by geographic region and uses horizontal scaling. Focus on trade-offs between consistency, latency, and cost, and explain how you would handle data replication, load balancing, and failure recovery.

Pro tip: Emphasize the importance of monitoring and observability from day one, and discuss how you would use metrics to drive capacity planning and auto-scaling decisions. Also, mention regulatory considerations like data residency, which is crucial for a global financial platform like Coinbase.

1. Clarify Requirements and Assumptions

Ask questions to understand the expected read/write ratio, latency requirements, consistency needs, and budget constraints. Confirm the definition of 'application' in this context (e.g., user sign-ups, transactions).

2. Design for Geographic Distribution

Propose deploying the system in multiple regions with data partitioned by user geography. Use a global load balancer to route users to the nearest region, and consider active-active or active-passive setups for disaster recovery.

3. Scale Components Horizontally

Break down the system into microservices and scale each independently. Use stateless services, sharding for databases, and caching to handle high read volumes. Consider asynchronous processing for non-critical tasks.

4. Address Data Consistency and Replication

Discuss trade-offs between strong and eventual consistency. For financial data, strong consistency may be required within a region, while cross-region replication can be eventual. Mention conflict resolution strategies if needed.

5. Plan for Monitoring, Auto-scaling, and Failure Recovery

Describe how you would monitor key metrics (latency, error rates, throughput) and set up auto-scaling policies. Outline a disaster recovery plan with regular backups and failover testing.

Key Points to Mention

  • Horizontal scaling and sharding strategies for databases and services
  • Geographic partitioning and data residency compliance (e.g., GDPR)
  • Load balancing and traffic routing (e.g., DNS-based, anycast)
  • Caching layers (CDN, Redis) to reduce database load
  • Asynchronous processing and message queues for decoupling
  • Trade-offs between consistency, availability, and latency (CAP theorem)

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