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

# Retrieve recurring transactions (inflows and outflows) for a user

> Returns recurring transaction patterns detected across the user's linked bank accounts, split into recurring outflows (subscriptions, bills, and other recurring expenses) and recurring inflows (salary, benefits, and other recurring income sources).



## OpenAPI

````yaml GET /v1/users/{user_id}/transactions/recurring/
openapi: 3.0.1
info:
  title: Truv API
  description: Truv API Documentation
  termsOfService: https://www.truv.com/legal/terms-of-use
  contact:
    email: support@truv.com
  version: v1
servers:
  - url: https://prod.truv.com
security:
  - ClientID: []
    AccessKey: []
tags:
  - name: Users
  - name: Bridge Token
  - name: Companies and Data Providers
  - name: Key Management
  - name: Account Links
  - name: Data Refresh
  - name: Customization Templates
  - name: Webhooks
  - name: Orders
  - name: Tasks
  - name: VOIE Reports
  - name: VOA Reports
  - name: Income Insights Reports
  - name: DDS Reports
  - name: Employment
  - name: Identity
  - name: Shifts
  - name: Pay Statements
  - name: Tax Documents
  - name: Parsed Documents
  - name: Reports
  - name: Uploaded Documents
  - name: Bank Accounts
  - name: Bank Statements
  - name: Deposit Switch Reports
  - name: Insurance Reports
  - name: Income Report
  - name: Scoring Attributes
  - name: Accounts
  - name: Transactions
  - name: Recurring Transactions
  - name: Document Collections
paths:
  /v1/users/{user_id}/transactions/recurring/:
    parameters:
      - name: user_id
        in: path
        required: true
        schema:
          type: string
        example: 24d7e80942ce4ad58a93f70ce4115f5c
    get:
      tags:
        - Recurring Transactions
      summary: Retrieve recurring transactions (inflows and outflows) for a user
      description: >-
        Returns recurring transaction patterns detected across the user's linked
        bank accounts, split into recurring outflows (subscriptions, bills, and
        other recurring expenses) and recurring inflows (salary, benefits, and
        other recurring income sources).
      operationId: applicant-recurring-transactions
      parameters:
        - name: status
          in: query
          description: >-
            Filter by recurring source status. Defaults to `active`. Use `all`
            to return sources in any state.
          required: false
          schema:
            type: string
            enum:
              - active
              - inactive
              - irregular
              - all
            default: active
        - name: link_id
          in: query
          description: Filter to a specific link ID. Defaults to all of the user's links.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringTransactionsResponse'
        '401':
          description: HTTP 401 Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: HTTP 403 Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: HTTP 404 Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
