For a full example answer with detailed architecture diagrams and deep dives, see our Design Payment System guide. While the payment guide focuses on transaction processing, many of the same patterns around multi-step workflows, idempotency, and ACID guarantees apply directly to bank onboarding flows.
Also review the Message Queues and Databases building blocks for background on asynchronous processing and transactional storage.
Design a bank signup system that allows users to create accounts with email verification, automatically opens their bank account upon successful verification, and initiates a payment card order. The platform must handle the full onboarding lifecycle from initial registration through identity verification, account provisioning, and card fulfillment.
Think of the account-opening flows at digital banks like Capital One, N26, or Revolut. A user enters their personal details, receives a verification email, completes identity checks, and within minutes has a fully provisioned bank account with a card on the way. The system must be secure, reliable, and compliant with financial regulations while providing a smooth user experience even during marketing-driven traffic spikes.
Based on real interview experiences, these are the areas interviewers probe most deeply:
The signup process spans multiple services and external vendors (email provider, KYC service, card fulfillment). Interviewers want to see how you coordinate these steps reliably, handle partial failures, and ensure the workflow can resume from any point.
Hints to consider:
Users may click verification links multiple times, marketing campaigns can trigger duplicate registrations, and network retries are inevitable. Interviewers probe how you prevent creating duplicate accounts or ordering multiple cards.
Hints to consider:
Bank onboarding involves sensitive data (SSN, address, date of birth). Interviewers expect comprehensive security measures and awareness of regulatory requirements.
Hints to consider:
KYC vendors, email providers, and card fulfillment partners all have their own failure modes and latencies. Interviewers assess whether you can decouple these dependencies from the user-facing flow.
Hints to consider:
Confirm the scope with your interviewer. Ask whether the system needs to support multiple account types (checking, savings, credit) at signup or just one. Clarify whether KYC/identity verification is in scope or can be treated as an external service call. Determine the expected registration volume and whether the system needs to handle international users with different compliance requirements. Ask about the card fulfillment timeline and whether virtual cards should be issued immediately.
Sketch the core components:
Walk through the critical path from registration to card ordering. When a user submits the registration form, the Registration Service writes the user record and a corresponding outbox event in a single PostgreSQL transaction. A CDC connector or polling publisher pushes the event to Kafka. The Verification Service generates a token, stores it in Redis with a 30-minute TTL, and sends the verification email. When the user clicks the link, the Verification Service validates the token, marks the user as verified in a single atomic update, and publishes a verified event. The Workflow Orchestrator consumes this event and drives the remaining steps: call the KYC service, create the bank account, and order the card. Each step is idempotent and recorded in a workflow state table. If any step fails, the orchestrator retries with backoff. If the KYC check fails permanently, a compensating action notifies the user and cleans up partial state.
Discuss how to handle traffic spikes from marketing campaigns by auto-scaling stateless services and using Kafka consumer groups to parallelize processing. Cover database sharding strategy if scale demands it (partition by user_id). Address monitoring: track registration-to-activation conversion rates, step completion latencies, and failure rates per external dependency. Set up alerts for verification token abuse, KYC service degradation, and card ordering backlogs. Finally, discuss disaster recovery with multi-AZ database replication and regular backup testing.
"Design a scalable banking application. You should be able to handle users and accounts (CRUD). Users can have more than 1 account, though they typically won't have more than a few. Security and ACID are a must. Be sure to optimize for mass transactions (I.E., payday)."
"Design a signup system for a bank which will send a verification email, opens a bank account and orders a card."