Implement Invoicing for all Payment Obligations
Support Online Payments for Unpaid and Partially Paid Invoices
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.
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:
- Discounts, premiums, recurring payments and pledge sections of the page will be disabled.
- The price set part of the page will be replaced with a frozen (ie non-editable) listing of the existing line items for the contribution, membership, or event registration, including taxes, with discounts applied.
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)
Better Handling of Refunds, Partial Payments, Multiple/Split Payments