Architecture

System Context

The Float Service is deployed as a set of AWS Lambda functions and ECS Fargate tasks. It exposes a REST API behind API Gateway and participates in the broader FloatMe platform as both an event-driven consumer (Kinesis, SQS, EventBridge) and producer (EventBridge).

system context float service

Components

Component Trigger Purpose

site-floats-api (Lambda)

API Gateway (IAM + JWT)

REST API — float CRUD, bypass, payback, collection history, admin; publishes user_float_created

site-floats-webhook-worker (Lambda)

SQS (site-floats-balance-event-tap, site-floats-plaid-disconnect-event-tap)

Webhook-triggered collection — balance and Plaid-disconnect paths

site-floats-ach-handler (Lambda)

Kinesis (prod-payments)

Processes ACH payment callbacks, updates float status, notifies via Segment, Iterable, AppsFlyer

site-floats-batch-worker (Lambda)

SQS (site-floats-batch-worker)

Processes bulk float operations and data management tasks

site-floats-reporter (Lambda)

EventBridge (daily 12:00 UTC, prod only)

Sends the daily float origination report to Slack

collections-jobs day-before-ach (Fargate)

EventBridge Scheduler (Mon–Fri 19:00 ET)

T-1 ACH run over SCHEDULING floats due the next business day

collections-jobs initial (Fargate)

EventBridge Scheduler (Mon–Fri 06:00 ET)

Due Date run over SCHEDULING floats due today or earlier

collections-jobs daily-retry (Fargate)

EventBridge Scheduler (Mon–Fri 05:00 ET)

Daily Retry run over overdue floats due today or earlier

collections-jobs daily-retry --slot=evening (Fargate)

EventBridge Scheduler (Thu–Fri 20:00 ET)

Evening blind retry run — blind pinless attempts only, for the evening-cohort overdue floats

collections-jobs prenote (Fargate)

EventBridge Scheduler (22:00 UTC Sun, Mon, Thu–Sat)

Prenote run — zero-dollar USIO verification for floats due in 5 days

Collections Architecture

The collections system uses two money-moving processing paths — scheduled and webhook-driven — both funneling into the Payments Service for execution, plus a prenote path that validates account numbers ahead of the due date without moving money. See Collections Engine for each run’s decision logic.

system context float collections

Storage

  • PostgreSQL Schema — the FloatMeAPI_userloansmodel float table (RDS main + read replica)

  • DynamoDB Tables — collection history, distributed locks, bypass records

External Dependencies

Service Role

Payments Service

Executes disbursements, pinless and ACH collection attempts, and zero-dollar USIO prenotes; holds the first_float_accepted marketing lock

Underwriting Service

Validates float eligibility and determines approved amounts and fees

User Service

User profile and identity data, including the name and email submitted with each prenote

Transactions Service

Bank balances for collection decisions; source of the webhook events the service consumes

Insight Service

Next-payday predictions used to compute a new float’s payback date

Subscriptions Service

Subscription status validated during float creation and collection eligibility

LOC Service

Line-of-credit eligibility data used in fraud checks

GrowthBook

Feature flags — see the flag reference

EventBridge

Float lifecycle event bus (float-service source) — see Events

Segment

User analytics events for float creation (including First Float Accepted), payback, and collection outcomes

Iterable

Email and in-app notifications triggered by ACH payment events

AppsFlyer

Mobile attribution for float creation, including the First Float Accepted payout event; digital receipts for settled collections and paybacks

Slack

Destination for the daily origination report