We have code that is invoked by the silent post URL which terminates user accounts on our end if their ARB transactions failed, and adds the account to a queue for ARB cancellation through Authorize.net a few days later. It seems that we are not being notified in the event that a user's credit card has expired.
There seems to be some conflicting information regarding whether or not ARB transactions are attempted for expired cards.
From: ARB - No transactions for expired credit cards?
" We DO attempt a transaction even if the CC is expired, and you should get a silent post indicating the success or failure of the transaction."
From: Notifications to expect when an ARB profile fails
" Scenario 1 - Card Expires after at least one successful charge on the card:
1. AuthNet sends a "Credit Card Expiration" ARB Email Notification prior to the expiration date on the card.
2. NO silent post on the scheduled payment date (as AuthNet won't attempt to charge an expired card)
3. AuthNet sends a "Failed Transaction Notice" ARB Email notification on the date of the scheduled payment but leaves the profile in "active" status."
We need to know when an ARB account's card has expired so that we can terminate that user's services , just like when a card was unable to be charged for any other reason. What is the recommended method for handling this? Parsing the notification emails seems like a horrible hacky method.
04-12-2017 11:18 AM
Hi @mfurlend,
I can't actually answer what's supposed to be happening in the case of silent post without further research on my part. However, I'd like to suggest you investigate our new Webhooks offering.
Webhooks is a modern replacement for silent post, and should be able to provide you with the notifications you need about your subscriptions.
http://developer.authorize.net/api/reference/features/webhooks.html
04-12-2017 12:15 PM
Hi Aaron,
Thanks for your reply. I looked through the Webhooks features, and I am a bit confused about a point:
net.authorize.customer.subscription.expiring | Notifies you when a subscription has only one recurrence left to be charged. |
The subscriptions we create have no expiration date. They are good for as long as the customer keeps paying. However the credit cards used to pay for them do expire. Would this hook notify me when the card is about to expire, or when the subscription is (in our case, never)? If its the later, then what feature of the webhooks API would help in my case? I see no other potential candidates..
04-12-2017 12:40 PM
In that scenario, you have a couple of options. The subscription itself becomes suspended when the card expires, so the net.authorize.customer.subscription.suspended is essentially a notification that the card expired (or that a charge didn't work). I do not know off the top of my head if that happens right after the last possible successful charge, or if the system actually attempts a transaction on a card that expires, then suspends the subscription. So, that notification by itself may not be helpful.
Although your subscriptions don't expire, another option would be to could set them up as expiring subscriptions tied to the credit card expiration date. That way, you'd get a net.authorize.customer.subscription.expiring notification at the proper time, then just renew the subscription when you get the new payment info.
The other option would be to make a call to getCustomerPaymentProfileList to query for all the cards expiring in a given month so that you know which ones you'd need to take action on.
04-12-2017 01:32 PM - edited 04-12-2017 01:34 PM