Skip to main content

RecurrenceGroup

A V2 recurring group. Most fields are derived on read from the group's assigned transactions (latest-anchored); only frequency and the user overrides live on the group itself.

Resolver parent is a RecurrenceGroupItem (group + derived fields).

type RecurrenceGroup {
account: Account
amount: Float
category: Category
endedAt: DateTime
frequency: String!
id: ID!
isActive: Boolean!
isApproximate: Boolean!
isNew: Boolean!
logoUrl: String
merchant: Merchant
name: String
nextForecastedTransaction: RecurringTransactionNextForecastedTransaction
periodDate: Date
periodStatus: RecurrenceGroupStatus
recurringType: RecurringType
statement: String
status: RecurrenceGroupStatus!
transactions: [Transaction!]!
}

Fields​

RecurrenceGroup.account ● Account object​

Account of the most recent assigned transaction.

RecurrenceGroup.amount ● Float scalar​

Representative amount, derived from the most recent assigned transaction (signed).

RecurrenceGroup.category ● Category object​

Category of the most recent assigned transaction.

RecurrenceGroup.endedAt ● DateTime scalar​

When the user marked the group ended; null while active. Always user-initiated.

RecurrenceGroup.frequency ● String! non-null scalar​

The recurrence cadence (e.g. monthly, weekly). Stored on the group.

RecurrenceGroup.id ● ID! non-null scalar​

RecurrenceGroup.isActive ● Boolean! non-null scalar​

False once the user has ended the group (ended_at set).

RecurrenceGroup.isApproximate ● Boolean! non-null scalar​

True when the assigned transactions' amounts vary (a variable-amount stream); False for a fixed amount.

RecurrenceGroup.isNew ● Boolean! non-null scalar​

Whether to show the 'New' row indicator. Clears for the whole household once a single member has seen it twice — report impressions with recordRecurrenceGroupNewBadgeImpressions. Always false on an ended group, so it never competes with that row's inactive treatment.

RecurrenceGroup.logoUrl ● String scalar​

User-set logo; falls back to the merchant's logo when unset.

RecurrenceGroup.merchant ● Merchant object​

The group's merchant. May be null (leaves room for liability-backed groups, deferred).

RecurrenceGroup.name ● String scalar​

User-set custom name for the group; falls back to the merchant's name when unset.

RecurrenceGroup.nextForecastedTransaction ● RecurringTransactionNextForecastedTransaction object​

Next expected charge (date + amount), projected from the cadence and the latest transaction.

RecurrenceGroup.periodDate ● Date scalar​

The single date to show for the group within the requested window: the actual charge date when PAID, the most recent past-due expected date when OVERDUE, otherwise the next expected date (which falls outside the window for a group not due that period). Null when no window is given.

RecurrenceGroup.periodStatus ● RecurrenceGroupStatus enum​

Month-scoped status (paid / upcoming / overdue / ended) for the window passed to recurrenceGroups(startDate, endDate) — the Monthly/Calendar views. Null when no window is given (All view); use status then. Does not surface possibly_inactive (a today-relative nudge).

RecurrenceGroup.recurringType ● RecurringType enum​

income / expense / transfer. The user's stored override if set, otherwise derived from the latest transaction's amount sign and category.

RecurrenceGroup.statement ● String scalar​

Raw 'as on statement' descriptor from the latest transaction.

RecurrenceGroup.status ● RecurrenceGroupStatus! non-null enum​

Derived current-cycle status (paid / upcoming / overdue / possibly_inactive / ended), from the latest transaction vs. the cadence. possibly_inactive is a nudge only — we never end a group automatically.

RecurrenceGroup.transactions ● [Transaction!]! non-null object​

Assigned transactions, newest first.

Returned By​

recurrenceGroup query ● recurrenceGroups query