Hi -
We want to provide an option for customers to change thier subscription type from monthly to annual billing. Can someone provide best practices for doing this in Authorize.net?
Some considerations:
1. We'll need to provide a prorated refund of any prepaid monthly fees
2. Can we modify the existing subscription or do we need to create a new subscription?
3. We don't want to prompt the user to reenter credit card details
4. We're ok with the initial charge happening the day after the subscription starts (as is standard with ARB from what we understand)
Thanks!
Solved! Go to Solution.
โ08-08-2017 08:22 AM
The ARBGetSubscriptionRequest will return the customerProfileId as well as the customerPaymentProfileId with subscriptionId in the request.
There is the ARBCreateSubscriptionRequest that will create a subscription from a customerProfileId.
โ08-08-2017 02:13 PM - edited โ08-08-2017 02:17 PM
If the initial subscription was created with a particular customerProfileId, you could make an ARBUpdateSubscriptionRequest, to update an existing ARB subscription. Only the subscription ID and fields that you wish to modify need be submitted.
<?xml version="1.0" encoding="utf-8"?> <ARBUpdateSubscriptionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>YOUR_LOGIN_ID</name> <transactionKey>YOUR_TRANSACTION_KEY</transactionKey> </merchantAuthentication> <refId>Sample</refId> <subscriptionId>4724470</subscriptionId> <subscription> <profile> <customerProfileId> 1812763529 </customerProfileId> <customerPaymentProfileId> 1802282037 </customerPaymentProfileId> </profile> </subscription> </ARBUpdateSubscriptionRequest>
โ08-08-2017 08:44 AM
Thanks @NexusSoftware but per the documentation "The subscription interval information (subscription.paymentSchedule.interval.length and subscription.paymentSchedule.interval.unit) may not be updated." so I don't think that'll work (we'd need to change the interval from montly to yearly).
โ08-08-2017 09:06 AM
Yes, that's correct. Then your best option may be to ARBCancelSubscriptionRequest, then ARBCreateSubscriptionRequest from Customer Profile.
โ08-08-2017 09:27 AM - edited โ08-08-2017 09:36 AM
@cyf If you're moving from Monthly to Annual, might I also suggest adding Account Updater to keep the payment information up to date? This ensures when time rolls around for the next annual payment it goes through smoothly.
Richard
โ08-08-2017 10:18 AM
Ok... so it sounds like the only way to do this is to create a new subscription, which is fine, but my new problem is we're only storing the subscriber ID (and obviously email account) associated with the subscriber. As far as I can tell, there is no way to get the customer id for a given subscription ID or email address. Is that correct?
I also know that there is the ability to create a subscription from a transaction but again, it doesn't look like I can get a list of transactions for a given subscription ID or email account.
Please tell me I'm missing something. This seems like an extremely basic request and I'll be shocked if it's not available.
โ08-08-2017 02:02 PM
The ARBGetSubscriptionRequest will return the customerProfileId as well as the customerPaymentProfileId with subscriptionId in the request.
There is the ARBCreateSubscriptionRequest that will create a subscription from a customerProfileId.
โ08-08-2017 02:13 PM - edited โ08-08-2017 02:17 PM
Thanks for the help @NexusSoftware. Between your two posts I figured out everything I needed.
โ08-08-2017 02:50 PM
You're welcome @cyf. Glad to hear you got it figured out.
โ08-08-2017 03:46 PM