Architecture
System Context
The Transactions Service runs as eight AWS Lambda functions, two of them behind API Gateway, with DynamoDB as its data store. Plaid is the data source. Plaid webhooks and Auth0 login events drive asynchronous mining; account and connection events are published to the EventBridge default bus.
Components
| Component | Trigger | Purpose |
|---|---|---|
|
API Gateway |
REST API for items, accounts, transactions, liabilities, KYC, link tokens, and the BIN list; publishes the item events in Events |
|
API Gateway |
Verifies the Plaid webhook signature and enqueues the payload — Webhook intake |
|
SQS |
Routes webhooks by type and code; fetches transactions, accounts, liabilities, and KYC sessions from Plaid — Miner routing |
|
SQS |
Fetches the next 500-transaction page of a mine request — Pagination |
|
Kinesis |
Converts raw Plaid records to FloatMe records in DynamoDB — Refiner |
|
DynamoDB Streams ( |
Publishes |
|
SQS |
Turns Auth0 login events into synthetic webhooks when an item’s data is stale — Listener |
|
EventBridge schedule (Saturday 00:00 UTC) |
Full refresh of Plaid institution metadata — Institution sync |
cmd/summary/ builds a ninth binary, a DynamoDB Streams handler that maintains SUMMARY rows. It has no Terraform module and is not deployed — see Summary.
Storage
-
DynamoDB Tables —
site-txn-transactions,site-txn-plaid,site-txn-plaid-institutions, and three shared tables in us-east-1 -
S3 — BIN reference list loaded by the API at startup
External Dependencies
| Service | Role |
|---|---|
Plaid |
Items, accounts, transactions, balances, auth numbers, liabilities, institutions, Link tokens, Layer sessions, Identity Verification, webhook signing keys |
Auth0 |
Login log-stream events consumed by the listener |
User Service |
Activates the user after an item is added; user status for link eligibility and the v1 removal ban |
Float Service |
Active-float check that blocks main-account changes and item removal |
Insight Service |
Employment lookup for item-change rules; receives out-of-order transaction removals over SQS |
LOC Service |
Rejected loan application on KYC failure |
Payments Service |
Deletes the stored bank account when Plaid reports updated auth numbers on the main account |
Admin API |
Admin note when a user revokes Plaid permission |
GrowthBook |
Feature flags — see the flag reference |
Segment |
|
Iterable |
|
EventBridge |
Default bus for published events — see Events |