Infrastructure
The Transactions Service is deployed entirely on AWS using Terraform. All infrastructure is defined in deploy/ and managed per-environment (test, prod). The application identifier is txn.
Lambda Functions
| Function | Trigger | Timeout | Memory | Key IAM Permissions |
|---|---|---|---|---|
|
API Gateway ( |
300s |
1024 MB |
DynamoDB read/write (transactions, plaid, institutions, legacy tables); SQS send (plaid-webhooks); EventBridge PutEvents; Plaid, GrowthBook, Iterable secrets |
|
API Gateway ( |
300s |
default |
SQS send (plaid-webhooks); Plaid secrets |
|
SQS ( |
~810s (90% of SQS visibility timeout) |
default |
DynamoDB read/write (transactions, plaid, legacy tables); Kinesis PutRecords (plaid-transactions); SQS receive (plaid-webhooks), SQS send (throttle); User Service, LOC Service, Payments Service, Admin API calls; Plaid, GrowthBook, Segment secrets |
|
SQS ( |
~810s (90% of SQS visibility timeout) |
256 MB |
DynamoDB read/write (transactions, plaid tables); Kinesis PutRecords (plaid-transactions); SQS receive + send (throttle); User Service, LOC Service calls; Plaid, GrowthBook, Segment secrets |
|
Kinesis ( |
840s |
512 MB |
DynamoDB read/write (transactions table); Kinesis DescribeStream + GetRecords; SQS send (insight-remove); EventBridge PutEvents |
|
DynamoDB Streams (transactions + plaid tables) |
840s |
default |
Kinesis PutRecords (floatme-transactions); DynamoDB Streams GetRecords; DynamoDB read (plaid table); EventBridge PutEvents; Plaid secrets |
|
SQS ( |
840s |
512 MB |
DynamoDB read (plaid, transactions tables — Query only); SQS receive (listener-eventbridge), SQS send (plaid-webhooks) |
|
CloudWatch schedule (weekly, Sunday 00:00 UTC) |
300s |
256 MB |
DynamoDB PutItem (institutions table); Plaid secrets |
DynamoDB Tables
| Table | Region | Entity Types | Streams | Notes |
|---|---|---|---|---|
|
us-east-2 |
Transactions, Accounts, Webhooks, Balance History |
Yes (feeder Lambda) |
Primary table for user financial data. Stream filtered for ACCOUNT and TRANSACTION types by the feeder. |
|
us-east-2 |
Items, Liabilities, Liability History, KYC / Identity Verification |
Yes (feeder Lambda) |
Plaid-specific state. Item TTL expiration is handled by the feeder for cleanup. |
|
us-east-2 |
Institutions |
No |
Simple key-value store keyed by |
|
us-east-1 |
Legacy Plaid Items |
No |
Read by miner and API Lambda for backwards compatibility. |
|
us-east-1 |
Legacy Account Change History |
No |
Read by the API Lambda for the legacy history endpoint. |
SQS Queues
| Queue | Visibility Timeout | Delivery Delay | Max Receive Count | Purpose |
|---|---|---|---|---|
|
900s |
0s |
5 |
Receives Plaid webhook events from the webhook Lambda. Consumed by the miner. |
|
900s |
30s |
5 |
Receives paginated mine requests from the miner. The 30s delay prevents Plaid rate limiting. Consumed by the throttle-miner. |
|
900s |
0s |
5 |
Receives Auth0 Log Stream events from EventBridge. Consumed by the listener Lambda. |
|
900s |
0s |
5 |
Receives write requests from the unroller process. |
|
(configured by Insight Service) |
0s |
(configured by Insight Service) |
Receives transaction removal notifications from the refiner Lambda. Owned and consumed by the Insight Service. |
All queues have a corresponding Dead Letter Queue (DLQ). Messages that exhaust their maximum receive count are moved to the DLQ for manual inspection.
Kinesis Streams
| Stream | Direction | Producers | Consumers | Purpose |
|---|---|---|---|---|
|
Internal |
|
|
Raw Plaid transaction and account data. Internal to the service. |
|
Outbound |
|
Downstream FloatMe services |
Refined account and transaction change events in FloatMe format. Consumed externally. |
Kinesis consumer configuration for the refiner:
-
Batch size: 10
-
Parallelization factor: 2
-
Starting position: AT_TIMESTAMP (offset -15 minutes from deploy)
-
Error handling:
BisectBatchOnFunctionErrorenabled
EventBridge
| Bus / Rule | Purpose |
|---|---|
|
Receives Auth0 login events ( |
|
Internal domain event bus. Receives |
Secrets Manager
All secrets are namespaced by environment (site/…).
| Secret Path | Purpose |
|---|---|
|
Plaid API credentials (client ID, secret, environment). Used by the API, miner, throttle-miner, feeder, webhook, and institution Lambdas. |
|
GrowthBook SDK key for feature flag evaluation. Used by API, miner, throttle-miner. |
|
Iterable API key for marketing/notification events. Used by the API Lambda. |
|
Segment write key for analytics events. Used by miner and throttle-miner. |
|
Datadog API key used by Terraform to configure the Datadog integration for metrics and tracing. |
API Gateways
| Gateway | Auth | Purpose |
|---|---|---|
|
AWS IAM (SigV4) |
Internal API. Used by FloatMe backend services (User Service, Float Service, Underwriting, etc.) and the main global FloatMe API gateway for routing authenticated mobile requests. |
|
JWT (Auth0) |
Legacy mobile-facing gateway. Primarily used for user signup flows. |
|
None (IP allowlist) |
Receives incoming webhooks from Plaid and other external providers. Routes to the webhook Lambda. |
Scheduled Jobs
| Lambda | Schedule | Purpose |
|---|---|---|
|
|
Fetches all institution metadata from Plaid and writes it to the |
Terraform Structure
All infrastructure is defined in deploy/:
| File | Contents |
|---|---|
|
AWS provider aliases (9 total for cross-region resources), data sources for all external resources (Kinesis streams, SQS queues, API Gateways, DynamoDB tables, EventBridge bus). |
|
All Lambda function definitions, IAM roles and policies, event source mappings (SQS, Kinesis, DynamoDB Streams triggers). |
|
DynamoDB table definitions and stream configurations for the three primary tables and two legacy tables. |
|
EventBridge rules for Auth0 login event routing. SQS policy allowing EventBridge to send messages to the listener queue. |
|
CloudWatch Event Rule for the weekly institution sync schedule. |
|
Secrets Manager secret references for Plaid, GrowthBook, Iterable, Segment, and Datadog. |
|
All configurable parameters: table names, stream names, queue names, Plaid configuration (webhook URL, link redirect URI, feature flag values), timeouts, and service endpoint overrides. |
|
|
Related Pages
-
Architecture — System context diagram and component overview
-
Event-Driven Flows — SQS, Kinesis, and EventBridge flow details
-
Plaid Mining Pipeline — SQS queue configurations in context