SubscriptionBoss 1.21 Release with PayPal IPN Enhancements

There were two main thrusts in the recent release. The first was to prepare the way for the Payment Driven Orders feature; and the second was a number of bug fixes to the integration between Infusionsoft hosted order forms and SubscriptionBoss.

PayPal IPN Enhancements

The PayPal IPN handling has not changed significantly in the last two years. Given that we are now running on PHP 5 I wanted to bring the plugin up to date before embarking on the Payment Driven Orders feature which will allow SubscriptionBoss to provide integration between PayPal and Infusionsoft for legacy subscriptions and third party integrations where the initial PayPal order is not mediated by SubscriptionBoss.

HTTP 1.1 Headers and cURL

I have updated the PayPal IPN handling to reflect PayPal recommendations. This entails using HTTP 1.1 headers, and using cURL rather then fgets when sending the acknowledgment back to PayPal that the IPN has been received.

All IPNs Forwarded

When making the above changes to the IPN handling, I decided to modify the functionality as regards the ‘IPN forwarding’ where an optional secondary IPN listener had been set up.

I had made the original decision to forward only those the IPNs where SubscriptionBoss was unable to process the IPN. This has been revised. Now, all IPNs are forwarded to the secondary listener. This makes more sense in the light of Payment Driven Orders where users may have custom scripts for legacy subscriptions and the processing actions for handling the IPNs is shared. For example, SB’s job is to create an order, an invoice and a matching payment while the job of the other secondary listener is to provision the service associated with the payment.

Infusionsoft Order Form / Shopping Cart Integration Bug Fixes

In this release, the issue of multiple payment options on the order form was addressed. Also covered was the option to send SB the order as a GET rather than a POST, and finally the ability to pass form fields form the shopping cart to SB.

IS Order Form Payment Options

The rule to follow is that if the options appear as A, B and C in Infusionsoft – then the 3 subscriptions that are set up on SubscriptionBoss need to be in the same alphabetical order. The simplest way to do this is by using a simple suffix of A, B, C, etc.

So for example, let’s say you have a six week Elite online training course which costs $600, and the member can pay for it in 3 ways

  • Option A : $500 now
  • Option B : $300 now and $250 in 3 weeks time
  • Option C : $200 now and 2 further payments of $200 2 weeks apart

In Subscription Boss you set up the first subscription, elite_A, with all the required action sets and thank you pages, and set the initial charge to $500, and set the Infusionsoft Order Form URL e.g.

Then use the “Subscription Copy” widget in the sidebar to create elite_B, and then reduce the initial charge to $300 and add a recurring charge with an amount of $250, a single billing cycle and a billing delay of 21 days.

Again use the copy widget and create elite_C, and reduce the initial charge to $200 and charge the recurring charge to $200, set the billing frequency to 2 weeks, change the number of billing cycles to 2 and set the billing delay to 14 days.

It is important that you keep the Infusionsoft Order Form in sync with the subscription options. If, for example, you remove the 2-payment option from the Infusionsoft order form, then you should also clear the saleform field in the Infusionsoft Order Form section on SubscriptionBoss for the eliteB subscription.

In a future release, I will look into simplifying the set-up so SB can derive the payment plan details using the content of the form and the Infusionsoft API. In any case I want to be able to spot when the Infusionsoft Order Form and the Subscription set up become out of sync.

Free + Shipping Not Supported

A good deal of effort went into investigating if a Free+Shipping option was possible with PayPal.

However, when the product cost was set to zero, then PayPal gave an error indicating the cart items did not match the cart total (even though they did). On further investigation on the PayPal support site, it became clear that zero cost items are not supported.

PayPal and hence SubscriptionBoss does however support “$0.01 + shipping” pricing.

There is a workaround for free+shipping and that is to collect the buyer’s country before they buyer is sent to PayPal and hence you can put the appropriate ‘shipping product/charge’ in the cart. This is using “shipping” as a product in the cart as opposed to an additional charge that is added to the cart after the country of residence has been determined.

I can’t say I am keen on this approach and think 1 penny plus shipping would be my preferred option as it is easier to set up and makes the user buying experience a little shorter.


  1. The example URL shows nathnif at the end of the (, and I’ve noticed that my infusionsoft order page shows the same. Is infusionsoft still tracking my affiliate id, or not?

    • http://Russell says

      Hi Tom,

      Typically you will not see the affiliate code on the URL as affiliate codes are normally handled using cookies. The SB script reads the Infusionsoft cookie and passes it along with with email address, first name, last name, etc as a POST variable to the SB. These variablles are then available after the buyer authorizes payment PayPal, and the affiliate code is written as the ‘sale affiliate’ on the order, and as the ‘lead affiliate’ if the contact is new.

Leave a Reply