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.

Tink Risk and Reports API is one of 9 APIs that Tink publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Risk, Income Check, Expense Check, Risk Insights, and Risk Categorisation. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

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'