in Announcements

Announcing our beta for Swedish Autogiro

You can now collect Direct Debit payments from Swedish customers using GoCardless.

We blogged back in March about building a global Direct Debit network, and this is just another step on that journey. Swedish Autogiro is now incorporated into our simple API for Direct Debit.

To join the Swedish Direct Debit beta, get in touch, and for more information on Autogiro, check out our Bg Autogiro guide.

Join our Swedish Direct Debit beta
Find out more
in Announcements

GoCardless powers payments for Cobot’s coworking spaces in Germany

Cobot, a German cloud-based management application for coworking spaces, and GoCardless have partnered up to make taking membership fees from coworkers a simple task. With GoCardless' new and more advanced integration, coworking spaces in Germany and the rest of the Eurozone can now collect payments for memberships and room bookings through SEPA Direct Debit. Having originated in the UK, the plans are to eventually extend this partnership globally.

What is Cobot?

Cobot was created in 2010 by Alexander Lang and Thilo Utke. The two former software consultants started Cobot out of necessity to manage their own coworking space co.up. Driven by the interest of other spaces, it quickly grew into a major and stand-alone product for co.up and today coworking spaces with around 30,000 coworkers worldwide. Cobot aims to be the best system for coworking management, taking over all the routine tasks that can be automated, from logging activity in the space to tracking invoices.

How does GoCardless help Cobot’s customers?

With the new integration complete, coworking spaces that use Cobot’s managing software can now seamlessly take payments from their coworkers using direct debit. With a simple 1% transaction fee, capped at 2€, GoCardless provides a competitive payment method for both recurring and one-off payments.

This new payment gateway for Cobot’s users comes with all the advantages of direct debit: coworking spaces can pull funds directly from their coworkers’ bank accounts whenever money is due on an invoice. As a result, coworking spaces get paid on time, and the experience for customers is improved.

Cobot’s billing software and GoCardless’ direct debit product make the process of collecting money a completely automated solution. This means coworking spaces need no longer worry about recurring monthly instalments, late or failed payments.

Finally, coworking spaces that use direct debit to collect their fees experience a lower rate of churn. This is in contrast to credit card payments for example, where card expiration is common. Of course, basic bank account details do not expire, therefore making direct debit a powerful payment method to increase retention rates.

How do you get involved?

If you are a coworking space that wants to take payments cheaply and easily from within Cobot using GoCardless, please do get in touch with either of us today!

Your coworking space already uses Cobot? That’s great! To start taking payments using GoCardless, simply add GoCardless as a new payment method in your Cobot account as shown below:

Also, have a look at Cobot’s blog post about the partnership here.

Want to use Cobot for your coworking space?
Sign up to Cobot here

In search of performance - how we shaved 200ms off every POST request

While doing some work on our Pro dashboard, we noticed that search requests were taking around 300ms. We've got some people in the team who have used Elasticsearch for much larger datasets, and they were surprised by how slow the requests were, so we decided to take a look.

Today, we'll show how that investigation led to a 200ms improvement on all internal POST requests.

What we did

We started by taking a typical search request from the app and measuring how long it took. We tried this with both Ruby's Net::HTTP and from the command line using curl. The latter was visibly faster. Timing the requests showed that the request from Ruby took around 250ms, whereas the one from curl took only 50ms.

We were confident that whatever was going on was isolated to Ruby1, but we wanted to dig deeper, so we moved over to our staging environment. At that point, the problem disappeared entirely.

For a while, we were stumped. We run the same versions of Ruby and Elasticsearch in staging and production. It didn't make any sense! We took a step back, and looked over our stack, piece by piece. There was something in the middle which we hadn't thought about - HAProxy.

We quickly discovered that, due to an ongoing Ubuntu upgrade2, we were using different versions of HAProxy in staging (1.4.24) and production (1.4.18). Something in those 6 patch revisions was responsible, so we turned our eyes to the commit logs. There were a few candidates, but one patch stood out in particular.

We did a custom build of HAProxy 1.4.18, with just that patch added, and saw request times drop by around 200ms. Job done.

Under the hood

Since this issue was going to be fixed by the Ubuntu upgrades we were doing, we decided it wasn't worth shipping a custom HAProxy package. Before calling it a day, we decided to take a look at the whole request cycle using tcpdump, to really understand what was going on.

What we found was that Ruby's Net::HTTP splits POST requests across two TCP packets - one for the headers, and another for the body. curl, by contrast, combines the two if they'll fit in a single packet. To make things worse, Net::HTTP doesn't set TCP_NODELAY on the TCP socket it opens, so it waits for acknowledgement of the first packet before sending the second. This behaviour is a consequence of Nagle's algorithm.

Moving to the other end of the connection, HAProxy has to choose how to acknowledge those two packets. In version 1.4.18 (the one we were using), it opted to use TCP delayed acknowledgement.

Delayed acknowledgement interacts badly with Nagle's algorithm, and causes the request to pause until the server reaches its delayed acknowledgement timeout3.

HAProxy 1.4.19 adds a special case for incomplete HTTP POST requests - if it receives a packet which only contains the first part of the request, it enables TCP_QUICKACK on the socket, and immediately acknowledges that packet.

More than just search

Having understood what was happening, we realised the fix had a far wider reach than our search endpoint. We run all of our services behind HAProxy, and it's no secret that we write a lot of Ruby. This combination meant that almost every POST request made inside our infrastructure incurred a 200ms delay. We took some measurements before and after rolling out the new version of HAProxy:

POST /endpointA
average (ms/req) before HAProxy upgrade: 271.13
average (ms/req) after HAProxy upgrade: 19.08

