Skip To Main Content
All modules

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_find

Read 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.

FieldTypeDescription
typeone 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.
viewone of overview, report, budget'report' spending over from/to; 'budget' a month's budget; 'overview' (default with no filter).
idstringOne transaction.
accountIdstringTransactions of one account.
tripIdstringTransactions attributed to one Trips-module trip.
fromstringRange start, inclusive (a report defaults to about 6 months ago).
tostringRange end, inclusive (defaults to today). ALWAYS pass from/to when the question concerns a period.
monthstringA budget's month (defaults to this month).
limitintegerTransactions per page (default 100).
cursorstringThe previous page's nextCursor, unchanged.
Example input
{}
finance_addCreate or Updatethrough vritto_create or vritto_update

Add 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.

FieldTypeDescription
typeone of transaction, recurring, account, card, category, budgetRecord 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
recordobjectThe record's fields; for a budget, month and lines instead.
record.idstringLeave out to add; a real id updates that record, only sent fields change.
record.accountIdstringA 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.amountnumberTransactions and bills: positive magnitude; a transaction's direction comes from type. Required for a transaction.
record.currencystringISO-4217 code. A transaction takes its account's currency when left out.
record.merchantNamestringTransactions and bills, e.g. 'Blue Bottle Coffee', 'Rent'. Required for a bill.
record.categoryIdstringTransactions and bills: a category from finance_find. Omit to leave uncategorized (rules may fill it).
record.namestringAn account's name ('Chase Checking') or a category's ('Pets'). Required for those.
record.typeone of expense, income, transfer, checking, savings, cash, investment, retirement, crypto, other_asset, credit_card, loan, mortgage, line_of_credit, other_liabilityA 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.statusone of cleared, pending, active, paused, ended, open, closed, hidden, expired, replaced, cancelledA 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.kindone of bill, income, subscription, loan_payment, transfer, expenseA bill's kind (default bill), or a category's: expense (default), income or transfer.
record.notesstring
record.datestringTransaction date (defaults to today).
record.payeestringWho was paid or paid you when not the merchant (a check to a landlord).
record.descriptionstringBank-statement style line.
record.transferAccountIdstringRequired 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.splitslist of objectSplit across categories; amounts MUST sum exactly to the transaction amount. Not on transfers.
record.tripIdstringA transaction's trip from the Trips module. Only a real ID.
record.tagslist of stringA transaction's free-form labels ('reimbursable'); reuse the user's spellings.
record.recurringIdstringThe bill a transaction pays; the bill's next date moves forward.
record.cadenceone of weekly, biweekly, monthly, quarterly, semiannual, yearlyA bill's cadence (default monthly).
record.nextDatestringA bill's next due date.
record.reminderLeadDaysintegerDays before a bill's nextDate to remind (default 3).
record.balanceModelone of ledger, valuation'ledger' tracks transactions; 'valuation' a periodic balance (house, 401k).
record.openingBalancenumber
record.openingDatestringLocal date YYYY-MM-DD.
record.creditLimitnumber
record.interestAprnumber
record.statementDayintegerLiability accounts: statement closing day (0 unsets).
record.paymentDueDayintegerLiability accounts: payment due day (0 unsets); schedules a monthly payment reminder. It belongs to the credit line, never a card.
record.autopayEnabledboolean
record.minimumPaymentnumber
record.paymentReminderDaysintegerDays before the due day to remind (default 3; 0 turns it off).
record.valuationHistorylist of objectA valuation account's dated balances. Sending it REPLACES the whole history: read the account first and resend it with the new point appended.
record.balanceAsOfstringLocal date YYYY-MM-DD.
record.includeInNetWorthboolean
record.institutionNamestring
record.nicknamestringA card's name, e.g. 'Chase Sapphire'.
record.cardKindone of credit, debit, prepaid
record.networkone of visa, mastercard, amex, discover, other
record.last4stringA card's LAST 4 DIGITS ONLY. Never accept, store or ask for a full card number or CVV.
record.cardholderNamestring
record.expiryMonthintegerWith expiryYear: valid through the end of this month; schedules an expiry reminder.
record.expiryYearinteger
record.isPrimaryboolean
record.expiryReminderDaysinteger
record.groupNamestringA category's section ('Lifestyle'); reuse an existing group.
record.iconstring
record.colorstring
record.parentIdstringA sub-category's parent.
monthstringType 'budget': the month.
lineslist of objectType '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_update

Change 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.

