GoCardless
Follow the below steps to connect to the GoCardless API.
Formie uses GoCardless Billing Request Flows for hosted Direct Debit authorisation. After the customer authorises their bank details, Formie creates a one-off payment or recurring subscription against the mandate and tracks status through webhooks and the status page.
Direct Debit payments are asynchronous. Customers are redirected back to your site while GoCardless collects the payment over the next few business days. One-off submissions finalise when GoCardless confirms the payment. Subscription submissions finalise once the GoCardless subscription is active.
Setup
Step 1. Create the Integration
- Navigate to Formie → Settings → Payments.
- Click the New Integration button.
- Select GoCardless as the Integration Provider.
Step 2. Connect to the GoCardless API
- Go to the GoCardless Dashboard (or use the sandbox environment for testing).
- Navigate to Developers → Developers.
- Click the Create Access Token button.
- Copy the Access Token from GoCardless and paste it in the Access Token field in Formie.
Step 3. Configure Webhooks
- In the GoCardless dashboard, create a webhook endpoint pointing to your Formie webhook URL:
https://your-site.test/formie/payment-webhooks/process-webhook?handle=yourGoCardlessHandle- Copy the webhook signing secret into Formie’s Webhook Secret Key field.
- Enable payment, billing request, and subscription events in GoCardless.
Formie listens for payment status updates, billing request fulfilment, and subscription lifecycle events. Do not rely on the customer redirect alone to confirm payment status.
Step 4. Test Connection
- Save this integration.
- Click on the Refresh button in the right-hand sidebar.
Step 5. Field Settings
- Go to the form you want to enable this integration on.
- Add a Payment field to your form.
- Select GoCardless for the Payment Provider.
- Choose Once-off or Subscription for the Payment Type.
- Configure the payment Currency and Amount.
- For subscriptions, configure the billing frequency and subscription description.
- Optionally map Billing Details so Formie can prefill customer details on the GoCardless hosted page.
How It Works
Once-off payments
- The customer submits your form.
- Formie creates a GoCardless Billing Request and Billing Request Flow.
- The customer is redirected to GoCardless to authorise Direct Debit.
- When they return, Formie creates the payment against the mandate and shows the status page.
- GoCardless webhooks update the payment status as collection progresses.
Subscriptions
- The customer submits your form.
- Formie creates a GoCardless Billing Request and Billing Request Flow for mandate authorisation.
- The customer is redirected to GoCardless to authorise Direct Debit.
- When they return, Formie creates a GoCardless Subscription against the mandate.
- GoCardless collects recurring payments automatically. Formie tracks subscription status and upcoming payment dates via webhooks.
Customers can cancel subscriptions using Formie’s subscription cancel URL when included in notifications.
Limitations
- Direct Debit only — Instant Bank Pay and combined instant + Direct Debit flows are not supported yet.
- Scheme selection is inferred from the payment currency (for example GBP → BACS, EUR → SEPA).
- Subscription intervals support weekly, monthly, and yearly billing only.
- Setup fees, payment limits, and trials are not supported for GoCardless subscriptions.
Troubleshooting
Pending billing request but no payment amount in GoCardless — Formie creates the payment or subscription after the customer completes the hosted authorisation flow. Check that webhooks are configured and that the customer returned to the Formie status page.
Payment stays pending — This is normal for Direct Debit until GoCardless confirms collection. Use webhooks or wait for the status page polling to refresh.
Subscription active but submission still incomplete — Ensure webhooks are configured and that the status page can refresh the subscription state. The submission finalises once the GoCardless subscription is active.
Sandbox testing — Enable Use Sandbox on the integration and use sandbox API credentials.