Financials
Cash, statements, and runway — provider-agnostic by design.
Every company in Reventlov has a financials surface: a live cash balance, trailing transactions, and the three core financial statements (income, balance, cash flow). The data shape is provider-agnostic — Mercury, OpenClaw, QuickBooks Online, Xero, Plaid, or a manual upload all flow into the same schema and render the same way.
Resources
Connections
A company can have many connections, of two kinds:
bank— Mercury, Plaid-linked accounts, or any source of real-time cashaccounting— OpenClaw, QuickBooks, Xero, or any source of statements
Status flips to error if the provider returns auth failures and to
disconnected if the user revokes access.
Cash balances
One row per (company, connection, as_of) day. Cents-only. Multiple bank
accounts on the same day are stored as separate rows; sum them client-side
to get total cash.
Bank transactions
Sign convention: positive = credit (money in), negative = debit (money out).
(connection_id, external_id) is unique to make ingest idempotent.
Financial snapshots
A financial_snapshot is a full statement for a period. There are three
statement_types: income, balance, cashflow. Each company may have
at most one snapshot per (statement_type, period_end); re-posting upserts.
totals is rendered as KPI tiles at the top of each statement view.
line_items is a flat ordered array; indent controls visual hierarchy and
is_total adds a top border + bold weight.
Common total keys
These are conventions, not constraints — any keys you set show up in the UI.
Runway
Computed in real time from the latest cash_balance and trailing-90-day
transaction net:
If the trailing window is net positive, runway shows as ∞.
Ingest workflow
Every ingest fires the matching webhook event so downstream consumers (your agent, ledgers, alerting, the dashboard’s revalidator) stay in sync.
Permissions
All financial endpoints accept human or agent scope keys. Read endpoints are account-scoped; you can only see snapshots for companies you own.