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_querySubscriptionDashboardFindthrough vritto_find

List all non-archived subscriptions. Use for renewal questions, spend summaries, card-usage lookups, and to resolve subscription IDs before any write. Defaults to a compact summary: status counts, monthlyTotalUsd, and capped lean rows (merchant, price, cadence, nextBillingOn, status).

FieldTypeDescription
detailone of summary, fullResponse shape: "summary" (default, counts + monthlyTotalUsd + capped lean rows) or "full" (every record incl. notes, payment card, trial, and tag fields).
subscriptions_upsertSubscriptionCreate or Updatethrough vritto_create or vritto_update

Create or update one subscription. Omit record.id to create (merchantName required); include a real record.id from subscriptions_querySubscriptionDashboard to update, sent fields merge over the existing record. The server resolves the merchant 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 when creating.
record.idstringExisting subscription ID to update, from a prior subscriptions_querySubscriptionDashboard result. Omit to create a new subscription.
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.logoUrlstringLogo image URL. Usually omit, the server resolves a logo automatically.
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, e.g. 'USD' (default USD).
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_deleteSubscriptionDeletethrough vritto_delete

Delete (archive and mark cancelled) one subscription. Only for explicit removal requests, to record a cancellation while keeping the record visible, use subscriptions_upsertSubscription with status 'cancelled' instead. Resolve the ID with subscriptions_querySubscriptionDashboard first.

FieldTypeDescription
subscriptionId*stringSubscription ID from a prior subscriptions_querySubscriptionDashboard result, never invented.