cancel
Showing results for 
Search instead for 
Did you mean: 

Combining One Time Payment with Recurring Payment in one transaction

I have a form which includes:

 

  1. a sign up fee (one time fee)
  2. a monthly fee (recurring)
  3. a yearly fee (recurring)
  • Every transaction will include a monthly fee.
  • Every transaction may (or not) include a one-time fee and/or yearly fee (depending on what the user selects).

 

My question is:

 

Can I handle this with one request to the API? (my research suggests no thus far)

 

Originally I thought I could do this all through the ARB API by using the trialOccurrences + trialAmount fields to capture the first monthly fee and any one-time fee if applicable however whilst that may work for a one-time plus monthly recurring payment, if the user also selects an option that introduces a yearly charge then I'm out of luck it would seem since the "length" property can only be specified for one recurring type.

 

Does anyone have any thoughts on the best strategy to employ?

Thank you.

bonafide2000
Member
1 ACCEPTED SOLUTION

Accepted Solutions

Hello @bonafide2000

 

While you can't do it today with a single API Call, you can do it in a single set of steps:

 

  1. Use createTransactionRequest for the sign up fee, set the createProfile flag as true.  If the transaction request is successful, it will create a customer which you'll use for the next step
  2. If you need to create a monthly fee, use Create a Subscription from Customer Profile from step 1
  3. If you need to create a yearly fee, use Create a Subscription from Customer Profile from step 1

If your want to reduce PCI Scope, check into using Accept.js or Accept Hosted for your initial payment.

 

You are welcome to post this as a new feature using our Ideas forum. This will allow others to vote on and make suggestions to improve the request.

Richard

View solution in original post

RichardH
Administrator Administrator
Administrator
4 REPLIES 4

Hello @bonafide2000

 

While you can't do it today with a single API Call, you can do it in a single set of steps:

 

  1. Use createTransactionRequest for the sign up fee, set the createProfile flag as true.  If the transaction request is successful, it will create a customer which you'll use for the next step
  2. If you need to create a monthly fee, use Create a Subscription from Customer Profile from step 1
  3. If you need to create a yearly fee, use Create a Subscription from Customer Profile from step 1

If your want to reduce PCI Scope, check into using Accept.js or Accept Hosted for your initial payment.

 

You are welcome to post this as a new feature using our Ideas forum. This will allow others to vote on and make suggestions to improve the request.

Richard

RichardH
Administrator Administrator
Administrator

Hi @RichardH

Thank you very much for your reply, I suspected this would be the case also thank you for the work flow suggestion.

 

I do have one question concerning the implementation of Accept.js; if I go down this route and issue the initial request via Accept.js to reduce PCI compliance exposure, what property do I assign the response data to in my server side method (I am using the PHP SDK).

 

Am I passed the data back to Authorize.net via a opaqueData/dataValue/dataDescriptor parameter using the PHP SDK?

 

Thank you.

@bonafide2000

 

Correct, the nonce is passed using opaqueData.  

 

Richard

@RichardH thank you