Build better, smarter, faster with our API

Focus on building amazing Direct Debit integrations, not building from scratch

View our developer docs

We speak your language

Client libraries for PHP, Java,
Ruby and Python

Simple to develop, test & iterate

End-to-end testing in our free sandbox environment


API-first technology

Clean, modern RESTful API built from the ground up

Set up your integration in three simple steps

Add customers

Use our out-of-the-box payment pages or build your own white labelled pages for a consistent brand experience.

Collect payments

Create and manage one off payments and subscriptions with simple API requests.

Get real-time reports and alerts

Automatic event notifications through webhooks means no need to download and parse reports.

Code example for creating a subscription:

$subscription = $client->subscriptions()->create([
      "params" => [
        "amount" => 1500, // 15 GBP in pence
        "currency" => "GBP",
        "interval_unit" => "monthly",
        "day_of_month" => "5",
        "links" => [
          "mandate" => "MD0000XH9A3T4C"
                    // Mandate ID from the last section
        "metadata" => [
          "subscription_number" => "ABC1234"
      "headers" => [
        "Idempotency-Key" => "random_subscription_specific_string"
subscription = client.subscriptions.create(
            "amount" : 1500, # 15 GBP in pence    
            "currency" : "GBP",
            "interval_unit" : "monthly",
            "day_of_month" : "5",
            "links": {
                "mandate": "MD0000XH9A3T4C"
                         # Mandate ID from the last section
            "metadata": {
                "subscription_number": "ABC1234"
        }, headers={
            'Idempotency-Key': "random_subscription_specific_string"
subscription = client.subscriptions.create(
      params: {
        amount: 1500, # 15 GBP in pence
        currency: 'GBP',
        interval_unit: 'monthly',
        day_of_month: '5',
        links: {
          mandate: 'MD0000XH9A3T4C'
                  # Mandate ID from the last section
        metadata: {
          subscription_number: 'ABC1234'
      headers: {
        'Idempotency-Key': 'random_subscription_specific_string'
public class CreateSubscription {
        public static void main(String[] args) {
            GoCardlessClient client = GoCardlessClient.create(
            Subscription subscription = client.subscriptions().create()
                .withAmount(1500) // 15 GBP in Pence  
                                 // Mandate ID from the last section 
                .withMetadata("subscription_number", "ABC123")

            // Keep hold of this subscription ID - we'll use it in a minute.
            // It should look a bit like "SB00003GKMHFFY"
            System.out.printf("ID: %s%n", subscription.getId());
Get a sandbox account

Want to learn more about getting started? Read our reference docs

Direct Debit for the Digital Age


Connects seamlessly to
your business

An API designed to integrate Direct Debit into your business quickly and easily.


Future proof
payments technology

A continuously improving, cutting edge online Direct Debit solution.


One integration for the UK, Eurozone and Sweden

We handle the complexities of Direct Debit across geographies.

Quick to build with a robust set of tools and resources

Copy and paste code samples

We've worked hard to make building with our API as painless as possible.

Clear, accessible documentation

Full reference documentation including step by step guides.

Expert developer support

Our team of API specialists are available to answer queries as you're building.

"The API is great from a technical perspective and using GoCardless means we can avoid the legacy banks payment networks."

Bill Packman, COO

Ready to start testing today?

Get a sandbox account