components:
  schemas:
    RecurringTransactionsResponse:
      type: object
      title: Recurring Transactions Response
      description: >-
        Recurring transactions for a user, split into recurring outflows
        (expenses) and recurring inflows (income sources).
      properties:
        recurring_transactions:
          $ref: '#/components/schemas/RecurringTransactionsData'
    Error401:
      description: ''
      type: object
      properties:
        error:
          description: ''
          type: object
          properties:
            code:
              description: ''
              type: string
              example: authentication_failed
            message:
              description: ''
              type: string
              example: No such token
    Error403:
      description: ''
      type: object
      properties:
        error:
          description: ''
          type: object
          properties:
            code:
              description: ''
              type: string
              example: not_authenticated
            message:
              description: ''
              type: string
              example: Authentication credentials were not provided.
    Error404:
      description: ''
      type: object
      properties:
        detail:
          description: ''
          type: string
          example: Not Found.
    RecurringTransactionsData:
      type: object
      properties:
        outflows:
          type: array
          description: List of recurring outflow (expense) sources.
          items:
            $ref: '#/components/schemas/RecurringOutflow'
        inflows:
          type: array
          description: List of recurring inflow (income) sources.
          items:
            $ref: '#/components/schemas/RecurringInflow'
    RecurringOutflow:
      type: object
      description: Recurring outflow (expense) source detected from bank transactions.
      properties:
        source_id:
          description: Unique identifier for the recurring outflow source.
          type: string
          readOnly: true
          example: 68a7e80942ce4ad58a93f70ce411549a
        source_name:
          description: Merchant or company name.
          type: string
          readOnly: true
          example: Netflix
        account_id:
          description: Account ID where transactions occur.
          type: string
          readOnly: true
          example: 68a7e80942ce4ad58a93f70ce411549a
        categories:
          description: Transaction categories.
          type: array
          items:
            type: string
          readOnly: true
          example:
            - Entertainment
            - Subscriptions
        description:
          description: Original transaction description.
          type: string
          readOnly: true
          example: NETFLIX.COM
        merchant_category_code:
          description: Merchant category code (MCC).
          type: string
          readOnly: true
          example: '5968'
        frequency:
          description: >-
            Payment frequency code: `M` Monthly, `SM` Semimonthly, `W` Weekly,
            `BW` Biweekly, `A` Annually, `SA` Semiannually, `C` Commission. Null
            when the recurring source has irregular cadence.
          type: string
          enum:
            - M
            - SM
            - W
            - BW
            - A
            - SA
            - C
          nullable: true
          readOnly: true
          example: M
        status:
          description: Status of the recurring source.
          type: string
          enum:
            - active
            - inactive
            - irregular
          readOnly: true
          example: active
        average_amount:
          description: Average transaction amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '15.99'
        median_amount:
          description: Median transaction amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '15.99'
        last_amount:
          description: Most recent transaction amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '15.99'
        first_detected:
          description: Date when the recurring pattern was first detected.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-01-15'
        last_transaction_date:
          description: Date of the most recent transaction.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-11-15'
        next_expected_date:
          description: Expected date of the next transaction.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-12-15'
        logo_url:
          description: Company logo URL from company mapping.
          type: string
          format: uri
          nullable: true
          readOnly: true
          example: https://example.com/logos/company.png
        historical_transactions:
          description: List of historical transactions for this recurring source.
          type: array
          items:
            $ref: '#/components/schemas/HistoricalTransaction'
    RecurringInflow:
      type: object
      description: Recurring inflow (income) source detected from bank transactions.
      properties:
        source_id:
          description: Unique identifier for the recurring inflow source.
          type: string
          readOnly: true
          example: 68a7e80942ce4ad58a93f70ce411549a
        source_name:
          description: Company or employer name.
          type: string
          readOnly: true
          example: Acme Corp
        account_id:
          description: Account ID where income is deposited.
          type: string
          readOnly: true
          example: 68a7e80942ce4ad58a93f70ce411549a
        description:
          description: Income description.
          type: string
          readOnly: true
          example: Salary
        frequency:
          description: >-
            Payment frequency code: `M` Monthly, `SM` Semimonthly, `W` Weekly,
            `BW` Biweekly, `A` Annually, `SA` Semiannually, `C` Commission. Null
            when the income source has irregular cadence.
          type: string
          enum:
            - M
            - SM
            - W
            - BW
            - A
            - SA
            - C
          nullable: true
          readOnly: true
          example: BW
        average_amount:
          description: Average payment amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '3500.00'
        median_amount:
          description: Median payment amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '3500.00'
        last_amount:
          description: Most recent payment amount.
          type: string
          format: decimal
          nullable: true
          readOnly: true
          example: '3500.00'
        status:
          description: Status of the recurring income.
          type: string
          enum:
            - active
            - inactive
            - irregular
          readOnly: true
          example: active
        first_detected:
          description: Date when the income source was first detected.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-01-01'
        last_transaction_date:
          description: Date of the most recent payment.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-11-15'
        next_expected_date:
          description: Expected date of the next payment.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2024-11-29'
        logo_url:
          description: Company logo URL from company mapping.
          type: string
          format: uri
          nullable: true
          readOnly: true
          example: https://example.com/logos/company.png
        historical_transactions:
          description: List of historical transactions for this income source.
          type: array
          items:
            $ref: '#/components/schemas/HistoricalTransaction'
        income_type:
          description: Category of recurring income.
          type: string
          enum:
            - PAYCHECK
            - RETIREMENT
            - RENTAL
            - UNEMPLOYMENT
            - GOVERNMENT_EMPLOYMENT
            - GOVERNMENT_BENEFITS
            - PRIVATE_BENEFITS
            - EWA_PAYROLL
            - GIG_ECONOMY
            - P2P_TRANSFER
            - TAX_CREDITS
            - CASH_OR_CHECK
            - INTEREST
            - INVESTMENT
            - OTHER
          nullable: true
          readOnly: true
          example: PAYCHECK
    HistoricalTransaction:
      type: object
      description: Historical transaction associated with a recurring source.
      properties:
        transaction_id:
          description: Unique identifier of the transaction (32-character hex, no dashes).
          type: string
          maxLength: 32
          readOnly: true
          example: 24d7e80942ce4ad58a93f70ce4115f5c
        date:
          description: The date that the transaction occurred.
          type: string
          format: date
          nullable: true
          readOnly: true
          example: '2025-05-04'
        amount:
          description: The monetary amount of the transaction.
          type: string
          format: decimal
          readOnly: true
          example: '200.31'
        description:
          description: Transaction original description.
          type: string
          readOnly: true
          example: NETFLIX.COM
  securitySchemes:
    ClientID:
      type: apiKey
      description: Client ID
      name: X-Access-Client-Id
      in: header
    AccessKey:
      type: apiKey
      description: Client Access Key
      name: X-Access-Secret
      in: header

````