One-time payment initiation (PIS).
Requires payment:write and payment:read scopes.
Typical server-side flow
# 1. Create a payment request
{:ok, client} = Tink.Auth.client_credentials(scope: "payment:write payment:read")
{:ok, %{"id" => payment_id}} = Tink.Payments.create(client, %{
"destinationUri" => "sort-code://12-34-56/87654321",
"amount" => %{
"value" => %{"unscaledValue" => 100, "scale" => 0},
"currencyCode" => "GBP"
},
"market" => "GB",
"recipientName" => "John Doe",
"remittanceInformation" => %{"type" => "UNSTRUCTURED", "value" => "Invoice #123"}
})
# 2. Poll to completion
{:ok, completed} = Tink.Payments.poll_until_terminal(client, payment_id)
Summary
Functions
Cancel a payment. Requires payment:write.
Create a payment request. Requires payment:write.
Create a settlement account payment request. Requires payment:write.
Get a payment request by ID. Requires payment:read.
Get payment conditions for a provider. Requires payment:read.
Get transfer details for a payment request. Requires payment:read.
Poll a payment request until it reaches a terminal status.
Functions
@spec cancel(Tink.Client.t(), String.t()) :: {:ok, map()} | {:error, Tink.Error.t()}
Cancel a payment. Requires payment:write.
@spec create(Tink.Client.t(), map()) :: {:ok, map()} | {:error, Tink.Error.t()}
Create a payment request. Requires payment:write.
@spec create_settlement_payment(Tink.Client.t(), map()) :: {:ok, map()} | {:error, Tink.Error.t()}
Create a settlement account payment request. Requires payment:write.
@spec get(Tink.Client.t(), String.t()) :: {:ok, map()} | {:error, Tink.Error.t()}
Get a payment request by ID. Requires payment:read.
@spec get_conditions(Tink.Client.t(), String.t()) :: {:ok, map()} | {:error, Tink.Error.t()}
Get payment conditions for a provider. Requires payment:read.
@spec get_transfers(Tink.Client.t(), String.t()) :: {:ok, map()} | {:error, Tink.Error.t()}
Get transfer details for a payment request. Requires payment:read.
@spec poll_until_terminal(Tink.Client.t(), String.t(), keyword()) :: {:ok, map()} | {:error, Tink.Error.t() | :timeout}
Poll a payment request until it reaches a terminal status.
Terminal statuses: SUCCESSFUL, FAILED, CANCELLED.
Options
:timeout_ms— default 60_000:interval_ms— default 2_000