Tink Risk and Reports API

Decisioning-grade reports built on aggregated bank data — Income Check, Expense Check, Risk Insights, and Risk Categorisation — for affordability, underwriting, and lending decisions.

OpenAPI Specification

tink-risk-reports-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Tink Risk and Reports API
  description: >
    Tink's risk-decisioning reports built on aggregated bank data. Income
    Check confirms a user's verified income and stability. Expense Check
    summarises essential and discretionary expenses. Risk Insights produces
    a risk-decisioning report covering creditworthiness signals. Risk
    Categorisation classifies transactions for affordability and lending
    decisions.
  version: '2.0'
  contact:
    name: Tink Developer Support
    url: https://docs.tink.com/resources/risk-insights
servers:
  - url: https://api.tink.com
    description: Tink EU Production
  - url: https://api.us.tink.com
    description: Tink US Production
security:
  - BearerAuth: []
tags:
  - name: IncomeChecks
    description: Income verification reports.
  - name: ExpenseChecks
    description: Expense verification reports.
  - name: RiskInsights
    description: Risk decisioning reports.
  - name: RiskCategorisation
    description: Risk categorisation reports.
paths:
  /v2/income-checks/{report_id}:
    get:
      summary: Tink Get An Income Check Report
      description: >
        Retrieve a completed Income Check report as JSON. Includes verified
        income streams, employer information, salary cadence, and trend
        analysis over the lookback window.
      operationId: getIncomeCheckReport
      tags:
        - IncomeChecks
      parameters:
        - $ref: '#/components/parameters/ReportIdParam'
      responses:
        '200':
          description: Income Check report returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeCheckReport'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/income-checks/{report_id}:generate-pdf:
    get:
      summary: Tink Generate An Income Check PDF
      description: Retrieve the Income Check report rendered as a PDF for compliance archives.
      operationId: generateIncomeCheckPdf
      tags:
        - IncomeChecks
      parameters:
        - $ref: '#/components/parameters/ReportIdParam'
      responses:
        '200':
          description: PDF returned.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  /risk/v1/expense-checks/{report_id}:
    get:
      summary: Tink Get An Expense Check Report
      description: Retrieve a completed Expense Check report summarising essential and discretionary spending.
      operationId: getExpenseCheckReport
      tags:
        - ExpenseChecks
      parameters:
        - $ref: '#/components/parameters/ReportIdParam'
      responses:
        '200':
          description: Expense Check report returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseCheckReport'
  /risk/v1/risk-insights/{report_id}:
    get:
      summary: Tink Get A Risk Insights Report
      description: Retrieve a Risk Insights report combining income, expenses, balance volatility, and risk signals.
      operationId: getRiskInsightsReport
      tags:
        - RiskInsights
      parameters:
        - $ref: '#/components/parameters/ReportIdParam'
      responses:
        '200':
          description: Risk Insights report returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskInsightsReport'
  /risk/v2/risk-categorisation/reports/{report_id}:
    get:
      summary: Tink Get A Risk Categorisation Report
      description: Retrieve a Risk Categorisation report classifying transactions for lending and affordability decisions.
      operationId: getRiskCategorisationReport
      tags:
        - RiskCategorisation
      parameters:
        - $ref: '#/components/parameters/ReportIdParam'
      responses:
        '200':
          description: Risk Categorisation report returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskCategorisationReport'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
  parameters:
    ReportIdParam:
      in: path
      name: report_id
      required: true
      schema:
        type: string
  schemas:
    IncomeCheckReport:
      type: object
      properties:
        id:
          type: string
        market:
          type: string
        generatedAt:
          type: string
          format: date-time
        verifiedIncomes:
          type: array
          items:
            $ref: '#/components/schemas/VerifiedIncome'
        summary:
          type: object
          properties:
            totalNetIncome:
              $ref: '#/components/schemas/Money'
            averageMonthlyIncome:
              $ref: '#/components/schemas/Money'
            consecutiveMonthsWithIncome:
              type: integer
              format: int32
    VerifiedIncome:
      type: object
      properties:
        source:
          type: string
        payer:
          type: string
        category:
          type: string
          enum: [SALARY, BENEFIT, PENSION, INTEREST, DIVIDEND, OTHER]
        cadence:
          type: string
          enum: [WEEKLY, BIWEEKLY, MONTHLY, QUARTERLY, YEARLY, IRREGULAR]
        averageAmount:
          $ref: '#/components/schemas/Money'
        firstSeen:
          type: string
          format: date
        lastSeen:
          type: string
          format: date
    ExpenseCheckReport:
      type: object
      properties:
        id:
          type: string
        generatedAt:
          type: string
          format: date-time
        summary:
          type: object
          properties:
            essentialExpenses:
              $ref: '#/components/schemas/Money'
            discretionaryExpenses:
              $ref: '#/components/schemas/Money'
            totalExpenses:
              $ref: '#/components/schemas/Money'
        categories:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              amount:
                $ref: '#/components/schemas/Money'
              transactionCount:
                type: integer
                format: int32
    RiskInsightsReport:
      type: object
      properties:
        id:
          type: string
        generatedAt:
          type: string
          format: date-time
        signals:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              severity:
                type: string
                enum: [INFO, LOW, MEDIUM, HIGH]
              description:
                type: string
        incomeSummary:
          $ref: '#/components/schemas/IncomeCheckReport'
        expenseSummary:
          $ref: '#/components/schemas/ExpenseCheckReport'
        balanceVolatility:
          type: object
          properties:
            averageBalance:
              $ref: '#/components/schemas/Money'
            minimumBalance:
              $ref: '#/components/schemas/Money'
            overdraftDays:
              type: integer
              format: int32
    RiskCategorisationReport:
      type: object
      properties:
        id:
          type: string
        generatedAt:
          type: string
          format: date-time
        categories:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
              riskTier:
                type: string
                enum: [LOW, MEDIUM, HIGH]
              amount:
                $ref: '#/components/schemas/Money'
              transactionCount:
                type: integer
                format: int32
    Money:
      type: object
      properties:
        amount:
          type: string
        currencyCode:
          type: string
    Error:
      type: object
      properties:
        errorMessage:
          type: string
        errorCode:
          type: string
  responses:
    NotFound:
      description: Report not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'