Skip To Main Content
All modules

Subscriptions

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.

Subscriptionsubscription

A recurring subscription with price, cadence, and renewal.

subscriptions_findFindthrough vritto_find

Read Subscriptions: one plan by id, or plans filtered by renewal dates, status, text, category, cadence or card. With no filter it returns status counts, monthlyTotalUsd and capped lean rows. Use for renewal, spend and card questions, and to resolve ids before any write.

FieldTypeDescription
idstringReturn just this subscription.
statusone of active, trial, paused, cancelled, watchlistOnly plans in this status.
fromstringNext renewal on or after this date. ALWAYS pass from/to when the question concerns a period.
tostringNext renewal on or before this date.
querystringText to match: merchant, plan or website.
categoryone of streaming, software, productivity, news, learning, cloud, finance, fitness, shopping, gaming, household, other
cadenceone of weekly, monthly, quarterly, yearly, one_time, unknown
cardstringThe paying card: its last four digits or a Finance card id.
limitintegerRows to return, default 25.
detailone of summary, full"summary" (default) counts, monthlyTotalUsd and lean rows; "full" every field incl. notes, payment card, trial and tags.
Example input
{}
subscriptions_addCreate or Updatethrough vritto_create or vritto_update

Add one subscription (merchantName required). A merchant already on file is updated instead of duplicated. The server resolves the logo and derives nextBillingOn from lastChargeOn and cadence when omitted. Example: record { merchantName 'Netflix', price 22.99, cadence 'monthly', category 'streaming', nextBillingOn '2026-07-12' }.

