Skip to content

BECS Direct Debit

Overview

BECS Direct Debit draws funds directly from an Australian bank account. Unlike cards, BECS is a batch rail: payments are submitted for processing and settle T+3, and a payment that appears to be processing can still dishonour several business days later.

What the customer provides

BSB, account number, and account name — plus electronic acceptance of a Direct Debit Request (DDR). The BECS widget collects all of this, including the mandate acceptance evidence, in one flow.

The mandate

Every BECS payment must be authorised by an active direct debit mandate. When a customer completes the BECS widget flow, ElasticPay:

  • captures electronic acceptance of the DDR (timestamp, IP, user agent)
  • stores the mandate and retains the evidence for the BECS-required period
  • returns a payment method token (pm_xxx) linked to that mandate

You don’t manage mandate documents yourself — ElasticPay generates and retains them.

Collecting bank details

Embedded widget (recommended):

import { ElasticPayBecsWidget } from "https://pay.elasticpay.co/v1/widget.js";
const widget = new ElasticPayBecsWidget("becs-widget", {
apiUrl: "https://api.elasticpay.co",
publishableKey: "pk_sandbox_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
clientSecret: "pi_0abc123_secret_xyz987",
onTokenize: (result) => {
console.log("BECS payment method:", result.id);
},
});

Direct API (server-side, where you already hold the details under an existing authority):

Terminal window
curl -X POST https://api.elasticpay.co/api/v1/payment_methods \
-H "Authorization: Bearer sk_sandbox_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "au_becs_debit",
"payment_method_data": {
"bsb_number": "062000",
"account_name": "Jane Citizen",
"account_number": "12345678"
}
}'

Processing and settlement

PropertyValue
ProcessingBatch — submitted on business days
SettlementT+3
DishonoursReported after processing; a payment can fail days after submission
CurrencyAUD

Treat processing as genuinely pending for BECS: don’t release goods or services on submission alone. The payment_intent.succeeded webhook is the authoritative signal, and a dishonour arrives as payment_intent.failed.

Recurring charges

BECS is built for recurring billing: once the mandate is in place, charge the saved pm_xxx on your schedule or via a payment plan — no customer interaction required.

Refunds and failures

  • Refunds — supported via the Refunds API.
  • Dishonours — failed debits (insufficient funds, closed account, cancelled authority) surface as payment_intent.failed with a reason code. Repeated dishonours automatically cancel the mandate.