One-off Direct Debit#
One-off Direct Debits allow you to collect fixed or variable amounts from your customers on a flexible schedule. The customer sets up a Direct Debit mandate once; after that, you can collect payments of any amount at any time without requiring re-authorisation.
Best for: Usage-based billing, professional services with variable charges, invoice payments.
One-off Direct Debit vs Pay By Bank#
| One-off via Direct Debit | Pay By Bank | |
|---|---|---|
| Mandate required | Yes | No |
| Customer authorisation | Once (mandate setup) | Per payment |
| Confirmation speed | 2-5 business days | Minutes |
| Re-use for future payments | Yes, collect again without re-authorisation | No, new authorisation each time |
| Protection | Scheme-specific | None |
| Customer experience | One-time setup, then hands-off | The bank app redirects each time |
For time-sensitive payments, consider Pay By Bank, which confirms within seconds. If you need immediate confirmation for the first payment but also want a mandate for future charges, use Instant Payment + DD Setup instead.
How it works#
- The customer sets up a mandate via your chosen integration
- You create a payment against the mandate via the API
- GoCardless collects the payment (typically 2-5 business days)
- You receive a webhook confirming the payment status
- Funds are included in your next payout
Key differences from recurring payments: You control when and how much to charge. There's no automatic schedule; you create each payment individually via the API.
Step-by-step guide#
Create a billing request#
Response:
Confirm the mandate#
After creating the Billing Request, direct the customer to authorise the mandate. How you do this depends on your integration type:
- Hosted Pages — Create a Billing Request Flow and redirect the customer to the authorisation_url. See Hosted Pages.
- Custom API — Collect customer details and bank account via Billing Request actions, then confirm. See Custom Payment Pages.
Handle the outcome#
Listen for webhooks to confirm the payment status:
| Event | Meaning |
|---|---|
| billing_request_fulfilled | Customer authorised the mandate |
| mandates_created | Mandate created and ready to use |
| mandates_active | Mandate active |
Collect a payment#
Retrieve the mandate ID from the fulfilled billing request:
Response:
Then collect whenever you need to:
What's next?#
Instant bank payments that confirm within seconds — no mandate required.
Set up automatic subscription schedules against an active mandate.
Collect an instant first payment while setting up a mandate for future charges.
Understand the webhooks fired during the mandate and payment lifecycle.