openapi: 3.1.0
info:
title: Tink Data API
description: >
Tink Data API exposes aggregated PSD2 and non-PSD2 account information
for consented users across 6,000+ European banks: accounts, balances,
transactions, identities, account parties, investment holdings, and loan
accounts. Used for one-time access reports as well as continuous-access
products like Money Manager and Risk Insights.
version: '2.0'
contact:
name: Tink Developer Support
url: https://docs.tink.com/resources/transactions
servers:
- url: https://api.tink.com
description: Tink EU Production
- url: https://api.us.tink.com
description: Tink US Production
security:
- BearerAuth: []
tags:
- name: Accounts
description: User bank accounts and balances.
- name: Transactions
description: User bank transactions.
- name: Identities
description: Account holder identities returned by the bank.
- name: Investments
description: Investment accounts and holdings.
- name: Loans
description: Loan accounts.
- name: BalanceRefresh
description: On-demand balance refresh.
paths:
/data/v2/accounts:
get:
summary: Tink List Accounts
description: List all bank accounts the user has consented to share with the calling application.
operationId: listAccounts
tags:
- Accounts
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageToken'
responses:
'200':
description: Accounts returned.
content:
application/json:
schema:
$ref: '#/components/schemas/AccountList'
'401':
$ref: '#/components/responses/Unauthorized'
/data/v2/accounts/{account_id}/balances:
get:
summary: Tink Get Account Balances
description: Retrieve balance snapshots for a single account, including booked and available balance.
operationId: getAccountBalances
tags:
- Accounts
parameters:
- $ref: '#/components/parameters/AccountIdParam'
responses:
'200':
description: Balances returned.
content:
application/json:
schema:
$ref: '#/components/schemas/BalanceList'
/data/v2/accounts/{account_id}/parties:
get:
summary: Tink List Account Parties
description: List the legal parties (account holders) attached to an account, as returned by the bank.
operationId: listAccountParties
tags:
- Accounts
parameters:
- $ref: '#/components/parameters/AccountIdParam'
responses:
'200':
description: Account parties returned.
content:
application/json:
schema:
$ref: '#/components/schemas/PartyList'
/data/v2/transactions:
get:
summary: Tink List Transactions
description: >
List bank transactions across all consented accounts with optional
filters by date range, account, status, and amount.
operationId: listTransactions
tags:
- Transactions
parameters:
- in: query
name: accountIdIn
schema:
type: string
- in: query
name: bookedDateGte
schema:
type: string
format: date
- in: query
name: bookedDateLte
schema:
type: string
format: date
- in: query
name: statusIn
schema:
type: string
enum: [BOOKED, PENDING, UNDEFINED]
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageToken'
responses:
'200':
description: Transactions returned.
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionList'
/data/v2/identities:
get:
summary: Tink List Identities
description: List identity records returned by banks for the consented user.
operationId: listIdentities
tags:
- Identities
responses:
'200':
description: Identities returned.
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityList'
/data/v2/investment-accounts:
get:
summary: Tink List Investment Accounts
description: List investment accounts the user has consented to share.
operationId: listInvestmentAccounts
tags:
- Investments
responses:
'200':
description: Investment accounts returned.
content:
application/json:
schema:
$ref: '#/components/schemas/InvestmentAccountList'
/data/v2/investment-accounts/{id}/holdings:
get:
summary: Tink List Investment Holdings
description: List individual holdings within an investment account, including instrument, quantity, and market value.
operationId: listInvestmentHoldings
tags:
- Investments
parameters:
- in: path
name: id
required: true
schema:
type: string
responses:
'200':
description: Holdings returned.
content:
application/json:
schema:
$ref: '#/components/schemas/HoldingList'
/data/v2/loan-accounts:
get:
summary: Tink List Loan Accounts
description: List loan accounts the user has consented to share, including outstanding balance, interest rate, and term.
operationId: listLoanAccounts
tags:
- Loans
responses:
'200':
description: Loan accounts returned.
content:
application/json:
schema:
$ref: '#/components/schemas/LoanAccountList'
/data/v2/loan-accounts/{accountId}:
get:
summary: Tink Get A Loan Account
description: Retrieve detailed information for a single loan account.
operationId: getLoanAccount
tags:
- Loans
parameters:
- in: path
name: accountId
required: true
schema:
type: string
responses:
'200':
description: Loan account returned.
content:
application/json:
schema:
$ref: '#/components/schemas/LoanAccount'
/api/v1/balance-refresh:
post:
summary: Tink Create A Balance Refresh
description: >
Trigger an on-demand refresh of account balances for a connected
credentials object. Used by Balance Check to fetch fresh data outside
of the bank's standard polling cadence.
operationId: createBalanceRefresh
tags:
- BalanceRefresh
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BalanceRefreshRequest'
responses:
'202':
description: Balance refresh accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/BalanceRefreshStatus'
/api/v1/balance-refresh/{balanceRefreshId}:
get:
summary: Tink Get A Balance Refresh Status
description: Retrieve the status of a previously triggered balance refresh.
operationId: getBalanceRefresh
tags:
- BalanceRefresh
parameters:
- in: path
name: balanceRefreshId
required: true
schema:
type: string
responses:
'200':
description: Balance refresh status returned.
content:
application/json:
schema:
$ref: '#/components/schemas/BalanceRefreshStatus'
/api/v1/credentials/list:
get:
summary: Tink List User Credentials
description: List bank credential objects (consents) attached to the current user.
operationId: listCredentials
tags:
- Accounts
responses:
'200':
description: Credentials returned.
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialsList'
/api/v1/credentials/{credentialsId}:
delete:
summary: Tink Delete User Credentials
description: Delete a credentials object and revoke the underlying bank consent.
operationId: deleteCredentials
tags:
- Accounts
parameters:
- in: path
name: credentialsId
required: true
schema:
type: string
responses:
'204':
description: Credentials deleted.
/api/v1/provider-consents:
get:
summary: Tink List Provider Consents
description: List all active bank-provider consents for the current user.
operationId: listProviderConsents
tags:
- Accounts
responses:
'200':
description: Provider consents returned.
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderConsentList'
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
parameters:
PageSize:
in: query
name: pageSize
schema:
type: integer
format: int32
maximum: 200
PageToken:
in: query
name: pageToken
schema:
type: string
AccountIdParam:
in: path
name: account_id
required: true
schema:
type: string
schemas:
AccountList:
type: object
properties:
accounts:
type: array
items:
$ref: '#/components/schemas/Account'
nextPageToken:
type: string
Account:
type: object
properties:
id:
type: string
name:
type: string
type:
type: string
enum: [CHECKING, SAVINGS, CREDIT_CARD, LOAN, INVESTMENT, OTHER]
balances:
$ref: '#/components/schemas/Balances'
identifiers:
type: object
properties:
iban:
type: object
properties:
iban:
type: string
bban:
type: string
sortCode:
type: object
properties:
code:
type: string
accountNumber:
type: string
currencyCode:
type: string
customerSegment:
type: string
enum: [PERSONAL, BUSINESS, UNDEFINED]
financialInstitutionId:
type: string
dates:
type: object
properties:
lastRefreshed:
type: string
format: date-time
Balances:
type: object
properties:
booked:
$ref: '#/components/schemas/Money'
available:
$ref: '#/components/schemas/Money'
BalanceList:
type: object
properties:
balances:
type: array
items:
$ref: '#/components/schemas/Money'
Money:
type: object
properties:
amount:
type: object
properties:
value:
type: object
properties:
scale:
type: string
unscaledValue:
type: string
currencyCode:
type: string
TransactionList:
type: object
properties:
transactions:
type: array
items:
$ref: '#/components/schemas/Transaction'
nextPageToken:
type: string
Transaction:
type: object
properties:
id:
type: string
accountId:
type: string
amount:
$ref: '#/components/schemas/Money'
descriptions:
type: object
properties:
original:
type: string
display:
type: string
dates:
type: object
properties:
booked:
type: string
format: date
value:
type: string
format: date
status:
type: string
enum: [BOOKED, PENDING, UNDEFINED]
categories:
type: object
properties:
pfm:
type: object
properties:
id:
type: string
name:
type: string
merchantInformation:
type: object
properties:
merchantCategoryCode:
type: string
merchantName:
type: string
types:
type: object
properties:
type:
type: string
financialInstitutionTypeCode:
type: string
PartyList:
type: object
properties:
parties:
type: array
items:
$ref: '#/components/schemas/Party'
Party:
type: object
properties:
name:
type: string
role:
type: string
enum: [HOLDER, AUTHORIZED_USER, UNDEFINED]
partyType:
type: string
enum: [PERSON, ORGANIZATION]
IdentityList:
type: object
properties:
identities:
type: array
items:
$ref: '#/components/schemas/Identity'
Identity:
type: object
properties:
id:
type: string
name:
type: object
properties:
fullName:
type: string
firstName:
type: string
lastName:
type: string
dateOfBirth:
type: string
format: date
emailAddresses:
type: array
items:
type: object
properties:
value:
type: string
addresses:
type: array
items:
type: object
properties:
fullAddress:
type: string
country:
type: string
city:
type: string
postalCode:
type: string
InvestmentAccountList:
type: object
properties:
investmentAccounts:
type: array
items:
$ref: '#/components/schemas/InvestmentAccount'
InvestmentAccount:
type: object
properties:
id:
type: string
name:
type: string
marketValue:
$ref: '#/components/schemas/Money'
cashBalance:
$ref: '#/components/schemas/Money'
HoldingList:
type: object
properties:
holdings:
type: array
items:
$ref: '#/components/schemas/Holding'
Holding:
type: object
properties:
id:
type: string
instrument:
type: object
properties:
isin:
type: string
name:
type: string
type:
type: string
enum: [STOCK, FUND, BOND, ETF, OTHER, UNDEFINED]
quantity:
type: string
marketValue:
$ref: '#/components/schemas/Money'
purchasePrice:
$ref: '#/components/schemas/Money'
LoanAccountList:
type: object
properties:
loanAccounts:
type: array
items:
$ref: '#/components/schemas/LoanAccount'
LoanAccount:
type: object
properties:
id:
type: string
accountName:
type: string
loanType:
type: string
enum: [MORTGAGE, BLANCO, MEMBERSHIP, AUTO, STUDENT, OTHER, UNDEFINED]
outstandingBalance:
$ref: '#/components/schemas/Money'
interestRate:
type: number
format: double
terms:
type: object
properties:
endDate:
type: string
format: date
durationMonths:
type: integer
format: int32
BalanceRefreshRequest:
type: object
properties:
credentialsId:
type: string
BalanceRefreshStatus:
type: object
properties:
balanceRefreshId:
type: string
status:
type: string
enum: [QUEUED, IN_PROGRESS, FINISHED, FAILED]
statusMessage:
type: string
CredentialsList:
type: object
properties:
credentials:
type: array
items:
type: object
properties:
id:
type: string
providerName:
type: string
status:
type: string
enum: [CREATED, AUTHENTICATING, UPDATING, UPDATED, AUTHENTICATION_ERROR, TEMPORARY_ERROR, DELETED]
statusUpdated:
type: integer
format: int64
userId:
type: string
sessionExpiryDate:
type: integer
format: int64
ProviderConsentList:
type: object
properties:
providerConsents:
type: array
items:
type: object
properties:
credentialsId:
type: string
providerName:
type: string
status:
type: string
statusUpdated:
type: integer
format: int64
sessionExpiryDate:
type: integer
format: int64
accountIds:
type: array
items:
type: string
Error:
type: object
properties:
errorMessage:
type: string
errorCode:
type: string
responses:
Unauthorized:
description: Missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'