cancel
Showing results for 
Search instead for 
Did you mean: 

Best way to upgrade from monthly to annual ARB

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!

cyf
Member
1 ACCEPTED SOLUTION

Accepted Solutions

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.

Powered by NexWebSites.com -
Certified Authorize.net developers

View solution in original post

NexusSoftware
Trusted Contributor
8 REPLIES 8

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>
Powered by NexWebSites.com -
Certified Authorize.net developers
NexusSoftware
Trusted Contributor

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).

 

 

Yes, that's correct. Then your best option may be to ARBCancelSubscriptionRequest, then ARBCreateSubscriptionRequest from Customer Profile.

Powered by NexWebSites.com -
Certified Authorize.net developers
NexusSoftware
Trusted Contributor

@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

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.

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.

Powered by NexWebSites.com -
Certified Authorize.net developers
NexusSoftware
Trusted Contributor

Thanks for the help @NexusSoftware.  Between your two posts I figured out everything I needed.

You're welcome @cyf. Glad to hear you got it figured out.

Powered by NexWebSites.com -
Certified Authorize.net developers
NexusSoftware
Trusted Contributor