POST /endpointB
average (ms/req) before HAProxy upgrade: 323.78
average (ms/req) after HAProxy upgrade: 66.47

Quite the improvement!


Even though the fix was as simple as upgrading a package, the knowledge we gained along the way is invaluable in the long-term.

It would have been easy to say search was fast enough and move on, but by diving into the problem we got to know more about how our applications run in production.

Doing this work really reinforced our belief that it's worth taking time to understand your stack.

  1. We used the same query in each request, and waited for the response time to settle before measuring. We also tried Python's requests library, and it performed similarly to curl

  2. At the time, we were trialling Ubuntu 14.04 in our staging environment, before rolling it out to production. 

  3. On Linux the timeout is around 200ms. The exact value is determined by the kernel, and depends on the round-trip-time of the connection

Sound like something you'd enjoy?
We're hiring
in Announcements

Optimising SEPA Direct Debit

Here at GoCardless we're always looking for ways to optimise the speed of the Direct Debit process. We recently made our GBP payouts arrive a day sooner than before, but our Euro payouts have been lagging behind, taking 2-3 working days to arrive. Now we're able to bring that down to just one.

At the same time we're making SEPA COR1 available. This is a faster version of SEPA Direct Debit, taking just 2 working days to collect payments. It's currently supported for collecting from most German, Austrian, and Spanish banks. If you don't specify the scheme when setting up a mandate, we'll automatically use COR1 whenever possible.

All new merchants will be able to take advantage of both of these optimisations straight away, and we'll be enabling them for existing merchants over the next few weeks. Get in touch if you're keen to be in the first batch!

Wondering whether GoCardless could be for you?
Find out more
in Business, Hiring

The Account Executive Interview Process

One of the most important things as we look to scale from processing $1 billion payments a year to $10 billion is growing our sales team. Our vision is to create a global payments network, making payments simpler on the internet no matter what country you're from. We’ve previously written about how we train our salespeople. This blog post is aimed at guiding you through the account executive interview process. We want you to succeed, so we’re going to outline what we look for and how the process works.

The process is split into three sections:

  1. Phone screen
  2. First round interview (1.5 hours)
  3. Final round interview (2.5 hours)

We have identified the following characteristics as being most important for successful salespeople here:

  • Smart. Our product is technical. To succeed here you need to be able to learn technical detail so you communicate potentially confusing things in a simple way.
  • Driven to learn and improve. We believe how good you’ll be a year from now is more dependant on attitude than current ability. How driven you are and how motivated you are to improve are the two most important drivers of success.
  • Coachability. Giving and taking feedback is one of the most important aspects of our company culture. The quicker you are able to act on feedback, the faster you learn.
  • Likeable. People don’t like to buy from people they don’t like. It is essential that anyone we employ is friendly.
  • Communication skills. The ability to explain complex ideas simply is absolutely crucial for our salespeople.

The interview process is designed to test these skills.

1. Phone screen

This interview lasts 10-15 minutes and you will speak to our hiring co-ordinator. We are assessing a few basic things here:

  • Have you done your research on the company?
  • Are you passionate about startups?
  • Do you want to work in sales?

To do well in this interview:

  • Be in a quiet place. Good signal helps too!
  • Be prepared. Make sure you’ve done research on the company. You should have more specific reasons on why you want to join than just ‘interested in startups or fintech.’
  • Be enthusiastic. We want to know you’re excited about joining us.
  • Be positive and engaging. We want to hire people who will make a contribution to our culture, who are respectful, polite, collaborative and energetic.

2. First round interview

This consists of two parts:

  • The background interview. Here we’ll be trying to assess the skills we value in salespeople as well as find out a bit more about your motivations for joining us and why you want to work in sales.
  • The roleplay. For this you will be doing a sales meeting with a mock client. You don’t know anything about them in advance.

In order to succeed in culture fit:

  • Think of examples of where you have demonstrated the skills we care about.
  • Be structured. Good communication is really important in sales. Read about the pyramid principle and apply it in your answers.
  • Be honest. People join a startup for a variety of reasons; tell us what you’re really looking for and what you want to do in your career. It doesn't matter if you’ve not got a history in sales (I didn’t do sales before GC!), but you need to have a good reason to work in sales with us.
  • Do your research. Why is it you want to work for us? Try and be specific as possible. How did you find out about us? What about us excites you?

In order to succeed in the role play:

  • Read SPIN Selling. This forms a great foundation on how we do sales here. If you don’t have time for the whole book, at a minimum read a summary. Prepare some questions for the role play using what you learn.
  • Know our product and industry. Sign up for a GoCardless account and learn how to use it. At a minimum you should read our Recurring Payments Guide and our Direct Debit Guide.
  • Listen attentively. Good questioning and good listening are two of the most important skills in sales. Listen carefully to what we say and use it to ask intelligent questions.
  • Don’t pitch. You should think of this as a conversation not a ‘pitch.’ The key is to really understand the client’s needs. Only then can you align our solution to what the client wants.

3. Final round interview

This consists of three parts:

  • The roleplay. The is the same format as the previous round. After the first role play we will give you feedback. The second round is the same scenario: we want to see if you’ve responded to the feedback.
  • The exec interview. In the final round you get the opportunity to meet our CEO and another member of our management team. The same advice as the background interview applies here.
  • Working with sales. This is a quick challenge. There is no need to prepare anything for this. We’ll give you something you might be faced with on a typical day here.

Good luck and we look forward to meeting you! If you’re unsure about applying, please just do. We'd love to hear from you!

Want to help us hit $10bn? We're hiring!
See job listing