Tink.Link (Tink v0.1.1)

Copy Markdown View Source

Tink Link URL builder for user authentication flows.

This module provides utilities for building Tink Link URLs for various use cases including:

  • Account aggregation
  • Payment initiation
  • Account verification
  • Income verification
  • Transaction access

Features

  • Multiple Products: Support for all Tink products
  • Customizable: Market, locale, styling options
  • Test Mode: Testing without real credentials
  • Redirect Handling: Callback URL management
  • Transactions: Account and transaction data
  • Account Check: Account ownership verification
  • Income Check: Income verification
  • Payment Initiation: Make payments
  • Expense Check: Expense analysis
  • Risk Insights: Risk assessment

Use Cases

Transaction Access

@spec create_transactions_link(String.t(), String.t()) :: String.t()

def create_transactions_link(authorization_code, user_email) do
  Tink.Link.build_url(:transactions, %{
    client_id: get_client_id(),
    authorization_code: authorization_code,
    redirect_uri: "https://myapp.com/callback",
    market: "GB",
    locale: "en_US",
    test: false
  })
end

Account Verification

@spec create_verification_link(String.t()) :: String.t()

def create_verification_link(authorization_code) do
  Tink.Link.build_url(:account_check, %{
    client_id: get_client_id(),
    authorization_code: authorization_code,
    redirect_uri: "https://myapp.com/verify/callback",
    market: "GB",
    locale: "en_US"
  })
end

Payment Initiation

@spec create_payment_link(String.t()) :: String.t()

def create_payment_link(payment_request_id) do
  Tink.Link.build_url(:payment, %{
    client_id: get_client_id(),
    payment_request_id: payment_request_id,
    redirect_uri: "https://myapp.com/payment/callback",
    market: "SE",
    locale: "sv_SE"
  })
end

Markets

  • GB - United Kingdom
  • SE - Sweden
  • DE - Germany
  • FR - France
  • ES - Spain
  • IT - Italy
  • NL - Netherlands
  • BE - Belgium
  • DK - Denmark
  • NO - Norway
  • FI - Finland
  • AT - Austria
  • PT - Portugal

Locales

  • en_US - English (US)
  • en_GB - English (UK)
  • sv_SE - Swedish
  • da_DK - Danish
  • nb_NO - Norwegian
  • fi_FI - Finnish
  • de_DE - German
  • fr_FR - French
  • es_ES - Spanish
  • it_IT - Italian
  • nl_NL - Dutch
  • pt_PT - Portuguese

Summary

Functions

Builds a Tink Link URL for account verification.

Builds a Tink Link URL for the specified product.

Builds a Tink Link URL for payment initiation.

Builds a Tink Link URL for transactions (continuous access).

Functions

account_check_url(authorization_code, opts)

@spec account_check_url(String.t(), map()) :: String.t()

Builds a Tink Link URL for account verification.

Parameters

  • authorization_code - Authorization code from grant
  • opts - Link options (same as build_url/2)

Returns

  • Tink Link URL string

Examples

url = Tink.Link.account_check_url("auth_code_456", %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/verify",
  market: "GB",
  locale: "en_US"
})

build_url(product, params)

@spec build_url(
  :account_check
  | :expense_check
  | :income_check
  | :payment
  | :risk_insights
  | :transactions,
  map()
) :: String.t()

Builds a Tink Link URL for the specified product.

Parameters

  • product - Product type (atom):
    • :transactions - Transactions/account aggregation
    • :account_check - Account verification
    • :income_check - Income verification
    • :payment - Payment initiation
    • :expense_check - Expense check
    • :risk_insights - Risk insights
  • params - Link parameters:
    • :client_id - Your client ID (required)
    • :redirect_uri - Callback URL (required)
    • :market - Market code (required)
    • :locale - Locale code (required)
    • :authorization_code - Authorization code (for continuous access)
    • :payment_request_id - Payment request ID (for payments)
    • :test - Test mode (boolean, default: false)
    • :input_provider - Pre-select provider
    • :input_username - Pre-fill username (test mode only)

Returns

  • Tink Link URL string

Examples

# Transactions (continuous access)
url = Tink.Link.build_url(:transactions, %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/callback",
  authorization_code: "auth_code_123",
  market: "GB",
  locale: "en_US"
})
#=> "https://link.tink.com/1.0/transactions/connect-accounts?client_id=..."

# Account Check
url = Tink.Link.build_url(:account_check, %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/verify",
  authorization_code: "auth_code_456",
  market: "GB",
  locale: "en_US"
})

# Payment
url = Tink.Link.build_url(:payment, %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/payment/done",
  payment_request_id: "payment_789",
  market: "SE",
  locale: "sv_SE"
})

# Test mode
url = Tink.Link.build_url(:transactions, %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/test",
  authorization_code: "test_auth",
  market: "GB",
  locale: "en_US",
  test: true,
  input_provider: "testbank-gb",
  input_username: "testuser"
})

Product-specific Requirements

Transactions

  • Requires: authorization_code (for continuous access) OR just client_id (for one-time)

Account Check

  • Requires: authorization_code

Income Check

  • Requires: authorization_code

Payment

  • Requires: payment_request_id

Expense Check

  • Requires: authorization_code

Risk Insights

  • Requires: authorization_code

payment_url(payment_request_id, opts)

@spec payment_url(String.t(), map()) :: String.t()

Builds a Tink Link URL for payment initiation.

Parameters

  • payment_request_id - Payment request ID
  • opts - Link options (same as build_url/2)

Returns

  • Tink Link URL string

Examples

url = Tink.Link.payment_url("payment_789", %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/payment/done",
  market: "SE",
  locale: "sv_SE"
})

transactions_url(authorization_code, opts)

@spec transactions_url(String.t(), map()) :: String.t()

Builds a Tink Link URL for transactions (continuous access).

Convenience function for the most common use case.

Parameters

  • authorization_code - Authorization code from grant
  • opts - Link options:
    • :client_id - Your client ID (required)
    • :redirect_uri - Callback URL (required)
    • :market - Market code (required)
    • :locale - Locale code (required)
    • :test - Test mode (default: false)

Returns

  • Tink Link URL string

Examples

url = Tink.Link.transactions_url("auth_code_123", %{
  client_id: "your_client_id",
  redirect_uri: "https://yourapp.com/callback",
  market: "GB",
  locale: "en_US"
})