Our organization is currently transitioning into CiviCRM. We have some existing recurring contributions (with Paypal Standard) that are ongoing and we would like to import them into Civi. Why do we want to import them? Well, here is my current understanding of the situation:

When the monthly contribution amount is charged from the donor's card by Paypal, an IPN with the payment data is sent to our server. Civi processes the IPN and tries to relate it to an existing recurring contribution. If it finds the related recurring contribution, it creates a new single contribution record for the payment made. If it doesn't find a related recurring contribution, it gives an error.

So this is why we need to import (or somehow recreate) the recurring contributions. What are our options for that? I saw this wiki page, however in the Contributions tab inside a contact I can't find a "Submit Credit Card Contribution" button.

4 Answers 4


Here is some relevant information I got from JonGold on this matter in a private chat in IRC. Posting the conversation in its entirety.

[21:16] <borislav> hi [21:16] <JonGold> hi [21:17] <borislav> is this by any chance your answer here? http://stackoverflow.com/a/31733507/2762014 [21:18] <JonGold> yup [21:18] <borislav> cool [21:18] <borislav> how did you import the recurring contributions into your civi database? [21:19] <JonGold> I used the command line CSV API import tool [21:19] <borislav> ah! [21:20] <borislav> could have thought of that myself, haha [21:20] <borislav> so you first imported the contacts and then the recurring contributions? [21:20] <JonGold> I'm looking at the CSV now. Here are my headers: "trxn_id","installments","frequency_unit","amount","invoice_id","start_date" ,"create_date",contact_id,"frequency_interval" [21:21] <JonGold> Yes - I do a lot of migrations to Civi. I first import the first name/last name/external identifier. That way I can map external IDs to CiviCRM contact IDs. [21:21] <JonGold> Though I realize that we've confused two different issues here. [21:22] <JonGold> The IPN issue didn't involve me importing anything. I had a Civi client who switched from Drupal to Wordpress. So the database didn't change, nothing was imported. I just needed IPNs to show up at a Wordpress-based URL. [21:22] <JonGold> But I've also imported plenty of recurring donations using the command line API CSV tool! [21:24] <borislav> right, in that case you already had the recurring contribs in the civi database so you just needed to redirect the IPN. in my case I need to import them to the database [21:24] <JonGold> What payment processor are you using? [21:24] <borislav> Paypal Standard [21:25] <JonGold> Hmm. I'm not sure how successful you're going to be, but I can give you some tips. [21:25] <borislav> if you want to, answer my question here: http://civicrm.stackexchange.com/questions/7146/what-are-my-options-for-importing-recurring-contributions [21:26] <borislav> or I can compile an answer with your tips and post it [21:26] <borislav> whichever you prefer :) [21:26] <JonGold> When you create a recurring donation in CiviCRM using PayPal Standard, Civi gives PayPal a string of data that it expects to get back. It includes the contact ID, recurring contribution ID, etc. [21:27] <JonGold> So when PayPal sends its IPN ping, Civi is expecting to get that data back in a particular format. [21:27] <JonGold> If it's getting the IPN data pinged to it and that contribution was created in a different CRM, the data won't be there. [21:28] <JonGold> In theory, you can go into each IPN subscription in PayPal and change the data. I've done it manually. You can also possibly write a script. It's a huge pain. [21:28] <JonGold> You can compile these answers - I don't think I need the Stack Exchange points :) [21:29] <JonGold> My last client in your situation agreed that the option they'd take is to manually upload a list of recurring donations from a CSV (I forget whether it was compiled manually or exported from a legacy system) [21:29] <JonGold> The recurring contribution records were still present in Civi so they could, e.g., search for recurring donors, but there were no IPNs, just the manually imported recurring donations. [21:30] <JonGold> As each person's credit card expired, they would have that person restart the recurring payment through Civi. This may work differently with PayPal standard though. [21:31] <JonGold> Also, to respond to your not seeing the "Submit Credit Card Contribution" button - I'm not sure that works with Paypal Standard, I'm afraid. Not 100% sure though [21:39] <borislav> I had no idea that the paypal IPN data depends on what Civi sent to Paypal in the first place. this makes things much more complicated. for me it may not be worth it to do all of this. with not too many subscribers, it might make more sense to ask them to register for a donation again, this time with Civi's donation form [21:40] <borislav> you have saved me a lot of time with this info, thank you [21:40] <JonGold> no problem!


My attempt at summarising Borislav's / John Gold's answer (above) for easier reading here:

If you're trying to import recurring contributions into Civi from a previous membership program / CRM, you may be able to write something that goes into paypal and changes the IPN data it gives civi, so Civi understands it. But it will be a pain.

Normally Civi gives PayPal Standard a string of data when you set up a recuring contribution, which it expects to give back; if the recurring contribution was set up in a legacy system, PayPal won't give the same string back, and therefore without changes, Civi won't understand it.

You could alternatively. manually upload recurring subscription data in a csv to Civi, so it's there to look through in Civi, but it won't have IPNs and won't continue to link to Paypal. Then as each person's card expired, they would have them restart the payment through Civi.

John Gold is unsure if the "Submit Credit Card Contribution" button will work with PayPal standard either.

To me,- and we are looking at having to do this with my organisation - having to ask every member to set up their card again sounds like a right pain - and we are quite worried that we will lose a significant amount of members in the process, as people may well not set up their subscriptions again.

If anyone else has updates / more information about this / possible solutions to the original question, I would be very grateful. Thanks


Fuzion's Import API CSV extension has more fields than Import Contributions, and most importantly I think for the situation I am looking at, these include Recur Contribution ID.

  • 1
    Exactly - I use this CSV import to populate the recurring series when we transplant iATS recurring series from another system to CiviCRM; Of course that's easier - no IPNs - the token is still valid - it's just called from CiviCRM now Mar 1, 2017 at 15:43
  • @KarinG-SemperIT I just used it and your comment was the KEY
    – Zachary
    Mar 25, 2019 at 23:03

Are those recurring plans in CiviCRM? If not then you might need to use something like Civi Banking to do the work for you. If they are then I think the options your talking about should become available.

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.