artifacts Posted March 12, 2008 Share Posted March 12, 2008 This is not a specific bug report, but it does point out flaws in some billing systems. I have been looking at a number of web hosting billing systems, specifically: WHMCS, AWBS, Accountlab, and Clientexec. Of all of these, WHMCS seems to be the most nicely done. However, all of the above seem to have defects in their business logic in the way they handle money. Some of the above systems cannot handle prepayments at all. Some will accept a prepayment but not automatically apply it to an invoice. Some will take a prepayment but the user cannot see it on the client pages and/or use his credit balance to actually pay an invoice. None of them seem to be able to bill the customer once for everything he owes today, and/or easily apply a single payment to all open invoices oldest first, and let the customer know how much is still owing. And all of them seem to lose track of money if any transactions are undone. On the other hand, there is an open source billing system called Freeside that uses perfect business logic to keep track of money and payments. Transactions can be reversed, voided, undone, and redone, without losing track of a single penny. A single payment can be applied to any number of invoices in any order, as desired. A user can make a payment to build up his credit balance, and this can be used later to pay invoices as they become due. But Freeside does not have any ability to directly create/suspend/delete accounts on a web-hosting system such as DirectAdmin (something WHMCS does nicely). Nor does Freeside handle Paypal Web Payments or Google Checkout (though these could probably be added). It does handle a large number of credit card processing gateways. So we have a problem here: Freeside does the business logic part correctly but doesn't do the web hosting part. The others do the web hosting part correctly and screw up the money-handlng part. Why this gap? I think it's because Freeside was presumably written by somebody with an accounting background, while the others were written by people with web-hosting backgrounds. Everything else in WHMCS is so close to perfect, all it need to do is to handle the money correctly. Rahul 0 Quote Link to comment Share on other sites More sharing options...
WHMCS CEO Matt Posted March 12, 2008 WHMCS CEO Share Posted March 12, 2008 Some of the above systems cannot handle prepayments at all. WHMCS can Some will accept a prepayment but not automatically apply it to an invoice. WHMCS does Some will take a prepayment but the user cannot see it on the client pages Balance is shown on the client homepage and/or use his credit balance to actually pay an invoice. Is issue #261 implemented into 3.6.1 on the dev tracker (http://dev.whmcs.com) the kind of thing you wanted? Allows the user to make one payment to add credit to their account and then apply that to any of their already generated but unpaid invoices they have until it runs out. Matt 0 Quote Link to comment Share on other sites More sharing options...
artifacts Posted March 12, 2008 Author Share Posted March 12, 2008 Issue #261 implemented in 3.6.1 would definitely fix one significant shortcoming in WHMCS. However, I notice that WHMCS currently treats an invoice paid from a credit balance as having amount $0.00. So, instead of generating an invoice for a nonzero amount, and then going through a payment transaction, WHMCS generates an invoice with two line items that add up to zero. I hope that issue #261 fixes this problem too. By the way, I have right now in WHMCS 3.6.0 a $0.00 invoice showing as UNPAID. I think it was an invoice paid from a credit balance, which therefore added up to $0.00, which I managed to mark as UNPAID. Probably the only thing more confusing than a PAID invoice for $0.00 is an UNPAID invoice for $0.00. Fortunately I am only testing WHMCS so these are all artificially generated invoices and no real customer is affected. I think there is an underlying design decision in WHMCS that has caused problems in many places. And that was to treat (payment of an invoice) and (receiving money) as one transaction, when in reality these are two different transactions that sometimes occur close together in time. If deep inside WHMCS is still treating the two as one transaction, then the fix you mention will fix one of the symptoms, but the problem may appear in many other places. For example, changing the status of an invoice from PAID to UNPAID will also cause loss of the money that was used to pay the invoice, because this money does not have a separate existence within WHMCS. Rahul 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.