Is there a need for CiviAccounts?

2009-08-04 06:21
Written by

We are finding that CiviCRM/accounts issues are becoming increasingly important for our clients, and Eileen's recent blogs and the discussion they are generating are a fantastic step towards helping find the best way for Civi to deal with financial transactions.

For example, I think it could be useful for Civi to ultimately develop functionality for maintaining simple bank accounts within CiviCRM, so that small organisations can maintain basic accounts without the headaches of integration with an external package.

Currently we have clients who are willing to rely on CiviCRM as being the central repository for the detail of all contributions, with a lump sum figure hitting their GL at the end of each month which can be reconciled against CiviCRM's records. This is largely reliant on the organisation having very good procedures in place to attend to banking on the same day as transactions are entered into CiviCRM, to make it easier for payments to be reconciled. It also requires some custom reports for reconciliation, and involves some headaches when cheques bounce.

For one client, we are starting to write some scripts to do automated bank reconciliations against contributions recorded in CiviCRM, which involves us writing one or more custom tables so that a whole group of contributions (cash and cheque) are bundled together into a bank deposit record linked to a specified bank account, against which the reconciliation can then be run. If the amount of a real cash/cheque deposit doesn't match against the aggregated total of CiviContributions in the relevant bank deposit record, then an exception report is generated so that the inaccurate bank deposit record can be rectified. We are also doing credit card integration with a bank and recording successful transactions in CiviContribute through the CiviCRM API, which are generally easier to reconcile as there is only one contribution per "deposit".

It would be interesting to hear whether people think having "Bank Accounts" (whether Bank, PayPal, Petty Cash etc) and a method for aggregating a batch of contributions as a deposit to a Bank Account, would be a valuable addition to CiviCRM (CiviAccounts is the obvious name for such a module). Of course there would also need to be a system for recording expenditure from the Accounts as well (whether as expenditure towards running a CiviEvent, a CiviGrant or otherwise).

An important aspect for the integrity of such a system is that once a contribution is reconciled, it should be difficult to delete/edit it in order to ensure CiviCRM stays in "sync" with the relevant bank account/s. This could be controlled through the ACL system.

To provide the level of ACL and simplicity of interface required for some of these processes, currently clients are asking us to write separate interfaces that use the API to submit payments as CiviContributions and simultaneously add those contributions to a bank deposit record in a separate table.

If this is something people are interested in seeing within CiviCRM, then we can look at contributing the seeds of a basic accounts system for Civi (even if initially only table structures) and seeing where this discussion takes us!