Automated ticket invoicing

I consider myself to have pretty high tolerance for monotonous, “mindless” tasks, but after taking on ticket invoicing for 3 consecutive WordCamps (Paris, London, Europe), I must re-evaluate. Some mindless manual tasks are still necessary (folding laundry), but as software engineers, our mission is to make life easier by automating as many such tasks as possible, right?

TL;DR : let’s automate ticket invoicing by adding an option for ticket fields to be included in the email confirmations, along with a couple other default modifications 😀

Current state of affairs

When an attendee purchases a ticket to a WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more., they do not receive an invoice. For many attendees this is not a problem, but for businesses and/or employees looking to declare their expenses or get reimbursed, they need proper, standardized documentation.

An invoice should include at least:

  • The full name and postal address of the issuer (the Foundation).
  • The full name and postal address of the purchaser.
  • The VAT number of the purchaser where applicable/if needed.
  • The word “invoice” and sequential numbering (invoice #001, …).
  • The date of purchase.
  • The date of issue (if different).
  • The name of the product (type of ticket).
  • The single ticket price.
  • Currency used.
  • The number of tickets purchased.
  • The total price of purchase.
  • The amount of VAT included*

What a purchaser does receive is:

  1. An email confirmation sent by the website.
  2. A PayPal receipt.

The email confirmation contains only limited information, and mostly serves to give access to the online ticket in case it needs to be modified. Here are two examples:

wc-us_confirmation wc-london_confirmation

They contain 4 out of the 12 elements of a basic invoice:

  • The name of the product (type of ticket).
  • The single ticket price.
  • The number of tickets purchased.
  • The total price of purchase.

The PayPal receipt is slightly more complete (sorry, French):

paypal-receipt

It also includes:

  • The transaction date.
  • The name and email address of the recipient.
  • The currency of purchase (and exchange rate).
  • A transaction number.

Key components still needed/missing:

  • The full name and postal address of the issuer (the Foundation).
  • The full name and postal address of the purchaser.
  • The VAT number of the purchaser where applicable/if needed.
  • The word “invoice” and sequential numbering (invoice #001, …).

*VAT (Value added tax) is an issue in and of itself. I’d like to set the VAT question aside for the purpose of this post and the question of automating ticket invoicing. As it is, manual invoices do not include VAT, but rather the VAT line in the total reads, 0. I do believe these to be two important, but separate, problems.

Solution #1: build on the email confirmation

As we already have these two supports available, it would seem logical/relatively easy to build on them.

Could we not modify the existing email confirmation template to include by default:

  • The full name and postal address of the WordPress FoundationWordPress Foundation The WordPress Foundation is a charitable organization founded by Matt Mullenweg to further the mission of the WordPress open source project: to democratize publishing through Open Source, GPL software. Find more on wordpressfoundation.org..
  • The word “invoice” (internationalized), followed by sequential numbering based on the post ID (or something along these lines) of the ticket purchased.
  • Add the VAT line to the total, to read 0 (until that separate and local problem/question can be addressed).

Could we imagine the possibility of adding custom fields to the email templates?

include

This would allow us to use custom fields to include optional company and tax information for purchasers. I’ve seen this work in the WooCommerce extension WooCommerce Checkout Field Editor, and although the interface is a bit different, the actions/results are the same.

wc-checkout-field-editor

And ideally, as a next step, and as would be great to see for Sponsors invoices as well (!), the possibility to generate an invoice (email and/or PDF) directly from the Admin would be a huge bonus (because emails invariably get lost/discarded).

Solution #2: PayPal invoices

In talking with @paolo about my fantastic custom fields idea, he mentioned that PayPal should have the capability to send invoices for us. I went poking around a bit, and mostly came up with information about sending invoices for payment, not as receipt of payment.

They do talk about Invoicing APIs that can integrate with accounting systems. Personally reading this makes my face hurt and I feel the above solution #1 would be faster/more direct to implement, but PayPal integration with accounting might be a better long-term solution. Dunno, worth looking into. J

https://developer.paypal.com/docs/invoicing/

Though when I think about the world of e-commerce, I think of it being natural for the site selling to be responsible for accounting, not the financial institution charged with the transaction…

Conclusion

Number of manual invoices created:

  • Paris: 28
  • London: 21
  • Europe (Vienna): 59

These may seem like small numbers considering the total number of attendees for each event, 500, 660 and 2200 respectively. But what these numbers don’t show is the time also spent in communicating with attendees who request these invoices, the time it takes to look up the ticket and make sure it was purchased (yes, not all requests are attached to actual tickets), discrepancies when the asker is not the purchaser, the number of back and forths to explain that the postal address is needed but that the invoice will be sent by email, etc. Sometimes several people can be involved if the request goes first to Central before making its way to appropriate parties, managing email inboxes, etc. London helped the process along by creating an online form for requests and a spreadsheet to manage them. But in the end it was still a couple hours of work to verify, issue and send each requested invoice.

Automating this process would collectively save us volunteers huge amounts of precious time. I’m convinced that updating our email confirmation templates would be a fast and direct solution. I also think there is inspiration (and code) to be found in existing WooCommerce solutions (templates, extensions).

Thanks for reading, look forward to your thoughts and am happy to help in any way I can (conceive templates, test code, etc). 🙂

Best,
-jennyb

cc: @iandunn

#automation, #invoicing, #wordcamp-sites