in Announcements

Deceptively Simple: Our Photo Mission

EyeEm and GoCardless launched a Mission to find photos that showcase the GoCardless philosophy - complex systems made simple.

At GoCardless, we have one goal: To provide a simple way to take recurring payments across multiple markets. We have automated and simplified the complexities of direct debit to expose an interface so simple anyone can use it. Yet it is powerful enough to serve the UK’s largest institutions - and all at very low fees.

Here are our favourite photos from the EyeEm Community, with comments by the EyeEm team:

Congratulations to our winner @giiovi!

This photo shows a real sense of community and teamwork. The swarm of bees are doing complex work to create something that seems so elementary to us - delicious honey. We love this, and like to think of us as a swarm of bees making global payments deceptively simple.

EyeEm: The reason why this image works so well comes down to the use of focus; a potentially busy scene is given clarity by focusing on the main aspect. Being able to see the small bees in flight is really exciting-it isn’t something that’s easily captured, so it gives you a snapshot of a moment which could pass the eye by.

More of our favourites:

Photo by @jsknick

We love this photo because it captures our complex world in a single bubble. We like how the detail and complexity become more intense the deeper you look.

EyeEm: This image shows the technique and experience of the photographer, being able to combine a fast shutter speed and focusing in on a single object makes this really stand out. The colours and composition compliment each other very well.

Photo by @Violetalix

Something so simple in its base design is much more beautiful when you look in more depth—in this case, at the texture, light and colours.

EyeEm: Capturing textures in photography works so well when linked with simplicity. You can make an object look so different by capturing it closer and using light to manipulate its usual form. The light makes this material shimmer, transforming it from something quite plain to an image that is really pleasing to the eye.

Photo by @phoebeh_

This photo has many fans amongst our team at GoCardless. One parachute, a couple of cables and you're flying. So bold yet showcased in a peaceful, serene way.

EyeEm: We love images where you can see someone taking a risk (especially if it’s something we’d be too scared to do) - the blue sky behind creates a perfect backdrop to the main subject, giving the audience a real focus.

Photo by @grellgrau

Perfect lines, logic and symmetry make this photo and design so attractive. This hallway probably took months to design and construct to such a high standard—but you only see the smooth and clean results.

EyeEm: Minimalism can work really well, the design gives an almost futuristic feel thanks to the light from the ceiling. The lines give the viewer an indication of how the eye should travel through the image.

Want to see more of our favourite pictures?
View the EyeEm blog post
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