Billing System Project

Creation of a billing system for InstantPresenter was split up into two projects. The first project involved the inception of the billing system as it is today and the automation of all its billing processes. The second project entailed eliminating the actual storage of credit card numbers and instead using what is called reference transactions to process subsequent charges to the customer’s account. For clarity’s sake, I am outlining the final results of both completed projects.

There are two variations of InstantPresenter customers, subscription-based and pay-per-use customers. The subscription-based customers can be billed once every x months, where x can be 1, 3, 6, 12, or 24. The pay-per-use customers are charged as soon as the usage is posted to the account and there is no monthly charge.

Charges are generated in one way, regardless of what type of customer we are dealing with. Every charge on the account is created in the form of a “line item”. This “line item” can be grouped with other “line items” to form an “order”. The formal definition of an order would be the sum of one or more “line items”. Each order can be charged by a credit card or by a check. At the end of the month, a customer can view their “statement” which is a collection of orders that were billed.

The processing of orders or checks can be performed in two ways. The first method is manually through the use of the tools on the Administrator Gateway. The second method is automatically. The majority of the billing is now performed automatically. At the end of every day, line items are assembled together to form an order and any pay-per-use orders are charged. At the end of the month, subscription line items are created and orders are processed.

Until recently, customer credit card information was stored locally. Every time a transaction was made, the credit card information was pulled from the database and submitted to the credit card processor. However, after the completion of the second project, the credit card information was not stored at all. Instead, a reference transaction was used to process all orders. A reference transaction is just what it sounds like, a reference to a prior transaction. Utilizing reference transactions was a huge step towards making our database and customers a whole lot safer and secure.

The billing system was one of the first and last projects I worked on at InstantPresenter (As you may recall it was split up into two projects). It proved to be a very necessary and successful project as the business grew. Billing systems are, and always will be, something that companies need to survive. I am honored to have had the experience of working on such an essential building block of the company and can only hope that I will have another opportunity to work on such an integral part of the business.

.

Customer Details page

We can create or edit line items, orders, and subscriptions.

Downloads

Download the document detailing my results, with built-in code samples and summary information or the actual source code:
The Source Code: Download Source Code and Documentation
Documentation & Planning: Download Documentation

NOTE: All files here are verified and virus free.