> ## Documentation Index
> Fetch the complete documentation index at: https://help.mytruv.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Recurring Transactions

> Get recurring transactions (v2, ClickHouse-backed outflows + Core API inflows).

Reads outflows from local ClickHouse detection results.
Proxies inflows from Core API (income detection is a separate pipeline).

The response includes an ``accounts`` list covering every account
referenced by an inflow or outflow, so clients can display the source
account (name, mask) on each row without an extra lookup. Match each
item's ``account_id`` against ``accounts[].id``.

Returns empty lists if no recurring detection data exists yet.



## OpenAPI

````yaml GET /v2/users/recurring-transactions
openapi: 3.1.0
info:
  title: Truv Public API
  description: >
    Read-only API for personal access token (PAT) users.


    ## Authentication


    Authenticate with `Authorization: Bearer <token>`. Tokens have a `pat_`
    prefix

    and are generated in the Truv web app under Settings → API keys.


    ## Available Endpoints


    This API exposes a subset of read-only endpoints for retrieving financial
    data,

    account links, and user profile information.
  version: 1.0.0
servers:
  - url: https://api.mytruv.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: users
    description: User profile — read-only access to the authenticated user's profile.
  - name: financial-data
    description: >-
      Financial data — balances, transactions, income, spending, liabilities,
      and balance history.
  - name: links
    description: >-
      Account links — list connected financial institutions and payroll
      providers.
