Updating Subscription Credit Card

Hi guys,

I’ve recently joined a company that uses Infusionsoft and I want to create some automations. I have some questions regarding the capabilities of the APIs!

First, is it currently possible to do “everything” with the REST API or do I need to use the xml-rpc one for more specific stuff?

Second, if I’m using the xml-rpc one, where can I found all the tables that are available on the Data service?

The last question regards this post title, because we want to automate the “update credit card” flow to its maximum. Is it possible to update a subscription to a new card via the REST API (or at least the xml-rpc one)?

I found some endpoints related to subscriptions but there were no “credit-card” fields there!

I’m sorry for the loads of questions, but I’m completely new to the software and some advice would be much appreciated!

Best regards,

The list of tables available via the DataService is found on our main Developer site: Table Schema Documentation - Keap Developer Portal . However, I would recommend against building any new software that depends on the XML-RPC API, as we plan to deprecate it in the future.

If you need to retrieve the list of (obfuscated) credit cards associated with a Contact or add new ones, you can do so through the following REST endpoint:
Keap REST API . You can update the credit card associated with an Order’s pay plan via the following endpoint:

Hi, Tom!

Thank you for the prompt response and the advices.
You saved me a lot of time!

Following up on this automation stuff, how far I can go with Actions? I couldn’t find anywhere how to create new Actions, so I’m limited on those right?

I found a “HTTP Post” action, is there any chance that I can customize it to do personalized requests to Infusionsoft’s API?

Just to be more specific: to update credit cards, we use a $0 purchase. Whenever someone does that purchase, I want to update their existing subscriptions with that card. Is there any way to do that without leaving Infusionsoft?

The only way to implement this for me seems to create a “listening” endpoint on a server, notify that endpoint that someone has updated their card (using HTTP Post action) and from the server perform the subscriptions update… That seems not to be the optimal way for me, since maybe I could perform this request as an Action from inside Infusionsoft!

Best regards,

Hi @Weuler_Borges, there are a couple of options that you may want to explore.

First of all, Infusionsoft has a built in automation for helping customers update their credit cards that are close to expiring. The general idea is that when a card is close to expiring the customer will be sent an email with a link to a form that will allow them to enter their new credit card details. Once submitted, any subscription or payment plan with the old credit card will automatically be updated to use the new credit card.

This article isn’t complete but it contains the majority of the steps involved: Set up automation for credit card expirat | Max Classic. The piece that’s missing is how to inject the update link in to an email. If you’re interested I can go into more detail on how to set that up.

As for an API approach, unfortunately making API calls from the Campaign Builder HTTP Post action is not supported. One way you could solve it would be to add a REST Hook listener for when orders are added and use the API to check if it is one of your $0 orders. From there you could look for subscriptions for the given contact and update them if they are linked to the old credit card.

Lastly, there may also be a solution to this problem on the Infusionsoft Marketplace if you want to check that out.