Building a Recurring Billing System
Ever since Authorize.Net released the Automated Recurring Billing API we have had the fortunate experience of integrating quite a few gateways that utilize this new functionality. As we have delved further into the needs of each client it became apparent just how much thought must go into a recurring billing system.
At first glance the ARB API seems to be very sparse in terms of functionality and you would be right. They limit the calls to their system to:
- Creating new ARB subscriptions
- Editing existing subscriptions
- Deleting existing ARB subscriptions
So why is this new API considered so useful? Because those three ARB functions allow us to do everything we need when combined with our own recurring billing system.
So what would our recurring billing system need to do? It would need to:
- Manage our subscription IDs
- Track customer credit card expiration dates
- Notify customers of their credit card’s expiration date
- Allow customers to change the credit card associated with their subscription
- Alter the amount of a recurring billing subscription
- Delete a subscription
Over the next few blog posts we will explore the needs of our recurring billing subscription system and how we will use the Authorize.Net ARB API along with our own subscription tracking system to make a robust subscription application.
May 7th, 2023 at 4:43 pm
“You will notice there is no way to alter the amount of existing ARB subscriptions”
Is this an unwritten limitation? I haven’t used the recurring billing API yet, but the integration guide PDF linked in your first PDF says the update method allows all the parameters of the create method with a few listed exceptions. That means “amount” should be an update-able field on a subscription. Is it not?
I’ll be starting my testing with the API tonight, so thanks for what part of this guide are up so far, and the initial notice — I learned it from this site long before Authorizenet made any notification.
May 7th, 2023 at 4:47 pm
After reading your reply I broke out the documentation again. I did misread it. You can alter the amount of the transaction through the API. That will affect my future blog posts. ;)
Edit: I’ve updated this one to be accurate.