The type of underpayment or overpayment I have in mind is as follows. An organisation signs up for a membership valued at £100, opting to pay later. So there's a pending pay-later contribution for £100. They send a cheque for £90 or £110. This is not an intentional extra £10 donation or partial payment: they just sent the wrong amount.
The common-sense solution might be to tell the member they sent an incorrect payment and ask for a correct one. Sadly the membership organisation doesn't want to do that, they want to record that an underpayment or overpayment was made and carry this forward.
They also want to be able to report on a set of contributions, seeing the amount due and the amount received.
I know that there have been relevant changes to Civi core as part of the CiviAccounts project, e.g. Phase 1 Implementation - Data Structure Changes, aimed at distinguishing 'commitments to pay' from 'payments'. I understand that some parts have been implemented, e.g. partial payment for events, but others not.
What isn't clear to me is whether or how this infrastructure can be made use of in current Civi 4.6 for the above scenario. Or whether, as things stand, we need to use an alternative approach such as...
- Add a custom field on Contribution for Amount Received.
- Add a custom field on Contribution for Amount Over/underpaid.
- Record a separate positive or negative contribution for over or underpayment.
- Suggest that this information is best recorded outside Civi, in an accounts package.
This section of the CiviContribute documentation sounds relevant:
For example, a fund raising dinner that charges $100/person may now allocate the true costs toward the relevant accounts i.e. $75 donation posted to the Income account named "Donations" and the $25 Cost of Sales account to "Event Fees".
However I'm not clear whether that is the right thing to do in this case or how the person recording the payment would do it.
CiviCRM 4.6, Drupal 7.
Edit 31 July 2015: adding relevant details of the use case, which I foolishly omitted to keep things simple...
Each contribution may actually cover several items: 2 memberships, donation, fees, recorded with different financial types via price sets. The membership organisation wants a report showing, for each contribution, the membership, donation & fee elements as well as total due, amount received and amount of any over/underpayment.
I like the idea, in @JoAnne's answer, of changing the contribution amount from e.g. £100 to £90 when the £90 cheque is received: looked like this might allow a custom report to compare amount due (from line items) with amount received. Sadly the contribution edit form doesn't allow changing the contribution amount when the contribution has line items. I tracked this down to templates/CRM/Contribute/Form/Contribution.tpl
, line 97:
{if $action eq 2 and $lineItem and !$defaultContribution}
(...then view total instead of showing edit field...)
I assume this was done for good reason: Civi wants to keep the contribution amount consistent with the line items and it wouldn't know which line item to alter. So for underpayment, looks as though the admin would need to record an additional negative contribution for the amount underpaid.