Guides
Setting up mandates
Direct Debit Mandates Verified Mandates PayTo Agreements and Payments Build a client to create mandates offline Supporting mandates set up outside of your product Importing Mandates Blocking mandatesRecurring payments
Taking Subscription payments Taking Instalment payments Variable Recurring PaymentsCombining one-off and recurring payments
Take a first Instant Payment with mandate
 set upSend an outbound payment
Adding a new recipient Initiate an outbound payment Approve an outbound payment Cancel an outbound paymentSetting up mandates / collecting payments
Billing Request with Actions: Setting up a Direct Debit mandate Collecting a Direct Debit payment Billing Request with Actions: Taking an Instant Bank Payment Billing Request with Actions Dual Flow: Taking an Instant Bank Payment and setting up a Direct Debit mandateBilling Request with Actions Dual Flow: Taking an Instant Bank Payment and setting up a Direct Debit mandate
Similarly to the previous three guides above, we will also be able to use the Billing Request with Actions in order to request an Instant Bank payment and create a Direct Debit mandate. We'll be able to create both requests at the same time within one flow.
By combining both a payment_request as well as a mandate_request in the API request, we'll be able to omit having to pass the customer's bank account details, as those would be retrieved automatically from the Instant Bank payment.
In order to complete all the actions on the mandate_request we'll need to pass all required customer_billing_details including the payer's billing address.
The customer's email is a mandatory field for Payment Providers using our Embed product!Â
1POST https://api.gocardless.com/billing_requests/create_with_actions HTTP/1.1
2Content-Type: application/json
3{
4 "billing_request_with_actions": {
5 "payment_request": {
6 "description": "Instant Bank Payment",
7 "amount": 123,
8 "currency": "GBP",
9 "metadata": {
10 "internal_payment_id": "ID123"
11 }
12 },
13 "mandate_request": {
14 "currency": "GBP",
15 "scheme": "bacs",
16 "verify": "recommended",
17 "metadata": {
18 "mandate_metadata": "ID456"
19 }
20 },
21 "actions": {
22 "collect_customer_details": {
23 "customer": {
24 "given_name": "Alice",
25 "family_name": "Smith",
26 "email": "alice.smith@example.com",
27 ...
28 },
29 "customer_billing_detail": {
30 "address_line1": "Street 123",
31 "city": "London",
32 ...
33 }
34 },
35 "select_institution": {
36 "institution": "INSTITUTION_ID123",
37 "country_code": "GB"
38 },
39 "bank_authorisation_redirect_uri": "https://pay.gocardless.com/billing/static/thankyou",
40 "create_bank_authorisation": true
41 },
42 "links": {
43 "creditor": "CR123"
44 }
45 }
46}
47
48HTTP/1.1 200 OK
49Content-Type: application/json
50{
51 "billing_request_with_actions": {
52 "billing_requests": {
53 "id": "BRQ123",
54 "created_at": "2025-12-16T14:58:06.643Z",
55 "status": "pending",
56 "mandate_request": {
57 ...
58 "currency": "GBP",
59 ...
60 },
61 "payment_request": {
62 "description": "Penny payment",
63 "currency": "GBP",
64 "amount": 123,
65 "scheme": "faster_payments",
66 ...
67 },
68 ...
69 "links": {
70 "customer": "CU123",
71 ...
72 "creditor": "CR123
73 ...
74 },
75 ...
76 "bank_authorisations": {
77 "id": "BA123",
78 "url": "https://institution.com/...",
79 "qr_code_url": "https://pay-sandbox.gocardless.com/obauth/BA123/qr_code",
80 "created_at": "2025-12-04T13:47:16.645Z",
81 ...
82 "expires_at": "2025-12-04T14:02:16.632Z",
83 ...
84 "links": {
85 ...
86 "institution": "INSTITUTION_ID123"
87 }
88 }
89 }
90}We can see that the Billing Request is still in a pending status. This means that the Direct Debit mandate has not yet been created.
Only if the customer approved the Instant Bank Pay request by authorising the bank authorisation either via their mobile banking app or via desktop, we'll then see that the mandate was created.
The customer will be able to approve this request by being redirected to the url parameter.
In a mobile-to-mobile flow we'd ideally use a call-to-action so that the customer is immediately redirected to this link after they clicked on a button.
In a desktop-to-mobile flow, we could use the
qr_code_urlinstead. This will allow the customer to scan the qr code on your website using their mobile device in order to then authorise the Instant Bank payment request via their banking app.
Listening to the bank_authorisation_authorised webhook allows us to make sure that the customer has approved the payment request.
Listening to the payment_confirmed webhook notifies us that the payment has been successfully collected.
Once the customer had approved the bank authorisation, the status of the Billing Request would then move from pending to fulfilled.
The Direct Debit mandate will be created.
