Hex.pm Docs License: MIT

A production-ready Elixir client for the Tink open banking API.

Tink provides comprehensive access to Tink's full product suite — account aggregation, transaction data, financial insights, account and income verification — with built-in retry logic, optional caching, and optional rate limiting.

Features

  • Full coverage of the Tink REST API
  • OAuth 2.0 authentication (client credentials + authorization code)
  • Automatic retry with exponential backoff and jitter
  • Optional response caching via Cachex
  • Optional rate limiting via Hammer 7.x
  • Webhook signature verification (constant-time HMAC)
  • Telemetry events for all HTTP requests, cache, and rate limit operations
  • Strict TLS in production; zero runtime dependencies on Mix

Installation

# mix.exs
def deps do
  [
    {:tink, "~> 0.1"},

    # Optional — enable caching
    {:cachex, "~> 4.1"},

    # Optional — enable rate limiting
    {:hammer, "~> 7.2"}
  ]
end

Quick Start

# 1. Configure credentials (config/runtime.exs)
config :tink,
  client_id:     System.fetch_env!("TINK_CLIENT_ID"),
  client_secret: System.fetch_env!("TINK_CLIENT_SECRET")

# 2. Build a client
{:ok, client} = Tink.Client.new(
  client_id:     "your_client_id",
  client_secret: "your_client_secret"
)

# 3. Authenticate
{:ok, token} = Tink.Auth.client_credentials(client,
  scope: "accounts:read,transactions:read"
)
client = Tink.Client.with_token(client, token)

# 4. Call the API
{:ok, accounts} = Tink.Accounts.list(client)

Products Covered

ModuleDescription
Tink.AccountsBank account data and balances
Tink.TransactionsFull transaction history
Tink.TransactionsOneTimeAccessSingle-fetch transaction consent
Tink.TransactionsContinuousAccessOngoing transaction sync
Tink.AccountCheckBank account ownership verification
Tink.BalanceCheckReal-time balance verification
Tink.BusinessAccountCheckBusiness account ownership verification
Tink.IncomeCheckIncome stream analysis and PDF reports
Tink.ExpenseCheckSpending categorisation and analysis
Tink.RiskInsightsRisk scoring and anomaly signals
Tink.RiskCategorisationTransaction-level risk categories
Tink.InvestmentsInvestment accounts and holdings
Tink.LoansLoan and mortgage accounts
Tink.BudgetsUser budget creation and tracking
Tink.CashFlowCash flow analysis
Tink.FinancialCalendarUpcoming financial events
Tink.StatisticsAggregated financial statistics
Tink.CategoriesTink transaction categories
Tink.UsersTink user management
Tink.ProvidersBank provider metadata
Tink.LinkTink Link URL generation
Tink.ConnectivityProvider connectivity checks

Configuration

config :tink,
  client_id:            System.get_env("TINK_CLIENT_ID"),
  client_secret:        System.get_env("TINK_CLIENT_SECRET"),
  base_url:             "https://api.tink.com",  # default
  timeout:              30_000,                   # ms
  max_retries:          3,
  enable_rate_limiting: true,
  cache: [
    enabled:  true,
    max_size: 1_000
  ]

See the Configuration guide for the full reference.

Documentation

Full documentation is available on HexDocs.

License

MIT — see LICENSE.