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.
Decisioning-grade reports built on aggregated bank data — Income Check, Expense Check, Risk Insights, and Risk Categorisation — for affordability, underwriting, and lending decisions.
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'