Invoices list goods or services provided and the amount due for them, and can be unpaid, partially paid, or paid. They are often required by organizations in workflows like cheque requisitions which ask an accounting department to pay an amount owed. Currently CiviCRM supports invoices for amounts owing as well as previously paid via the Contact Dashboard. But there are several improvements required.
CiviCRM does not natively have a way to process a credit card or other immediate online payment to pay for an existing “pay later” contribution either in the backend or front-end.
Build front-end and back-end processes for paying existing invoices online (this is simpler than the 2012 spec).
Front-end: The contact dashboard already displays links to PDF invoices; extend that by creating a link to pay any open invoices (balance due) online.
Clicking the Pay Now button will bring up the contribution page defined as the default invoice payment page on the CiviContribute Component Settings page:
A validation will be made to ensure a payment processor is defined for the selected contribution page, and that it is enabled. A validation is added to Edit Contribution Page to ensure that if the page is defined as Default invoice payment page, then it is invalid to remove the last payment processor from the page. (Please verify that there is a validation to prevent a payment processor from being disabled if it is in use on a contribution page like the Default invoice payment page.)
When a Pay Now button on a Contact Dashboard is clicked, the Default invoice payment page is loaded:
Option A: The total payment amount could be frozen.
Option B: Partial payments could be supported.
Back-end: On the New Contribution form, near the top right there a link submit credit card contribution. The differences between the Create contribution form in the two cases provide a pattern for how this could be done on the edit form with minimal effort (though perhaps not optimal usability):
As an additional feature, the ability to pay for outstanding online will need to accommodate partial payments (where the user has partial amount due on the invoice total).
Create a process to auto-generate membership invoices for the coming year. (lower priority for core integration)
Currently refunds must be handled through a two-step process: process the refund through the payment processor and then record the refund in CiviCRM. Partial payment processing is provided for events but has some shortcomings. Partial payments for memberships is not currently available.
Integrate refund handling directly in CiviCRM so that the actual transaction can be processed from the system. This functionality will be payment processor dependent. Initial need is for Authorize.net.
Enhance partial payments for event registration to support credit card payments and improve the general flexibility of the tool.
Implement partial payment tools for membership records. This will need to accommodate several use cases:
Membership type is changed: The user signed up for a membership they do not qualify for and must pay a balance to join at the correct level.
Membership fee is changed: A student joins at the full rate and is later informed the chapter will cover 50% of their dues. In this case, a refund is owed the student and a partial (split) payment applied to the chapter.
Support the ability to move a payment/contribution to a different contact. This may happen if a chapter pays the dues for one student and later determines it should be applied to a different student.