1

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...

  1. Add a custom field on Contribution for Amount Received.
  2. Add a custom field on Contribution for Amount Over/underpaid.
  3. Record a separate positive or negative contribution for over or underpayment.
  4. 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.

4

With respect to the overpayments, I don't know whether this will fit standard British accounting practices but I'd be inclined to create a separate financial type for the overages - a holding fund, if you will - and record one payment for the membership fee and one for the overage. They could then add an adjustment transaction the following year to move those funds from the overage account to the subsequent year's membership fee; that would make what happened and why abundantly clear to any auditors who review the financials later. That would also enable searching/reporting on that financial type. (I have at least one client that does this when they receive overpayments.)

Regarding underpayment, perhaps the membership could be kept in pending status until the total amount has been collected; those pending members could be added to a smart group that could be used to filter contribution reports to find how much they've paid toward their membership, send email reminders, etc.

That may not get you 100% toward where you want to go but hopefully it's a start.

2

The quote from the documentation is perhaps alluding to the fact that you can create a price set where the various options can be allocated to different financial types, but I don't believe it is relevant for your situation where you already have a contribution record for the membership.

I agree with Lesley's suggestion of a separate financial type for overpayments.

If you don't want to keep a membership that is underpaid as pending then my non-code solution for underpayments would be as follows (assumes financial type for membership payments is Member Dues):

  • Create an "Overdraft" financial type
  • Create a new payment instrument of "transfer"
  • When a cheque comes in for less than the full amount:
    • Record the cheque against the pending contribution changing it to completed
    • Record contribution for the amount not paid with financial type of "Member Dues" and paid by "transfer"
    • Record contribution of -(amount not paid) with financial type of "Overdraft" and paid by "transfer" .

Underpayment

If you like to have every contribution with the financial type of "Member Dues" linked to an actual membership, then you can "renew" the membership to record the additional $10 "payment" then edit the end date appropriately.

It is not exactly a speedy procedure, but does mean that the contribution records reflect the true situation.

  • Many thanks JoAnne. Each contribution may actually cover several items: 2 memberships, donation, fees, recorded with different financial types via price sets. Membership org wants 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 of changing the contribution amount from e.g. £100 to £90 when the £90 cheque is received: this allows comparing amount due (from line items) with amount received. Sadly Civi doesn't allow editing the contribution amount through the UI in this case. – davejenx Jul 28 '15 at 15:07
  • Although you can't modify the amount of the price set you could still work out how much was actually paid. It will be the the amount "received" for the Dues, plus the amount of the "overdraft" (which will be a negative amount.) The "total contributions" for an appropriate time interval will give you that amount. – JoAnne Aug 5 '15 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.