ClearBank.Payments.BacsDirectDebit (ClearBank v1.0.0)

Copy Markdown View Source

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.

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.

Functions

cancel(client, account_id, mandate_id)

Cancels a Direct Debit Instruction on a real account.

cancel_virtual(client, account_id, virtual_account_id, mandate_id)

@spec cancel_virtual(ClearBank.Client.t(), String.t(), String.t(), String.t()) ::
  ClearBank.HTTP.result()

Cancels a DDI on a virtual account.

create(client, account_id, params)

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")

create_virtual(client, account_id, virtual_account_id, params)

@spec create_virtual(ClearBank.Client.t(), String.t(), String.t(), map()) ::
  ClearBank.HTTP.result()

Creates a Direct Debit Instruction on a virtual account.

get(client, account_id, mandate_id)

Returns a specific Direct Debit Instruction on a real account.

list(client, account_id, opts \\ [])

Returns all Direct Debit Instructions for a real account.

Options

  • :page_number, :page_size

list_virtual(client, account_id, virtual_account_id, opts \\ [])

@spec list_virtual(ClearBank.Client.t(), String.t(), String.t(), keyword()) ::
  ClearBank.HTTP.result()

Returns all DDIs for a virtual account.