Bacs Direct Debit Instructions (DDIs) — create, retrieve, and cancel Direct Debit mandates on real and virtual accounts.
Direct Debit Instructions represent authorisation from your customer to collect payments from their account. They can be:
- Created via the paper/electronic DDI flow
- Migrated from another Service User
Service User Numbers (SUNs)
Each DDI is associated with a Service User Number which identifies you as the originator to Bacs. Your SUN must be configured in the ClearBank Portal.
Examples
# Create a DDI on a real account
{:ok, ddi} = ClearBank.Payments.BacsDirectDebit.create(client, "acct-uuid", %{
service_user_number: "123456",
reference: "CUST-001",
payer_name: "Alice Smith",
payer_sort_code: "040004",
payer_account_number: "12345678"
})
Summary
Functions
Cancels a Direct Debit Instruction on a real account.
Cancels a DDI on a virtual account.
Creates a Direct Debit Instruction on a real account.
Creates a Direct Debit Instruction on a virtual account.
Returns a specific Direct Debit Instruction on a real account.
Returns all Direct Debit Instructions for a real account.
Returns all DDIs for a virtual account.
Functions
@spec cancel(ClearBank.Client.t(), String.t(), String.t()) :: ClearBank.HTTP.result()
Cancels a Direct Debit Instruction on a real account.
@spec cancel_virtual(ClearBank.Client.t(), String.t(), String.t(), String.t()) :: ClearBank.HTTP.result()
Cancels a DDI on a virtual account.
@spec create(ClearBank.Client.t(), String.t(), map()) :: ClearBank.HTTP.result()
Creates a Direct Debit Instruction on a real account.
Required params
:service_user_number- your Bacs SUN:reference- DDI reference (shown on customer's bank statement):payer_name- account holder name of the payer:payer_sort_code- payer's sort code:payer_account_number- payer's account number
Optional params
:originator_name- override originator name:account_type-"Personal"|"Business"(default:"Personal")
@spec create_virtual(ClearBank.Client.t(), String.t(), String.t(), map()) :: ClearBank.HTTP.result()
Creates a Direct Debit Instruction on a virtual account.
@spec get(ClearBank.Client.t(), String.t(), String.t()) :: ClearBank.HTTP.result()
Returns a specific Direct Debit Instruction on a real account.
@spec list(ClearBank.Client.t(), String.t(), keyword()) :: ClearBank.HTTP.result()
Returns all Direct Debit Instructions for a real account.
Options
:page_number,:page_size
@spec list_virtual(ClearBank.Client.t(), String.t(), String.t(), keyword()) :: ClearBank.HTTP.result()
Returns all DDIs for a virtual account.