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
Tink Link Products
- 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
})
endAccount 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"
})
endPayment 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"
})
endMarkets
GB- United KingdomSE- SwedenDE- GermanyFR- FranceES- SpainIT- ItalyNL- NetherlandsBE- BelgiumDK- DenmarkNO- NorwayFI- FinlandAT- AustriaPT- Portugal
Locales
en_US- English (US)en_GB- English (UK)sv_SE- Swedishda_DK- Danishnb_NO- Norwegianfi_FI- Finnishde_DE- Germanfr_FR- Frenches_ES- Spanishit_IT- Italiannl_NL- Dutchpt_PT- Portuguese
Links
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
Builds a Tink Link URL for account verification.
Parameters
authorization_code- Authorization code from grantopts- 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"
})
@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
Builds a Tink Link URL for payment initiation.
Parameters
payment_request_id- Payment request IDopts- 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"
})
Builds a Tink Link URL for transactions (continuous access).
Convenience function for the most common use case.
Parameters
authorization_code- Authorization code from grantopts- 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"
})