Tink.Loans provides read access to a user's loan accounts, including mortgages, personal loans, and credit facilities connected through Tink.

Listing Loan Accounts

{:ok, loans} = Tink.Loans.list_accounts(client)

Enum.each(loans, fn loan ->
  IO.puts("""
  #{loan.name}
  Type:       #{loan.type}
  Balance:    #{loan.balance} #{loan.currency}
  Rate:       #{loan.interest_rate}%
  Monthly:    #{loan.monthly_payment}
  """)
end)

Fetching a Specific Loan

{:ok, loan} = Tink.Loans.get_account(client, loan_id)

IO.inspect(loan.original_amount)    # Principal at origination
IO.inspect(loan.outstanding_amount) # Remaining balance
IO.inspect(loan.maturity_date)      # When the loan ends

Loan Account Fields

FieldDescription
idTink account identifier
nameLoan display name
type"MORTGAGE", "PERSONAL_LOAN", "STUDENT_LOAN", "AUTO"
balanceCurrent outstanding balance as Decimal
currencyISO 4217 currency code
original_amountOriginal loan principal as Decimal
interest_rateAnnual interest rate as Decimal
monthly_paymentScheduled monthly payment as Decimal
maturity_dateLoan end date
provider_nameLender name
start_dateLoan origination date

Debt Summary

{:ok, loans} = Tink.Loans.list_accounts(client)

total_debt = loans
  |> Enum.map(& &1.balance)
  |> Enum.reduce(Decimal.new(0), &Decimal.add/2)

monthly_obligations = loans
  |> Enum.map(& &1.monthly_payment)
  |> Enum.reduce(Decimal.new(0), &Decimal.add/2)

IO.puts("Total debt: #{total_debt}")
IO.puts("Monthly obligations: #{monthly_obligations}")