Tink

Hex.pmLicense

A complete, production-grade Elixir client for the Tink Open Banking API. Covers data aggregation (accounts, transactions, identities, investments, loans), enrichment (categories, recurring, merchants, on-demand enrichment, sustainability), payments and VRP, risk insights, income/expense checks, savings goals and other personal-finance modules, connectivity/consents, webhooks, and more.

Built on Req/Finch, with typed errors, telemetry, client-side caching (Cachex) and rate limiting (Hammer), and full test coverage against a mocked HTTP adapter.

Installation

Add tink to your list of dependencies in mix.exs:

def deps do
[
{:tink, "~> 1.0"}
]
end

Documentation is published on HexDocs.

Configuration

# config/config.exs
config :tink,
client_id: System.get_env("TINK_CLIENT_ID"),
client_secret: System.get_env("TINK_CLIENT_SECRET"),
webhook_secret: System.get_env("TINK_WEBHOOK_SECRET")

See config/config.exs in this repo for the full set of options (base URLs, timeouts, retries, cache, and rate-limit settings) and their defaults.

Quick start

# 1. Get an app-level access token (client_credentials grant)
{:ok, client} = Tink.Auth.client_credentials(scope: "accounts:read,transactions:read")
# 2. Use it to call the API
{:ok, accounts} = Tink.Accounts.list(client)
# 3. For end-user data, create a permanent user and an authorization grant,
# then exchange the resulting code for a user-scoped token
{:ok, %{"code" => code}} =
Tink.Auth.create_authorization(client, user_id: user_id, scope: "accounts:read")
{:ok, user_client} = Tink.Auth.user_client(code: code)
{:ok, transactions} = Tink.Transactions.list(user_client)

See the guides under guides/advanced/ for authentication flows (including mTLS), caching, error handling, and rate limiting.

Status

This package targets Tink's documented API surface as of mid-2026. If you notice an endpoint, scope, or behavior that's out of date, please open an issue — Tink's docs are a single-page app that's not always crawlable, so some details were cross-checked via cached search results rather than a live fetch.

License

Apache-2.0. See LICENSE.