FieldTypeDescription
typeone of transaction, recurring, account, card, category, budgetRecord 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
recordobjectThe record's id plus the fields to change.
record.id*stringRecord ID from finance_find, never invented.
record.accountIdstringA 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.amountnumberTransactions and bills: positive magnitude; a transaction's direction comes from type. Required for a transaction.
record.currencystringISO-4217 code. A transaction takes its account's currency when left out.
record.merchantNamestringTransactions and bills, e.g. 'Blue Bottle Coffee', 'Rent'. Required for a bill.
record.categoryIdstringTransactions and bills: a category from finance_find. Omit to leave uncategorized (rules may fill it).
record.namestringAn account's name ('Chase Checking') or a category's ('Pets'). Required for those.
record.typeone of expense, income, transfer, checking, savings, cash, investment, retirement, crypto, other_asset, credit_card, loan, mortgage, line_of_credit, other_liabilityA 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.statusone of cleared, pending, active, paused, ended, open, closed, hidden, expired, replaced, cancelledA 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.kindone of bill, income, subscription, loan_payment, transfer, expenseA bill's kind (default bill), or a category's: expense (default), income or transfer.
record.notesstring
record.datestringTransaction date (defaults to today).
record.payeestringWho was paid or paid you when not the merchant (a check to a landlord).
record.descriptionstringBank-statement style line.
record.transferAccountIdstringRequired 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.splitslist of objectSplit across categories; amounts MUST sum exactly to the transaction amount. Not on transfers.
record.tripIdstringA transaction's trip from the Trips module. Only a real ID.
record.tagslist of stringA transaction's free-form labels ('reimbursable'); reuse the user's spellings.
record.recurringIdstringThe bill a transaction pays; the bill's next date moves forward.
record.cadenceone of weekly, biweekly, monthly, quarterly, semiannual, yearlyA bill's cadence (default monthly).
record.nextDatestringA bill's next due date.
record.reminderLeadDaysintegerDays before a bill's nextDate to remind (default 3).
record.balanceModelone of ledger, valuation'ledger' tracks transactions; 'valuation' a periodic balance (house, 401k).
record.openingBalancenumber
record.openingDatestringLocal date YYYY-MM-DD.
record.creditLimitnumber
record.interestAprnumber
record.statementDayintegerLiability accounts: statement closing day (0 unsets).
record.paymentDueDayintegerLiability accounts: payment due day (0 unsets); schedules a monthly payment reminder. It belongs to the credit line, never a card.
record.autopayEnabledboolean
record.minimumPaymentnumber
record.paymentReminderDaysintegerDays before the due day to remind (default 3; 0 turns it off).
record.valuationHistorylist of objectA valuation account's dated balances. Sending it REPLACES the whole history: read the account first and resend it with the new point appended.
record.balanceAsOfstringLocal date YYYY-MM-DD.
record.includeInNetWorthboolean
record.institutionNamestring
record.nicknamestringA card's name, e.g. 'Chase Sapphire'.
record.cardKindone of credit, debit, prepaid
record.networkone of visa, mastercard, amex, discover, other
record.last4stringA card's LAST 4 DIGITS ONLY. Never accept, store or ask for a full card number or CVV.
record.cardholderNamestring
record.expiryMonthintegerWith expiryYear: valid through the end of this month; schedules an expiry reminder.
record.expiryYearinteger
record.isPrimaryboolean
record.expiryReminderDaysinteger
record.groupNamestringA category's section ('Lifestyle'); reuse an existing group.
record.iconstring
record.colorstring
record.parentIdstringA sub-category's parent.
monthstringType 'budget': the month.
lineslist of objectType 'budget': ONLY the categories being changed; the month's other lines and their rollover flags are kept. budgeted 0 with rollover false clears one.
accountIdstringWith realBalance: the ledger account to reconcile.
realBalancenumberThe true current balance the user states. Not for 'valuation' accounts: change their valuationHistory.
asOfstringWith realBalance: when the balance was checked (defaults to today).
Example input
{
  "record": {
    "id": "txn_123",
    "categoryId": "cat_dining"
  }
}
finance_removeDeletethrough vritto_delete

Remove (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.

FieldTypeDescription
idstringThe record to remove.
transactionIdstringOlder name for a transaction's id.
cardIdstringOlder name for a card's id.
recurringIdstringOlder name for a recurring series' id.
typeone of transaction, card, recurringWhich 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_delete

Delete (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.

FieldTypeDescription
accountId*string