Skip to main content

Account Service

Purpose

Financial account lifecycle — creation, status management, and balance projection (not authoritative).

Responsibilities

  • Account creation and closure
  • Account status management
  • Balance projection (derived from ledger events)
  • Account metadata (currency, type)

Non-Responsibilities

  • Authoritative balances (Ledger Service)
  • Payment execution (Payment Service)
  • Ledger posting

APIs

MethodEndpointAuthDescription
POST/api/v1/accountsBearerCreate account
GET/api/v1/accounts/{id}BearerGet account
GET/api/v1/accounts/{id}/balanceBearerCurrent balance
PUT/api/v1/accounts/{id}/statusADMINUpdate status

Database

TableKey ColumnsDescription
accountsid, customer_id, type, currency, statusAccount records
balance_snapshotsaccount_id, available, pending, updated_atProjected balances

Kafka

Produces: AccountCreated, AccountStatusChanged Consumes: LedgerEntryCreated (update balance projection)

Dependencies

Sync: Customer Service, Ledger Service Async: Consumes ledger events

Failure Handling

  • Stale balance → reconcile from ledger on read
  • Account not found → 404

Scaling

Partition by customer_id. Read replicas for balance queries.

Security

Customers access own accounts. ADMIN for status changes.

Observability

Metrics: account_created_total, balance_query_latency.