I'm using CiviCRM's "pay later" functionality on a contribution page and have received a number of contributions that now have a "pending" status. This is good. When I receive a paper check, I can just update that contribution.

However, some donors wish to fulfill their pay-later pledge online instead of by check. Is there a way for the donor to pay online such that the "pending" contribution will be automatically removed or updated?

Note: I am using a thermometer to display the total amount raised and it includes pay-later contributions, which is important to me. I'd like to avoid having duplicate contributions in the thermometer.


2 Answers 2


Similar functionality was added as a part of https://issues.civicrm.org/jira/browse/CRM-19263 which should be included in version >= 4.7.12.

What it includes -

  • You need to add a Default Invoice Payment Page on CiviContribute Component Settings.

enter image description here

  • Now any pay later contribution created by a user would contain a Pay Now link on User dashboard page /civicrm/user?reset=1.

enter image description here

  • Hitting this button would take you to live contribution page where one can complete the pending contribution using CC details.

More details on the jira issue link.

  • looks like the JIRA ticket went through with 'no documentation required' which might be why it is proving hard to google about
    – petednz - fuzion
    Commented Sep 18, 2017 at 4:57
  • wiki.civicrm.org/confluence/pages/… was the flowchart required for the pay now functionality
    – petednz - fuzion
    Commented Sep 18, 2017 at 5:03
  • Warnings: This approach currently has the following downsides: (1) enabling deferred revenue has other effects which are not yet documented, like creating bookkeeping entries automatically for member and event revenue; (2) when a payment is made with this "Pay now" link the contribution will be linked to the "default invoice" page instead of its originally linked contribution page; (3) the contribution may move to a different contact record based on the fields filled out at payment time.
    – Sean
    Commented Sep 18, 2017 at 23:13
  • 1
    As a result of this discussion we're going to make changes: 1) remove illogical dependence on Deferred Revenue Enabled, 2) leave original contribution page id link when paid later on a different page configured through 'Default Invoice Page' setting, 3) append source info and page id from payment page to end of source info from original pcontribution page.
    – Joe Murray
    Commented Sep 19, 2017 at 18:52
  • See similar question at civicrm.stackexchange.com/questions/20237/…. This ability should be available to authenticated users. Commented Sep 27, 2017 at 12:27

The payment page has the following URL : .../civicrm/contribute/transact?reset=1&id=12&ccid=251 (where id is the Contribution-Page-Id and ccid is the Contribution-id) (you must force the id).

Being given the contact-id and the contribution-page-id, you can deliver this URL via a small php program (eg : before_url_pay.php?c=[current-user:civicrm-contact:id]&p=15) which fetches the contribution-id (SELECT id FROM civicrm_contribution WHERE contribution_page_id='.$page.' AND contact_id='.$contact.' AND contribution_status_id!=1), then generates and opens the URL (with ccid = the selected id).

If you use webforms, you can get the contact_id, and then parameterize the Webform Setting Redirection Location as /sites/default/your_php_directory/before_url_pay.php?c=[current-user:civicrm-contact:id]&p=15 (contrib page id)

Doing that, the user won't even need to pass via the dashboard.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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