Architecture
System Context
The Payments Service is 16 AWS Lambda functions. The API Lambda sits behind two AWS IAM API Gateways and is called by other FloatMe services, and by the mobile app for card management through the shared mobile API host; JPM reaches the webhook handler through the shared jpm.webhooks.floatme.io gateway. Scheduled and queue-driven Lambdas reconcile ACH settlement with JPM and Usio, and a DynamoDB stream feeds payment records carrying an event type onto the site-payments Kinesis stream.
Components
Runtime configuration is in Infrastructure. Names carry the site-payments- prefix (test, staging, or prod).
| Component | Trigger | Purpose |
|---|---|---|
|
API Gateway |
REST API — payment submission, debit cards, bank accounts, prenotes, refunds, fraud checks, blocklist, admin |
|
API Gateway |
Validates JPM status callbacks and enqueues |
|
SQS |
Marks the payment |
|
EventBridge |
Enqueues every |
|
SQS |
Completes ACH debits via a Plaid transaction match, a JPM status poll, or the 3-business-day rule |
|
EventBridge (three rules, prod only) |
Fans out one Usio sync job per merchant account and job type — Usio Sync |
|
SQS |
Pulls Usio transactions, ACH returns, chargebacks, and the daily ACH risk report |
|
EventBridge |
Enqueues debit cards expiring this month — Token Refresh |
|
SQS |
Refreshes Usio card tokens and stores the new expiration |
|
SQS |
Calls the prenote endpoints for queued requests — Prenotes |
|
DynamoDB Stream on |
Publishes payment records with a non-empty |
|
Kinesis |
Runs the return-code engine’s bank action on returned debits — ACH dispatch |
|
SQS |
Writes a |
|
EventBridge |
Posts Usio float-credit and loan-credit prefunding balances to Slack |
|
EventBridge |
Copies the last three days of JPM transaction details into |
|
SQS |
Repairs debit card records for user IDs enqueued by |
Storage is in DynamoDB Tables: payment records in the payments table (dynamo_legacy_region), everything else in the site-payments single table and a set of named tables.
External Dependencies
| Service | Role |
|---|---|
JPM |
Subscription ACH debits and JPM prenotes (mTLS + JWS); status webhooks; status polling and transaction detail sync |
Usio |
Pinless debit and credit, RTP credit, float and loan ACH, Usio prenotes and refunds, token refresh, transaction and return sync, ACH risk report, prefunding balances |
Transactions Service |
Account and routing numbers with the official account mask; Plaid transactions for Plaid clearing |
Float Service |
Active floats for card-change rules; float list and collection history for Plaid clearing |
LOC Service |
Open installment loans for card-change rules |
User Service |
Activates the user after a card save; user lookup for the first-debit event and comms email; bans on the debit-card fraud window |
Underwriting Service |
Recalculation after a debit card save |
Admin API |
Admin note on a suspended-card rejection |
GrowthBook |
Feature flags — GrowthBook Flags |
Iterable |
Per-code comms events from the return-code engine |
Segment |
|
AppsFlyer |
|
Slack |
Balance reports |
AWS KMS |
|
Kinesis |
Outbound payment event stream — Events |