DynamoDB Tables
The Float Service uses four DynamoDB tables, configured by three distinct region variables (not interchangeable): collection-history, locks, and requirements-bypass clients resolve DYNAMO_LEGACY_REGION, except the lock client, which is constructed separately from DYNAMO_LOCK_REGION (same region value, distinct variable — see locks); the site-float-service single table is configured by DYNAMO_REGION + DYNAMO_TABLE.
collection-history
Region: DYNAMO_LEGACY_REGION
An append-only audit log of every collection attempt. One record is written per attempt, regardless of outcome. Used by the collections engine to enforce attempt limits and to serve collection history via the API.
| Attribute | DynamoDB Tag | Description |
|---|---|---|
|
PK |
Float ID. Maps to |
|
SK |
Unix nanosecond timestamp of when the attempt was made. |
|
— |
Owning user’s ID. |
|
— |
The float’s original due date ( |
|
— |
The calendar date of the attempt ( |
|
— |
The collection run or flow that made this attempt. See Process Values. |
|
— |
Result of the attempt. See Outcome Values. |
|
— |
Payment processor confirmation ID for the attempt. Present when a payment was submitted. |
|
— |
Optional context for the row. Daily Retry blind attempts record why the balance was untrusted ( |
|
— |
Bank-reported available balance, in cents, the run evaluated ( |
|
— |
Bank-reported current balance, in cents. |
|
— |
The miner’s calculated-available fallback (current minus pending), in cents. Absent when the miner computed none. |
|
— |
Which balance the run gated on: |
|
— |
When Plaid last updated the balance (RFC3339, UTC). Absent when txn-service carried no parseable timestamp. |
|
— |
The card’s available balance, in cents, the processor reported on an insufficient-funds (code |
Process Values
| Value | Written by |
|---|---|
|
Day-before ACH run (T-1) — float due the next business day. See Day-Before ACH. |
|
Day-before ACH run — attempt routed by the first-or-second-float ACH rule. |
|
Day-before ACH run — attempt routed by the 7-or-more-float-rank ACH rule. |
|
Due Date run — float due today. |
|
Daily Retry run — overdue float past its due date. |
|
Evening blind Daily Retry run — blind pinless attempt on an overdue float. See Evening blind run. |
|
Balance-update webhook run. |
|
Plaid connection lost/revoked webhook run. See Plaid Disconnected. |
|
Manual payback via |
|
Reactivation payback via |
|
ACH handler — settlement callback processing. See ACH Processing. |
|
ACH handler — chargeback detection. |
|
Batch worker — bulk float operations. |
|
Manual status update via the API (e.g. |
Source: pkg/dynamo/process.go
Outcome Values
outcome records the result of an attempt (ACHSENT, COMPLETED, RETURNED, DEFAULTED) or, on rows without a confirmation_id, why a run declined to attempt. Skip outcome values and their precedence are documented in Collections — Skip Outcomes.
locks
Region: DYNAMO_LOCK_REGION — the lock client’s own region variable (set to the same region value as DYNAMO_LEGACY_REGION)
Distributed locking table used by all collection components to prevent concurrent collection attempts on the same user’s float. Backed by the cirello.io/dynamolock client.
| Attribute | DynamoDB Tag | Description |
|---|---|---|
|
PK |
Lock key in the format |
|
— |
Unix nanosecond timestamp (as bytes) of when the lock was acquired. |
|
— |
TTL timestamp for automatic record expiry. |
|
— |
Duration of the lock lease. |
|
— |
Identifier of the lock owner (worker instance). |
|
— |
Version counter used for optimistic locking. |
A lock is held with a 60-second lease and a 1-second heartbeat. If a lock cannot be acquired, the collection attempt is skipped without modifying the float’s status; only one instance processes a given user’s float at a time.
requirements-bypass
Region: DYNAMO_LEGACY_REGION
Stores per-user eligibility overrides. When an unexpired bypass record exists for a user, the float creation flow skips the standard requirements check. Managed via the POST/GET/DELETE /{user_id}/bypass API endpoints. See Requirements Bypass.
| Attribute | DynamoDB Tag | Description |
|---|---|---|
|
PK |
Owning user’s ID. |
|
— |
Date the bypass expires ( |
|
— |
Internal note describing why the bypass was granted. |