Customer Onboarding and KYC
Sign-up to verified account
Design a bank's digital sign-up: resumable steps, document and selfie checks through vendors, sanctions screening and a manual review queue, with the account opened only once the customer is verified.
Overview
A bank or fintech has to know who its customers are before it lets them move money. In the US, the Customer Identification Program rule (31 CFR 1020.220, issued under the Bank Secrecy Act) requires a bank to collect at least a name, a date of birth, an address and an identification number before opening an account, and to verify the identity within a reasonable time. Other countries have similar rules. KYC (know your customer) is the general name for this work.
On a phone, that becomes a sign-up flow: the customer types personal details, photographs an ID document, takes a selfie, and waits for a decision. Behind the screen, outside vendors check the document and compare the selfie to its photo, a screening service compares the name against sanctions lists, a risk model scores the application, and doubtful cases go to an analyst. The volume is small. The hard parts are that every outside answer arrives late, sometimes twice and sometimes out of order; that customers abandon long forms; and that the data collected (ID numbers, document images, faces) is exactly what identity thieves want.
Questions to ask first
- Who signs up? — Individuals in the US opening a deposit account on a phone app or the web
- Volume? — 100,000 applications started a day, about 60% submitted, peak 5× average
- Open the account before verification finishes? — No: the rule allows verifying within a reasonable time after opening, but this design provisions only verified customers
- Build or buy document checks? — Buy: two identity verification vendors, results by webhook
- Who decides doubtful cases? — Analysts working a review queue; automation never rejects on a weak watchlist match
- Where does approval lead? — An event to the core banking system, which opens the account
What you will be able to do
- State what the CIP rule asks for and turn it into steps, data and records.
- Model an application as a state machine that survives duplicate, late and out-of-order vendor results.
- Route checks between vendors and fall back without verifying a person twice or losing a result.
- Design screening at sign-up and re-screening when a list changes, with false positives handled by analysts.
- Keep identity data in a vault, keep an audit trail an examiner can follow, and measure where applicants drop off.
Key concepts
- Customer Identification Program
- Application state machine
- Resumable drafts
- Identity verification vendors
- Idempotent webhooks
- Sanctions and PEP screening
- Risk scoring
- Manual review queue
- PII vault and tokens
- Audit trail
Functional requirements
- Collect personal details in steps; save each step and let the applicant resume later on any device
- Capture an ID document and a selfie, and verify them through an outside vendor
- Screen every applicant against sanctions and PEP lists, and re-screen customers when the lists change
- Score risk and decide: approve, reject, or send to manual review
- Give analysts a queue of cases with the evidence and a way to record a decision
- On approval, ask the core banking system to open the account
- Keep the records the CIP rule requires, and an audit trail of every decision
Non-functional requirements
- No vendor result is lost or applied twice; a late result never moves an application backwards
- Most applicants get a decision within a few minutes of submitting (a target we chose)
- Saving a step responds in under 300 ms at p99 (a target we chose)
- Identity numbers, document images and selfies are readable only by the vault and the services that need them
- Every state change records who or what made it and why
Interview questions
- Walk me through the sign-up flow end to end.
- How do you handle vendor webhooks safely?
- What does KYC require, and how does it shape your data?
- How do you screen for sanctions without drowning analysts in false positives?
- How do you re-screen ten million customers when the list changes?
- What happens if a vendor is down?
- How do you protect identity data?
- How do you decide what goes to manual review, and how big is the team?
- How do you measure and improve the funnel?
Sign up free to read the full topic
More System Design topics
- Code Generation System
- Columnar File Formats (Parquet and ORC)
- Consistent Hashing
- Content Delivery Network
- Core Banking System
- CRDTs: Conflict-Free Replicated Data Types
- Customer Support Chatbot System
- Data Labeling and Annotation System
- Data Lakes and Lakehouse Table Formats
- Data Partitioning
- Data Pipeline Orchestration and Backfills
- Data Quality, Contracts and Lineage
Start free on Cariara · Coding problems · System design studio