HARDE-commerce & Paymentsstaff engineer

Design a Payment System

Design a payment processing system like Stripe or PayPal handling transactions, refunds, and fraud detection.

Estimated Time: 60 minutes
#payments#transactions#ledger#fraud-detection#fintech
Solution Overview

Use event sourcing for transaction history, idempotency keys for exactly-once processing, and async reconciliation.

Hints to Get Started
1

Think about exactly-once payment processing

2

How do you handle partial failures?

3

Consider audit and compliance requirements

Requirements

functional

  • Process payments
  • Refunds
  • Multiple payment methods
  • Recurring billing
  • Fraud detection

non functional

  • Strong consistency
  • Exactly-once processing
  • PCI compliance
  • Audit trail
System Architecture Diagram

Architecture diagram visualization

(Diagram generation coming soon)

patterns

saga

Distributed transaction across payment provider + internal systems

idempotency

Client-generated idempotency key prevents duplicates

event sourcing

Immutable transaction log, derive state from events

components

  • Payment Gateway
  • Transaction Service
  • Ledger Service
  • Fraud Detection
  • Notification Service
Deep Dives

retry logic

Exponential backoff with circuit breaker

pci compliance

Tokenization, encryption at rest, audit logs

fraud detection

ML models + rules engine, real-time scoring

Ledger Design

double entry

Every transaction has debit and credit entries

immutability

Never update, only append correction entries

reconciliation

Daily reconciliation with payment providers

Transaction Flow

steps

  • Validate request
  • Fraud check
  • Reserve funds
  • Execute payment
  • Update ledger
  • Send confirmation

failure handling

Compensating transactions for rollback