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'