TruelayerClient (truelayer_client v1.0.0)

Copy Markdown View Source

Production-grade Elixir client for the TrueLayer open banking API.

Quick start

{:ok, client} = TruelayerClient.new(
  environment:              :sandbox,
  client_id:                System.fetch_env!("TRUELAYER_CLIENT_ID"),
  client_secret:            System.fetch_env!("TRUELAYER_CLIENT_SECRET"),
  redirect_uri:             "https://yourapp.com/callback",
  signing_key_pem:          File.read!("keys/signing_private.pem"),
  signing_key_id:           System.fetch_env!("TRUELAYER_KEY_ID"),
  webhook_signing_secret:   System.fetch_env!("TRUELAYER_WEBHOOK_SECRET")
)

API modules

ModuleResponsibility
TruelayerClient.AuthOAuth2 tokens, auth links
TruelayerClient.PaymentsPay-ins, auth flow, refunds, payment links
TruelayerClient.PayoutsMerchant-account payouts
TruelayerClient.MerchantMerchant accounts, sweeping
TruelayerClient.MandatesVRP / sweeping mandates
TruelayerClient.DataAccounts, balances, transactions, cards
TruelayerClient.VerificationAccount holder name verification
TruelayerClient.SignupPlusEmbedded user-data collection
TruelayerClient.TrackingAuthorization-flow event tracking
TruelayerClient.WebhooksHMAC verification + typed dispatch

Options

OptionTypeDefaultNotes
:client_idString.t()required
:client_secretString.t()required
:environment:sandbox | :live:sandbox
:redirect_uriString.t()nilRequired for auth-code flows
:signing_key_pembinary()nilRequired for Payments/Payouts/Mandates
:signing_key_idString.t()nilKey ID from TrueLayer Console
:webhook_signing_secretbinary()nilHMAC-SHA256 webhook secret
:webhook_replay_tolerance_secinteger()300
:request_timeout_msinteger()30_000
:max_retriesinteger()3
:base_retry_delay_msinteger()300
:token_storemodule()MemoryStoreImplement TokenStore behaviour
:telemetry_prefix[atom()][:truelayer_client]

Summary

Types

t()

A fully initialised TruelayerClient instance.

Functions

Returns the configured environment (:sandbox or :live).

Create a new TruelayerClient instance.

Create a new TruelayerClient instance, raising on failure.

Returns true when the client is configured for the Sandbox environment.

Types

t()

@type t() :: %TruelayerClient{
  config: TruelayerClient.Config.t(),
  http: Req.Request.t(),
  idem_table: TruelayerClient.Idempotency.table(),
  signer: TruelayerClient.Signing.signer() | nil,
  store_id: reference(),
  webhook_registry: TruelayerClient.Webhooks.registry()
}

A fully initialised TruelayerClient instance.

Pass this struct to every domain module function, e.g.:

TruelayerClient.Payments.get_payment(client, payment_id)

Functions

environment(truelayer_client)

@spec environment(t()) :: TruelayerClient.Config.environment()

Returns the configured environment (:sandbox or :live).

new(opts)

@spec new(keyword()) :: {:ok, t()} | {:error, TruelayerClient.Error.t()}

Create a new TruelayerClient instance.

Returns {:ok, %TruelayerClient{}} or {:error, %TruelayerClient.Error{}}.

Example

{:ok, client} = TruelayerClient.new(
  environment: :sandbox,
  client_id: "your-client-id",
  client_secret: "your-secret",
  signing_key_pem: File.read!("signing_private.pem"),
  signing_key_id: "your-key-id"
)

new!(opts)

@spec new!(keyword()) :: t()

Create a new TruelayerClient instance, raising on failure.

Example

client = TruelayerClient.new!(environment: :sandbox, client_id: "id", client_secret: "s")

sandbox?(truelayer_client)

@spec sandbox?(t()) :: boolean()

Returns true when the client is configured for the Sandbox environment.