An Azure hosted booking & payments system using GoCardless and Google APIs

Recently I developed a booking and payments system for my mountaineering club (

The basic functionality is as follows:-

  • As a meet organiser, I should be able to create events (or “meets”) which have a name, date, description and pricing options (e.g. One night £30, Two nights £50)
  • As a member (or prospective member), I should be able to signup for an event (or “meet”)
  • … and make payments via Direct Debit (only entering my payment details the first time)
  • As a meet organiser, I should be able to see who has signed up, manage numbers and contact the attendees
  • As the treasurer, I should be able to reconcile payments

Enter GoCardless!

Go Cardless has an excellent API to allow payments to be taken directly from UK and EU bank accounts. It also has very low transactions fees (1%) and provides robust protections both from the security model and the Direct Debit Guarantee.

Once a user is registered with an active direct debit we can take further payments either on-demand or on a scheduled basis (similar to credit card “continuous authority”). This is achieved by passing a token back from the system to GoCardless (we do not need to store bank details!). Customers are always notified by email before any payments are taken and given minimum 3 days notice.

Enter Social logins (Google / Facebook)

We need to be able to identify members so that we can pre-populate their details and associate them with their GoCardless payment token.

Rather than requiring people to remember yet another username and password, I used social logins (via Azure Authentication). There are 2 options to either use Facebook or Google login. Everyone in the club will at least have one of these and therefore can log in to the system instantly without registration.

Enter Google Sheets!

The club committee uses Google Sheets extensively for many tasks including managing the membership list, who is attending events, surveys etc. They have many advantages:-

  • Sheets can be easily shared amongst both users who should be able to contribute (write to the spreadsheet) and users who should only be able to view it
  • Multiple people can edit them at the same time without causing any issues
  • They are version controlled, so we can see a history of changes

Rather than developing a new admin system for the club (and rebuilding all the access controls, sharing and version control that sheets give us out the box), I had the idea that we could simply integrate with the existing Google sheets workflow. Many members of the committee are non-technical, so the simpler the better.

After some consideration, I came up with the following design

Design of the system




Implementation details

I shall be creating future blog posts to go into the details of each of the components above.

Watch this space!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.