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'