Liabilities
A liability record represents a debt account within a user’s connected institution. Plaid supports three liability types: credit cards, mortgages, and student loans. Each type has a distinct set of fields in addition to the shared base fields.
Liability mining is controlled by the ENABLE_LIABILITY_MINING feature flag (enabled in test, currently disabled in prod). When enabled, the miner Lambda processes LIABILITIES / DEFAULT_UPDATE webhooks to fetch and store the latest liability data from Plaid.
Two record types are maintained for each liability:
-
Current liability — Always reflects the most recent data from Plaid. Overwritten on each update.
-
Liability history — An append-only log. A new history record is written for every fetched snapshot with no deduplication;
StoreLiabilityunconditionally appends a timestamped history item on each call.
Storage
Table: prod-txn-plaid
Region: us-east-2
Current Liability Keys
| Key | Value |
|---|---|
|
|
|
|
|
|
|
|
Liability History Keys
| Key | Value |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Shared Attributes
All liability records include these fields regardless of type:
| Attribute | Description |
|---|---|
|
Plaid-assigned item identifier |
|
Plaid-assigned account identifier |
|
FloatMe user identifier |
|
Liability type: |
|
Amount of the most recent payment, in cents |
|
RFC 3339 date of the most recent payment |
|
RFC 3339 date when the next payment is due |
Credit Liability Attributes
| Attribute | Description |
|---|---|
|
Array of APR (Annual Percentage Rate) objects. See APR Fields. |
|
|
|
RFC 3339 date when the most recent statement was issued |
|
Balance on the most recent statement, in cents |
|
Minimum payment amount due, in cents |
APR Fields
Each entry in the aprs array represents one APR tier on the credit account:
| Field | Description |
|---|---|
|
APR as a decimal percentage (e.g., |
|
Type of APR (e.g., |
|
Balance amount currently subject to this APR, in cents |
|
Interest charge for this APR tier in the current period |
Mortgage Liability Attributes
| Attribute | Description |
|---|---|
|
Interest rate object. See Mortgage Interest Rate. |
|
Description of the mortgage loan type (e.g., |
|
RFC 3339 date when the mortgage is scheduled to be fully paid off |
|
Next scheduled monthly payment amount, in cents |
|
RFC 3339 date when the mortgage was originated |
|
Original principal amount of the mortgage, in cents |
|
Current escrow account balance, in cents |
|
|
|
|
|
Address of the mortgaged property |
|
Current late fee balance, in cents |
|
Year-to-date interest paid, in cents |
|
Year-to-date principal paid, in cents |
Student Loan Liability Attributes
| Attribute | Description |
|---|---|
|
Name of the loan as reported by the servicer (e.g., |
|
Loan status object. See Student Loan Status. |
|
Repayment plan object. See Repayment Plan. |
|
Array of RFC 3339 dates when loan funds were disbursed |
|
RFC 3339 date when the loan is expected to be paid off under the current plan |
|
Name of the loan guarantor (e.g., |
|
Annual interest rate as a string (e.g., |
|
|
|
RFC 3339 date when the most recent statement was issued |
|
Minimum payment amount due, in cents |
|
RFC 3339 date when the loan was originated |
|
Original principal amount of the loan, in cents |
|
Total interest accrued but not yet paid, in cents |
|
Payment reference number used by the servicer |
|
Sequence number identifying this loan among multiple loans from the same servicer |
|
Year-to-date interest paid, in cents |
|
Year-to-date principal paid, in cents |
Query Patterns
| Query | Index | Conditions |
|---|---|---|
Get all current liabilities for a user |
Primary |
|
Get current liability for a specific item and account |
Primary |
|
Get liability history for a specific user, item, and account (sorted by time) |
Primary |
|
Update Behavior
When a new liability snapshot arrives from Plaid:
-
The current liability record (
LIABILITIES#<user_id>/ITEM#<item_id>#ACCOUNT#<account_id>) is overwritten with the latest data. -
A new history record is unconditionally appended with a timestamped sort key (
TIMESTAMP#<timestamp>). There is no deduplication — every fetched snapshot produces a history entry.
This means the history table contains one entry per mining run, regardless of whether the data changed.
Related Pages
-
Items — The item each liability belongs to
-
Accounts & Balances — Account records for the same accounts
-
Plaid Mining Pipeline — LIABILITIES webhook processing
-
Architecture —
prod-txn-plaidtable overview