Updated over 1 year ago by Jon Goldberg

PayPal and CiviCRM

PayPal is very difficult to navigate, and very difficult to handle certain tasks that come up time and again, particularly around recurring payments. I'm documenting them here for future reference.

General CiviCRM documentation

http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Standard+and+Recurring+Contributions
http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Pro+and+Express+Configuration

Setting a URL for IPN callbacks

Go here: https://www.paypal.com/us/cgi-bin/?cmd=_profile-ipn-notify

Resending an IPN

Do this from the IPN History page: https://www.paypal.com/us/cgi-bin/webscr?cmd=_display-ipns-history. Note the only way to find this page is from the "Setting the IPN callback" link above.

Modifying an IPN to reflect an updated CiviCRM contact ID, etc.

This is my raw documentation for the most complicated version of this. In this case, a user had a recurring membership/contribution, but a database restore eliminated all references in CiviCRM to it. However, the recurring payment profile still existed in PayPal.

I built a new recurring contribution from scratch. I compared an existing recurring contribution1 and then used the values from an IPN that corresponded to Carolyn2
[1] select * from civicrm_contribution_recur WHERE id = 700;
[2] select * from civicrm_system_log WHERE id = 223;

PayPal:
My Account > Profile
Recurring Payments Dashboard (https://www.paypal.com/us/cgi-bin/webscr?cmd=_merchant-hub)
Scrolled back to the creation date and clicked on Carolyn's name
Clicked "Modify".
The profile reference has a bogus maximum field length, so I right-clicked, selected "Inspect Element", and manually changed the "maxlength" value so I could edit it.

Finally, I created a new membership through the UI (46913) and edited THAT manually to have updated end date. I also created a membership_payment record.