FieldTypeDescription
record*objectSubscription fields; merchantName is required.
record.idstringLeave out when adding; to change a subscription use subscriptions_change.
record.merchantNamestringMerchant or service name, e.g. 'Netflix'. Required when creating.
record.sourceone of manual, gmail, outlook, logo_dev, import, bankWhere the record came from. Set by the ingestion pipeline; leave unset.
record.websiteDomainstringMerchant website domain, e.g. 'netflix.com'. Also used to resolve the logo.
record.categoryone of streaming, software, productivity, news, learning, cloud, finance, fitness, shopping, gaming, household, otherSpending category (default 'other').
record.statusone of active, trial, paused, cancelled, watchlistLifecycle status (default 'active'). Use 'trial' for trials, 'watchlist' for services under consideration, 'cancelled' to record a cancellation while keeping history.
record.cadenceone of weekly, monthly, quarterly, yearly, one_time, unknownBilling cycle (default 'monthly').
record.currencystringISO 4217 currency code as the source states it, e.g. 'INR'; omit when none is stated (the account's currency is used).
record.pricenumberPrice per billing cycle in the given currency (default 0).
record.startedOnstringDate the subscription started (YYYY-MM-DD).
record.trialEndsOnstringTrial end date (YYYY-MM-DD).
record.nextBillingOnstringNext renewal/billing date (YYYY-MM-DD). If omitted, derived from lastChargeOn and cadence.
record.lastChargeOnstringMost recent charge date (YYYY-MM-DD).
record.cancellationDatestringPlanned or actual cancellation date (YYYY-MM-DD).
record.cancellationUrlstringThe page where this subscription is actually cancelled, e.g. 'https://www.netflix.com/cancelplan'. Set it when the user gives one or a receipt names one; never guess a URL.
record.paymentMethodone of card, bank, paypal, app_store, google_play, other, unknownHow the subscription is paid (default 'unknown').
record.cardIdstringFinance card id that pays for this, from finance_queryOverview. Never a card number, and never invented.
record.cardNetworkstringCard network for card payments, e.g. 'Visa' or 'Chase'.
record.cardLast4stringLast four digits of the paying card. Never store full card numbers.
record.ownerEmailstringEmail address of the account that owns the subscription.
record.planNamestringPlan or tier name, e.g. 'Premium 4K'.
record.seatsintegerNumber of seats or licenses (default 1).
record.renewalReminderDaysintegerDays before renewal to remind (default 7).
record.autopaybooleanWhether it renews automatically (default true).
record.notesstringNotes, e.g. cancellation instructions.
record.ownerPersonIdstringPeople person id when the subscription is really a family member's; omit for the account owner.
record.tagslist of stringTags.
Example input
{
  "record": {
    "merchantName": "Spotify",
    "category": "streaming",
    "status": "active",
    "cadence": "monthly",
    "price": 11.99,
    "currency": "USD",
    "nextBillingOn": "2026-10-12"
  }
}
subscriptions_changeUpdatethrough vritto_update

Change one subscription by record.id; sent fields merge. Cancel with status 'cancelled' and a cancellationDate (the record stays), pause, restart with status 'active' and startedOn, or change price, plan or card. Resolve the id with subscriptions_find first.

Note: To record a cancellation and keep the history, set status 'cancelled' and a cancellationDate.

FieldTypeDescription
record*objectThe subscription's id plus the fields to change.
record.id*stringSubscription ID from a prior subscriptions_find result, never invented.
record.merchantNamestringMerchant or service name, e.g. 'Netflix'. Required when creating.
record.websiteDomainstringMerchant website domain, e.g. 'netflix.com'. Also used to resolve the logo.
record.categoryone of streaming, software, productivity, news, learning, cloud, finance, fitness, shopping, gaming, household, otherSpending category (default 'other').
record.statusone of active, trial, paused, cancelled, watchlistLifecycle status (default 'active'). Use 'trial' for trials, 'watchlist' for services under consideration, 'cancelled' to record a cancellation while keeping history.
record.cadenceone of weekly, monthly, quarterly, yearly, one_time, unknownBilling cycle (default 'monthly').
record.currencystringISO 4217 currency code as the source states it, e.g. 'INR'; omit when none is stated (the account's currency is used).
record.pricenumberPrice per billing cycle in the given currency (default 0).
record.startedOnstringDate the subscription started (YYYY-MM-DD).
record.trialEndsOnstringTrial end date (YYYY-MM-DD).
record.nextBillingOnstringNext renewal/billing date (YYYY-MM-DD). If omitted, derived from lastChargeOn and cadence.
record.lastChargeOnstringMost recent charge date (YYYY-MM-DD).
record.cancellationDatestringPlanned or actual cancellation date (YYYY-MM-DD).
record.cancellationUrlstringThe page where this subscription is actually cancelled, e.g. 'https://www.netflix.com/cancelplan'. Set it when the user gives one or a receipt names one; never guess a URL.
record.paymentMethodone of card, bank, paypal, app_store, google_play, other, unknownHow the subscription is paid (default 'unknown').
record.cardIdstringFinance card id that pays for this, from finance_queryOverview. Never a card number, and never invented.
record.cardNetworkstringCard network for card payments, e.g. 'Visa' or 'Chase'.
record.cardLast4stringLast four digits of the paying card. Never store full card numbers.
record.ownerEmailstringEmail address of the account that owns the subscription.
record.planNamestringPlan or tier name, e.g. 'Premium 4K'.
record.seatsintegerNumber of seats or licenses (default 1).
record.renewalReminderDaysintegerDays before renewal to remind (default 7).
record.autopaybooleanWhether it renews automatically (default true).
record.notesstringNotes, e.g. cancellation instructions.
record.ownerPersonIdstringPeople person id when the subscription is really a family member's; omit for the account owner.
record.tagslist of stringTags.
Example input
{
  "record": {
    "id": "sub_spotify",
    "status": "cancelled",
    "cancellationDate": "2026-10-23"
  }
}
subscriptions_removeDeletethrough vritto_delete

Remove (archive and mark cancelled) one subscription. Only for explicit removal requests; to record a cancellation while keeping the record, use subscriptions_change with status 'cancelled'. Resolve the id with subscriptions_find first.

FieldTypeDescription
idstringThe subscription to remove.
subscriptionIdstringOlder name for id.