Finance
Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.
Transactiontransaction
One expense, income, or transfer on an account. The same operations reach recurring bills and income (type 'recurring'), accounts (type 'account'), cards (type 'card'), spending categories (type 'category') and a month's budgets (type 'budget'), and read the overview, reports and budget status.
finance_findFindthrough vritto_findRead Finance. No filter: the overview (accounts with balances, cards, categories, budgets, recurring items, recent transactions, net worth and this month's cash flow). view 'report' with from/to: spending totals by category, merchant and month. type 'transaction': transactions by account, trip and dates, paginated. view 'budget': a month's budget status.
Note: No filter returns the overview (accounts, cards, categories, budgets, recurring items, recent transactions, net worth). view 'report' with from/to totals a period; type 'transaction' lists transactions; view 'budget' reads a month's budget.
| Field | Type | Description |
|---|---|---|
| type | one of transaction, recurring, account, card, category, budget | 'transaction' lists transactions; 'budget' a month's budget status; any other type, or none with no filter, the overview. |
| view | one of overview, report, budget | 'report' spending over from/to; 'budget' a month's budget; 'overview' (default with no filter). |
| id | string | One transaction. |
| accountId | string | Transactions of one account. |
| tripId | string | Transactions attributed to one Trips-module trip. |
| from | string | Range start, inclusive (a report defaults to about 6 months ago). |
| to | string | Range end, inclusive (defaults to today). ALWAYS pass from/to when the question concerns a period. |
| month | string | A budget's month (defaults to this month). |
| limit | integer | Transactions per page (default 100). |
| cursor | string | The previous page's nextCursor, unchanged. |
Example input
{}finance_addCreate or Updatethrough vritto_create or vritto_updateAdd one record: a transaction (accountId + amount; rules categorize it), a recurring bill or income (type 'recurring': merchantName, amount, cadence, nextDate), an account, a card (accountId, last 4 digits only), a category, or a month's budget lines (type 'budget': month, lines). A real record.id updates that record instead.
| Field | Type | Description |
|---|---|---|
| type | one of transaction, recurring, account, card, category, budget | Record type: 'transaction' (default) money moving in or out; 'recurring' a recurring bill or income; 'account' a checking, savings, credit, cash, investment, loan or asset account; 'card' the plastic that spends from an account; 'category' a spending or income category; 'budget' a month's category b |
| record | object | The record's fields; for a budget, month and lines instead. |
| record.id | string | Leave out to add; a real id updates that record, only sent fields change. |
| record.accountId | string | A transaction's account (required for one), a card's account (required: a credit card points at its credit_card account, a debit card at the checking it draws on), a bill's paying account. |
| record.amount | number | Transactions and bills: positive magnitude; a transaction's direction comes from type. Required for a transaction. |
| record.currency | string | ISO-4217 code. A transaction takes its account's currency when left out. |
| record.merchantName | string | Transactions and bills, e.g. 'Blue Bottle Coffee', 'Rent'. Required for a bill. |
| record.categoryId | string | Transactions and bills: a category from finance_find. Omit to leave uncategorized (rules may fill it). |
| record.name | string | An account's name ('Chase Checking') or a category's ('Pets'). Required for those. |
| record.type | one of expense, income, transfer, checking, savings, cash, investment, retirement, crypto, other_asset, credit_card, loan, mortgage, line_of_credit, other_liability | A transaction's direction: expense (default) reduces the account, income increases it, transfer moves between two accounts. An account's type (default checking), which sets asset or liability. |
| record.status | one of cleared, pending, active, paused, ended, open, closed, hidden, expired, replaced, cancelled | A transaction is cleared (default) or pending; a bill active, paused ('pause my gym') or ended; an account open, closed (drops out of net worth) or hidden; a card active, expired, replaced or cancelled. |
| record.kind | one of bill, income, subscription, loan_payment, transfer, expense | A bill's kind (default bill), or a category's: expense (default), income or transfer. |
| record.notes | string | |
| record.date | string | Transaction date (defaults to today). |
| record.payee | string | Who was paid or paid you when not the merchant (a check to a landlord). |
| record.description | string | Bank-statement style line. |
| record.transferAccountId | string | Required for a transfer: ONE transaction whose accountId is the SOURCE (money out) and this the DESTINATION (money in); no second transaction, never counted as income or spending. |
| record.splits | list of object | Split across categories; amounts MUST sum exactly to the transaction amount. Not on transfers. |
| record.tripId | string | A transaction's trip from the Trips module. Only a real ID. |
| record.tags | list of string | A transaction's free-form labels ('reimbursable'); reuse the user's spellings. |
| record.recurringId | string | The bill a transaction pays; the bill's next date moves forward. |
| record.cadence | one of weekly, biweekly, monthly, quarterly, semiannual, yearly | A bill's cadence (default monthly). |
| record.nextDate | string | A bill's next due date. |
| record.reminderLeadDays | integer | Days before a bill's nextDate to remind (default 3). |
| record.balanceModel | one of ledger, valuation | 'ledger' tracks transactions; 'valuation' a periodic balance (house, 401k). |
| record.openingBalance | number | |
| record.openingDate | string | Local date YYYY-MM-DD. |
| record.creditLimit | number | |
| record.interestApr | number | |
| record.statementDay | integer | Liability accounts: statement closing day (0 unsets). |
| record.paymentDueDay | integer | Liability accounts: payment due day (0 unsets); schedules a monthly payment reminder. It belongs to the credit line, never a card. |
| record.autopayEnabled | boolean | |
| record.minimumPayment | number | |
| record.paymentReminderDays | integer | Days before the due day to remind (default 3; 0 turns it off). |
| record.valuationHistory | list of object | A valuation account's dated balances. Sending it REPLACES the whole history: read the account first and resend it with the new point appended. |
| record.balanceAsOf | string | Local date YYYY-MM-DD. |
| record.includeInNetWorth | boolean | |
| record.institutionName | string | |
| record.nickname | string | A card's name, e.g. 'Chase Sapphire'. |
| record.cardKind | one of credit, debit, prepaid | |
| record.network | one of visa, mastercard, amex, discover, other | |
| record.last4 | string | A card's LAST 4 DIGITS ONLY. Never accept, store or ask for a full card number or CVV. |
| record.cardholderName | string | |
| record.expiryMonth | integer | With expiryYear: valid through the end of this month; schedules an expiry reminder. |
| record.expiryYear | integer | |
| record.isPrimary | boolean | |
| record.expiryReminderDays | integer | |
| record.groupName | string | A category's section ('Lifestyle'); reuse an existing group. |
| record.icon | string | |
| record.color | string | |
| record.parentId | string | A sub-category's parent. |
| month | string | Type 'budget': the month. |
| lines | list of object | Type 'budget': ONLY the categories being changed; the month's other lines and their rollover flags are kept. budgeted 0 with rollover false clears one. |
Example input
{
"record": {
"accountId": "acct_checking",
"date": "2026-09-25",
"type": "expense",
"amount": 42.18,
"currency": "USD",
"merchantName": "Whole Foods"
}
}finance_changeUpdatethrough vritto_updateChange one record by record.id (set type for anything but a transaction); only sent fields change. A bill paused or ended is its status; a closed account is status 'closed'. accountId with realBalance reconciles a ledger account to the user's stated balance with an audited adjustment. Resolve ids with finance_find first.
Note: accountId with realBalance reconciles a ledger account with an audited adjustment.
| Field | Type | Description |
|---|---|---|
| type | one of transaction, recurring, account, card, category, budget | Record type: 'transaction' (default) money moving in or out; 'recurring' a recurring bill or income; 'account' a checking, savings, credit, cash, investment, loan or asset account; 'card' the plastic that spends from an account; 'category' a spending or income category; 'budget' a month's category b |
| record | object | The record's id plus the fields to change. |
| record.id* | string | Record ID from finance_find, never invented. |
| record.accountId | string | A transaction's account (required for one), a card's account (required: a credit card points at its credit_card account, a debit card at the checking it draws on), a bill's paying account. |
| record.amount | number | Transactions and bills: positive magnitude; a transaction's direction comes from type. Required for a transaction. |
| record.currency | string | ISO-4217 code. A transaction takes its account's currency when left out. |
| record.merchantName | string | Transactions and bills, e.g. 'Blue Bottle Coffee', 'Rent'. Required for a bill. |
| record.categoryId | string | Transactions and bills: a category from finance_find. Omit to leave uncategorized (rules may fill it). |
| record.name | string | An account's name ('Chase Checking') or a category's ('Pets'). Required for those. |
| record.type | one of expense, income, transfer, checking, savings, cash, investment, retirement, crypto, other_asset, credit_card, loan, mortgage, line_of_credit, other_liability | A transaction's direction: expense (default) reduces the account, income increases it, transfer moves between two accounts. An account's type (default checking), which sets asset or liability. |
| record.status | one of cleared, pending, active, paused, ended, open, closed, hidden, expired, replaced, cancelled | A transaction is cleared (default) or pending; a bill active, paused ('pause my gym') or ended; an account open, closed (drops out of net worth) or hidden; a card active, expired, replaced or cancelled. |
| record.kind | one of bill, income, subscription, loan_payment, transfer, expense | A bill's kind (default bill), or a category's: expense (default), income or transfer. |
| record.notes | string | |
| record.date | string | Transaction date (defaults to today). |
| record.payee | string | Who was paid or paid you when not the merchant (a check to a landlord). |
| record.description | string | Bank-statement style line. |
| record.transferAccountId | string | Required for a transfer: ONE transaction whose accountId is the SOURCE (money out) and this the DESTINATION (money in); no second transaction, never counted as income or spending. |
| record.splits | list of object | Split across categories; amounts MUST sum exactly to the transaction amount. Not on transfers. |
| record.tripId | string | A transaction's trip from the Trips module. Only a real ID. |
| record.tags | list of string | A transaction's free-form labels ('reimbursable'); reuse the user's spellings. |
| record.recurringId | string | The bill a transaction pays; the bill's next date moves forward. |
| record.cadence | one of weekly, biweekly, monthly, quarterly, semiannual, yearly | A bill's cadence (default monthly). |
| record.nextDate | string | A bill's next due date. |
| record.reminderLeadDays | integer | Days before a bill's nextDate to remind (default 3). |
| record.balanceModel | one of ledger, valuation | 'ledger' tracks transactions; 'valuation' a periodic balance (house, 401k). |
| record.openingBalance | number | |
| record.openingDate | string | Local date YYYY-MM-DD. |
| record.creditLimit | number | |
| record.interestApr | number | |
| record.statementDay | integer | Liability accounts: statement closing day (0 unsets). |
| record.paymentDueDay | integer | Liability accounts: payment due day (0 unsets); schedules a monthly payment reminder. It belongs to the credit line, never a card. |
| record.autopayEnabled | boolean | |
| record.minimumPayment | number | |
| record.paymentReminderDays | integer | Days before the due day to remind (default 3; 0 turns it off). |
| record.valuationHistory | list of object | A valuation account's dated balances. Sending it REPLACES the whole history: read the account first and resend it with the new point appended. |
| record.balanceAsOf | string | Local date YYYY-MM-DD. |
| record.includeInNetWorth | boolean | |
| record.institutionName | string | |
| record.nickname | string | A card's name, e.g. 'Chase Sapphire'. |
| record.cardKind | one of credit, debit, prepaid | |
| record.network | one of visa, mastercard, amex, discover, other | |
| record.last4 | string | A card's LAST 4 DIGITS ONLY. Never accept, store or ask for a full card number or CVV. |
| record.cardholderName | string | |
| record.expiryMonth | integer | With expiryYear: valid through the end of this month; schedules an expiry reminder. |
| record.expiryYear | integer | |
| record.isPrimary | boolean | |
| record.expiryReminderDays | integer | |
| record.groupName | string | A category's section ('Lifestyle'); reuse an existing group. |
| record.icon | string | |
| record.color | string | |
| record.parentId | string | A sub-category's parent. |
| month | string | Type 'budget': the month. |
| lines | list of object | Type 'budget': ONLY the categories being changed; the month's other lines and their rollover flags are kept. budgeted 0 with rollover false clears one. |
| accountId | string | With realBalance: the ledger account to reconcile. |
| realBalance | number | The true current balance the user states. Not for 'valuation' accounts: change their valuationHistory. |
| asOf | string | With realBalance: when the balance was checked (defaults to today). |
Example input
{
"record": {
"id": "txn_123",
"categoryId": "cat_dining"
}
}finance_removeDeletethrough vritto_deleteRemove (archive) one transaction (reversing its balance effect), card (its account is untouched) or recurring series (marked ended) by id. Only for explicit removals: a paused bill is a finance_change. An account is removed with finance_deleteAccount.
Note: type 'card' or 'recurring' removes those; an account is removed with finance_deleteAccount.
| Field | Type | Description |
|---|---|---|
| id | string | The record to remove. |
| transactionId | string | Older name for a transaction's id. |
| cardId | string | Older name for a card's id. |
| recurringId | string | Older name for a recurring series' id. |
| type | one of transaction, card, recurring | Which record the id names (default transaction). |
Finance Accountfinance_account
A bank, card, investment, loan, or cash account; removing one archives its transactions too.
finance_deleteAccountDeletethrough vritto_deleteDelete (archive) one account and its transactions. Resolve the ID with finance_find first. Only for explicit removals, this hides the account and all its history from active views.
| Field | Type | Description |
|---|---|---|
| accountId* | string |