paths:
  /v2/users/recurring-transactions:
    get:
      tags:
        - financial-data
      summary: Get User Recurring Transactions V2
      description: >-
        Get recurring transactions (v2, ClickHouse-backed outflows + Core API
        inflows).


        Reads outflows from local ClickHouse detection results.

        Proxies inflows from Core API (income detection is a separate pipeline).


        The response includes an ``accounts`` list covering every account

        referenced by an inflow or outflow, so clients can display the source

        account (name, mask) on each row without an extra lookup. Match each

        item's ``account_id`` against ``accounts[].id``.


        Returns empty lists if no recurring detection data exists yet.
      operationId: getRecurringTransactionsV2
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Status18'
            description: >-
              Filter by recurring status: active, inactive, irregular, or all.
              Defaults to active.
            default: active
          description: >-
            Filter by recurring status: active, inactive, irregular, or all.
            Defaults to active.
      responses:
        '200':
          description: >-
            Recurring transactions (v2, ClickHouse-backed outflows) enriched
            with source accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringTransactionsEnrichedResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Status18:
      type: string
      enum:
        - active
        - inactive
        - irregular
        - all
      title: Status18
    RecurringTransactionsEnrichedResponse:
      properties:
        recurring_transactions:
          $ref: '#/components/schemas/RecurringTransactionsData'
          description: >-
            Recurring inflows (income) and outflows (expenses) from the Truv
            API.
        accounts:
          items:
            $ref: '#/components/schemas/Account1'
          type: array
          title: Accounts
          description: >-
            Accounts referenced by the recurring items. Only accounts that
            appear on an inflow or outflow are included.
      type: object
      required:
        - recurring_transactions
      title: RecurringTransactionsEnrichedResponse
      description: >-
        Recurring transactions enriched with source accounts; match each item's
        ``account_id`` against ``accounts[].id``.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    RecurringTransactionsData:
      properties:
        outflows:
          items:
            $ref: '#/components/schemas/RecurringOutflow'
          type: array
          title: Outflows
        inflows:
          items:
            $ref: '#/components/schemas/RecurringInflow'
          type: array
          title: Inflows
      additionalProperties: true
      type: object
      required:
        - outflows
        - inflows
      title: RecurringTransactionsData
    Account1:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          examples:
            - 24d7e80942ce4ad58a93f70ce4115f5c
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
          examples:
            - '2022-05-04T11:30:00Z'
        updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Updated At
          examples:
            - '2022-05-04T12:00:00Z'
        type:
          $ref: '#/components/schemas/Type4'
          examples:
            - CHECKING
        subtype:
          anyOf:
            - $ref: '#/components/schemas/Subtype1'
            - type: 'null'
          examples:
            - MONEY_MARKET
        mask:
          anyOf:
            - type: string
            - type: 'null'
          title: Mask
          examples:
            - '6789'
        nickname:
          anyOf:
            - type: string
            - type: 'null'
          title: Nickname
          examples:
            - My account
        balances:
          $ref: '#/components/schemas/AccountBalances'
      additionalProperties: true
      type: object
      required:
        - type
        - balances
      title: Account1
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    RecurringOutflow:
      properties:
        source_id:
          type: string
          title: Source Id
          examples:
            - 68a7e80942ce4ad58a93f70ce411549a
        source_name:
          type: string
          title: Source Name
          examples:
            - Netflix
        account_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Account Id
          examples:
            - 68a7e80942ce4ad58a93f70ce411549a
        categories:
          items:
            type: string
          type: array
          title: Categories
          examples:
            - - Entertainment
              - Subscriptions
        description:
          type: string
          title: Description
          examples:
            - NETFLIX.COM
        merchant_category_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Merchant Category Code
          examples:
            - '5968'
        frequency:
          anyOf:
            - type: string
            - type: 'null'
          title: Frequency
          examples:
            - MONTHLY
        status:
          anyOf:
            - $ref: '#/components/schemas/Status15'
            - type: 'null'
          examples:
            - active
        average_amount:
          anyOf:
            - type: string
            - type: 'null'
          title: Average Amount
          examples:
            - '15.99'
        median_amount:
          anyOf:
            - type: string
            - type: 'null'
          title: Median Amount
          examples:
            - '15.99'
        last_amount:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Amount
          examples:
            - '15.99'
        logo_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Logo Url
          examples:
            - https://example.com/logo.png
        first_detected:
          type: string
          format: date
          title: First Detected
          examples:
            - '2024-01-15'
        last_transaction_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Last Transaction Date
          examples:
            - '2024-11-15'
        next_expected_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Next Expected Date
          examples:
            - '2024-12-15'
        historical_transactions:
          anyOf:
            - items:
                $ref: '#/components/schemas/HistoricalTransaction'
              type: array
            - type: 'null'
          title: Historical Transactions
      additionalProperties: true
      type: object
      required:
        - source_id
        - source_name
        - categories
        - description
        - first_detected
      title: RecurringOutflow
    RecurringInflow:
      properties:
        source_id:
          type: string
          title: Source Id
          examples:
            - 68a7e80942ce4ad58a93f70ce411549a
        source_name:
          type: string
          title: Source Name
          examples:
            - Acme Corp
        account_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Account Id
          examples:
            - 68a7e80942ce4ad58a93f70ce411549a
        description:
          type: string
          title: Description
          examples:
            - Salary
        frequency:
          anyOf:
            - type: string
            - type: 'null'
          title: Frequency
          examples:
            - BIWEEKLY
        average_amount:
          anyOf:
            - type: string
            - type: number
            - type: 'null'
          title: Average Amount
          examples:
            - '3500.00'
        median_amount:
          anyOf:
            - type: string
            - type: number
            - type: 'null'
          title: Median Amount
          examples:
            - '3500.00'
        last_amount:
          anyOf:
            - type: string
            - type: number
            - type: 'null'
          title: Last Amount
          examples:
            - '3500.00'
        logo_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Logo Url
          examples:
            - https://example.com/logo.png
        status:
          anyOf:
            - $ref: '#/components/schemas/Status16'
            - type: 'null'
          examples:
            - active
        first_detected:
          type: string
          format: date
          title: First Detected
          examples:
            - '2024-01-01'
        last_transaction_date:
          type: string
          format: date
          title: Last Transaction Date
          examples:
            - '2024-11-15'
        next_expected_date:
          type: string
          format: date
          title: Next Expected Date
          examples:
            - '2024-11-29'
        historical_transactions:
          anyOf:
            - items:
                $ref: '#/components/schemas/HistoricalTransaction'
              type: array
            - type: 'null'
          title: Historical Transactions
        income_type:
          type: string
          title: Income Type
          examples:
            - salary
      additionalProperties: true
      type: object
      required:
        - source_id
        - source_name
        - description
        - first_detected
        - last_transaction_date
        - next_expected_date
        - income_type
      title: RecurringInflow
    Type4:
      type: string
      enum:
        - CHECKING
        - SAVINGS
        - LOAN
        - CREDIT_CARD
        - INVESTMENT
        - LINE_OF_CREDIT
        - MORTGAGE
        - PROPERTY
        - CASH
        - INSURANCE
        - PREPAID
        - CHECKING_LINE_OF_CREDIT
        - ANY
      title: Type4
      description: The account's type
    Subtype1:
      type: string
      enum:
        - MONEY_MARKET
        - CERTIFICATE_OF_DEPOSIT
        - AUTO
        - STUDENT
        - SMALL_BUSINESS
        - PERSONAL
        - PERSONAL_WITH_COLLATERAL
        - HOME_EQUITY
        - BOAT
        - POWERSPORTS
        - RV
        - HELOC
        - PLAN_401_K
        - PLAN_403_B
        - PLAN_529
        - IRA
        - ROLLOVER_IRA
        - ROTH_IRA
        - TAXABLE
        - NON_TAXABLE
        - BROKERAGE
        - TRUST
        - UNIFORM_GIFTS_TO_MINORS_ACT
        - PLAN_457
        - PENSION
        - EMPLOYEE_STOCK_OWNERSHIP_PLAN
        - SIMPLIFIED_EMPLOYEE_PENSION
        - SIMPLE_IRA
        - PLAN_ROTH_401_K
        - FIXED_ANNUITY
        - VARIABLE_ANNUITY
        - HSA
        - TAX_FREE_SAVINGS_ACCOUNT
        - INDIVIDUAL
        - REGISTERED_RETIREMENT_INCOME_FUND
        - CASH_MANAGEMENT_ACCOUNT
        - EMPLOYEE_STOCK_PURCHASE_PLAN
        - REGISTERED_EDUCATION_SAVINGS_PLAN
        - PROFIT_SHARING_PLAN
        - UNIFORM_TRANSFER_TO_MINORS_ACT
        - PLAN_401_A
        - SARSEP_IRA
        - FIXED_ANNUITY_TRADITIONAL_IRA
        - VARIABLE_ANNUITY_TRADITIONAL_IRA
        - SEPP_IRA
        - INHERITED_TRADITIONAL_IRA
        - FIXED_ANNUITY_ROTH_IRA
        - VARIABLE_ANNUITY_ROTH_IRA
        - INHERITED_ROTH_IRA
        - COVERDELL
        - ADVISORY_ACCOUNT
        - BROKERAGE_MARGIN
        - CHARITABLE_GIFT_ACCOUNT
        - CHURCH_ACCOUNT
        - CONSERVATORSHIP
        - CUSTODIAL
        - DEFINED_BENEFIT_PLAN
        - DEFINED_CONTRIBUTION_PLAN
        - EDUCATIONAL
        - ESTATE
        - EXECUTOR
        - GROUP_RETIREMENT_SAVINGS_PLAN
        - GUARANTEED_INVESTMENT_CERTIFICATE
        - HRA
        - INDEXED_ANNUITY
        - INVESTMENT_CLUB
        - IRREVOCABLE_TRUST
        - JOINT_TENANTS_BY_ENTIRITY
        - JOINT_TENANTS_COMMUNITY_PROPERTY
        - JOINT_TENANTS_IN_COMMON
        - JOINT_TENANTS_WITH_RIGHTS_OF_SURVIVORSHIP
        - KEOUGH_PLAN
        - LIFE_INCOME_FUND
        - LIVING_TRUST
        - LOCKED_IN_RETIREMENT_ACCOUNT
        - LOCKED_IN_RETIREMENT_INVESTMENT_FUND
        - LOCKED_IN_RETIREMENT_SAVINGS_ACCOUNT
        - MONEY_PURCHASE_PLAN
        - PARTNERSHIP
        - PLAN_409_A
        - PLAN_ROTH_403_B
        - REGISTERED_DISABILITY_SAVINGS_PLAN
        - REGISTERED_LOCKED_IN_SAVINGS_PLAN
        - REGISTERED_PENSION_PLAN
        - REGISTERED_RETIREMENT_SAVINGS_PLAN
        - REVOCABLE_TRUST
        - ROTH_CONVERSION
        - SOLE_PROPRIETORSHIP
        - SPOUSAL_IRA
        - SPOUSAL_ROTH_IRA
        - TESTAMENTARY_TRUST
        - THRIFT_SAVINGS_PLAN
        - INHERITED_ANNUITY
        - CORPORATE_ACCOUNT
        - LIMITED_LIABILITY_ACCOUNT
        - VEHICLE_INSURANCE
        - DISABILITY
        - HEALTH
        - LONG_TERM_CARE
        - PROPERTY_AND_CASUALTY
        - UNIVERSAL_LIFE
        - TERM_LIFE
        - WHOLE_LIFE
        - ACCIDENTAL_DEATH_AND_DISMEMBERMENT
        - VARIABLE_UNIVERSAL_LIFE
        - ROTH
        - ROLLOVER
        - OTHER
        - ANNUITY
        - TRANSFERRABLE_ON_DEATH
      title: Subtype1
      description: The account’s subtype
    AccountBalances:
      properties:
        currency_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Currency Code
          examples:
            - USD
        balance:
          anyOf:
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: 'null'
          title: Balance
          examples:
            - '100.00'
        available_balance:
          anyOf:
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: 'null'
          title: Available Balance
          examples:
            - '50.99'
        credit_limit:
          anyOf:
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: 'null'
          title: Credit Limit
          examples:
            - '200.00'
      additionalProperties: true
      type: object
      title: AccountBalances
    Status15:
      type: string
      enum:
        - active
        - inactive
        - irregular
      title: Status15
      description: Status of the recurring source (active, inactive, irregular)
    HistoricalTransaction:
      properties:
        transaction_id:
          type: string
          maxLength: 32
          title: Transaction Id
        date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Date
          examples:
            - '2025-05-04'
        amount:
          anyOf:
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: 'null'
          title: Amount
          examples:
            - '200.31'
        description:
          type: string
          title: Description
          examples:
            - NETFLIX.COM
      additionalProperties: true
      type: object
      required:
        - transaction_id
        - description
      title: HistoricalTransaction
    Status16:
      type: string
      enum:
        - active
        - inactive
        - irregular
      title: Status16
      description: Status of the recurring income (active, inactive, irregular)
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: PAT
      description: >-
        Bearer authentication with a personal access token (prefix `pat_`).
        Generate tokens in the Truv web app under Settings → API keys.

````