Formstack

Authorize.net

To add the Authorize.net integration go to your form > Settings > Integration > Payments and click "Add" next to the Authorize.net icon. Additionally, you can use the Search Bar to easily find it. Once added, click on Settings by the added integration or click on Authorize.net on the left.
If you do not have an Authorize.net account yet, you can sign up for one here first. After you add the integration, an Authorize.net tab should appear below the Integration Hub tab and the settings should appear.

You will need to enter your API Login ID and API Transaction Key.  To find these, log into your Authorize.Net account, click on Support and then click on Account > Settings > Security Settings > API Login ID and Transaction Key. 
authorizenet3.png
Mapping Form Fields to the Integration Settings
Since Authorize.net is an on-form payment processor, you must have a credit card field and an expiration date field on your form to submit to Authorize.net. You will also need at least one field that contains a price value.
Once you have those fields on the form you can map them using the ---Price field-- and --Quantity Field--- drop-down options in the integration.

There's plenty of optional data you can pass on to Authorize.Net as well, such as shipping, tax, card verification code, and customer information.
Recurring Payments
Authorize.net allows for single payments or Subscription (recurring) payments (Authorize.Net ARB Service sign up required). You will need to decide how often the customer is charged (Billing Cycle) and how many times (Total Occurrences).

Note: Recurring Payments do not happen in real time. They are processed at around 
2:00AM PST on their scheduled payment dates. Therefore the first scheduled transaction will not be sent to the customer's bank for authorization until 2:00AM PST on the start date that you specified. If you create a start date equal to the creation date, the first scheduled payment will not process until after 2:00AM the following day.

Handling Multiple Items
You can also set your form up to pass info for multiple items to Authorize.Net instead of a single item. If you choose to map to multiple items, each item with a price needs to be in 
it's own separate field with it's own quantity field if that is applicable.
When setting up your integration, change the "
Item  list " to "Multiple Items" then add an item for each product you're selling on your form. Map the individual price fields and (if applicable) the associated quantity fields. If you don't map a quantity field it will default to "1".

The integration will do the math for you behind the scenes: (Item 1 Price x Item 1 Quantity) + (Item 2 Price x Item 2 Quantity) and so on...

Note: You must have at least one price field mapped in order for the integration to turn on.

Security
After you have your mapping in place, you'll also need to adjust your security settings since you are accepting payment information on the form. SSL must be enabled under Settings > Security, and if you're storing the credit card number in the Formstack database (not recommended, but optional in the Authorize.net integration settings), you need to enable data encryption as well.

Submit Action
Under the Settings > Emails & Redirects tab in the After the Form is Submitted section, a Submit Action will automatically be created to "Submit to Authorize.net." You can add Routing Logic to this Submit Action if you only want to send to Authorize.net if, for example, the users  chooses  "credit card" instead of "check" on a "Payment Type" field you have added to your form. Click here to learn more about offering multiple payment options!

Testing Authorize.Net  
There are two servers you can use with Authorize.Net, our Live server or our Developer server.  Our Live server works with both your normal Authorize.Net account's live and test modes.  Our Developer server only works with an Authorize.Net sandbox/developer account, not a regular Authorize.Net account in test mode.  You can use Formstack in Live mode and your normal Authorize.net account in Test mode, however.​
Error Handling

You can choose to "Allow Submission If Integration Fails" to ensure you still receive all submitted data even if the integration failed. With this box checked, ALL submissions will be added to the database whether or not their payment was successful. This could be problematic if you only want to send Confirmation Emails to those who have successfully paid or only want to receive Notification Emails for those who have paid.

There is also a box to include an email address if the integration fails (recommended). This email will be sent by Authorize.net and will include details for why the submission failed. If you add multiple email address to this field, make sure you put them each on a separate line (no commas). 

FAQs: 

Can I Change the Endpoint to (Insert Random Authorize.Net Reseller Here)?
No.
What method are you using to integrate with Authorize.Net?

We're using the Advanced Integration Method (AIM).

Authorize.net offers eCheck processing - Can I use the Formstack Authorize.net integration to process payments via electronic check?
Not at this time.