At Wild Wing Studios, we have to process a variety of different payment options. The majority of our revenue stream is sourced from recurring payments but we still need the ability to process one time payments for change requests or custom code projects. Given that our business model is different from our competitors, or payment and invoicing requirements are different than most companies. The core requirements for our billing system was as follows:
- Payments need to be processed online.
- Recurring payments need to be automated – we do not have the man power or sanity to chase down customers who forgot to pay a monthly invoice.
- Initial invoices need to be sent to clients rather than having a “self-serve” cart option – this was a UX decision which precipitated from AB testing,-we found that the majority of clients preferred to have invoices sent to them. This was due to a variety of psychological and pragmatic reasons, and warrants a post on its own.
- Low time impact on the Wild Wing Team – we want to focus on development rather than wasting time with complex billing systems.
While these requirements may sound trivial, we spent many weeks searching for a payment provider which provided an out of the box solution which met these four needs. We even had five student contractors work for ten weeks researching a solution, and they (independently) came to the same conclusion as our team – there isn’t an affordable option available that meets these criteria!
The Stopgap Solution…
With the AB testing, I developed a very quick and simple cart solution for clients to go to a page on our website, select the options they wanted, and then checkout with their credit card. It worked well, but we found that we filled out the cart ourselves more often than the clients. The process flow would be as follows:
- Select base website and add-ons for a specific client.
- Click the Checkout button
- Copy the long (300+ chars – see example below) URL from the checkout page and paste it into an email
- Contact Brennen if any custom items are needed for the invoice and have him manually modify the cart to add the custom item
- Send to the client
This was ugly. Very ugly. Errors were often made, invoices were incorrect, and the “system” broke regularly. It was made even worse when we deployed a new website which didn’t have the cart page – we were forced to revert back to a legacy codebase whenever we needed a invoice. It was time to take this issue into our hands and develop a solution…
The Elegant Solution…
I put together a two part system to generate invoices in a quick and efficient manner. This system enabled us to quickly put complex invoices together and shorten them into a pretty URL which could be sent over any modern communication medium (we haven’t tested HAM radio yet). We were able to select core products, and then add an “infinite” amount of custom line items (both recurring and non-recurring). This system is incredibly fast and flexible – we have made only two revisions on it since its initial deployment, and it has only failed when an IE6 machine was unable to negotiate the TLS connection (Sorry, but not sorry). The process now is as follows:
- Click the options needed and add any custom items
- Click the Generate Shortcode button
- Copy the shortcode and send it to a client
Let’s See Some Results!
An invoice generated by the previous tool:
And here is the same invoice from the new tool:
Yep. That’s it. 422 chars shortened into 47. Not bad!
Overall, we rely upon this tool every day, and is one that we will use into the long term future.