WooCommerce Authorize.Net

Overview ↑ Back to top

WooCommerce Authorize.Net Gateway integrates with Authorize.Net payment services to provide secure and powerful payment processing for your store. With this gateway, you can accept credit cards and eChecks and let customers save their payment details to your site for fast and easy checkouts. This payment gateway includes full support for WooCommerce Subscriptions and WooCommerce Pre-Orders!

Migrating from a different Authorize.Net plugin? See our upgrading section below.

This plugin also includes Accept.js from Authorize.Net for improved security and decreased PCI compliance responsibility. Customer credit card information is handled directly by Authorize.Net to offload some security concerns. Click here to learn more about Accept.js

Looking for details on 3D Secure? See this FAQ entry.

Requirements ↑ Back to top

If you plan to use this plugin with Subscriptions, Pre-Orders, or want to allow customers to save their payment details, the Customer Information Manager (CIM) feature must be enabled on your Authorize.Net account (additional monthly costs may apply).

Installation ↑ Back to top

  1. Ensure your store meets the plugin requirements.
  2. Download the extension from your WooCommerce dashboard.
  3. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded.
  4. Click Install Now and then Activate.
  5. Click Configure and read the next section to learn how to setup the plugin.

Getting Started ↑ Back to top

To begin using Authorize.Net, you must first connect the plugin to your Authorize.Net account. Follow the steps below to find your API credentials on Authorize.Net and setup the plugin:

  1. Login to your Authorize.Net account.
  2. Go to Accounts > Settings > API Credentials & Keys.
  3. Copy your API Login ID.
  4. Select the New Transaction Key radio button and click Submit. Copy the Transaction Key.
  5. If you want to setup webhooks, select the New Signature Key radio button and click Submit to generate the Signature Key.
  6. Now, log into your site and go to WooCommerce > Settings > Payments and select WooCommerce Authorize.Net.
  7. Paste the API Login ID, API Transaction Key, and API Signature Key, if applicable.
  8. Click Save Changes.

That’s it! You are now ready to start accepting credit cards via Authorize.Net! Keep reading if you want to tweak settings and customize the checkout process.

Credit Card Settings ↑ Back to top

You can configure the following settings for the Authorize.Net credit card gateway:

  • Enable / Disable: Allow customers to use this gateway to checkout.
  • Title: The text shown for the payment during checkout and on the Order Received page.
  • Description: The text shown under the gateway’s title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with test credit card numbers.
  • Card Verification (CSC): Require customers to enter their card security codes when checking out. This can be useful if you have requirements in your Authorize.Net account for CV2 verification.
  • Transaction Type: Controls how transactions are submitted to Authorize.Net. Select “Charge” to automatically capture payments. If you select “Authorization”, you must manually capture and settle payments in your Authorize.Net control panel or on the WooCommerce orders screen after the transaction has been submitted. This defaults to “Charge”.
  • Charge Virtual-Only Orders: If Transaction Type is set to “Authorization”, enable this to automatically capture charges for orders with only virtual products. For downloadable products, this will grant downloads access right away.
  • Capture Paid Orders: If Transaction Type is set to “Authorization”, enable this to automatically capture charges when orders move to a paid status.
  • Accepted Cards: Determines which card logos are displayed during checkout. This has no impact on which cards are accepted by your merchant account.
  • Tokenization: Let customers save their payment methods for future use at checkout. This is required for Subscriptions or Pre-Orders.
  • Detailed Decline Messages: Display detailed messages to customers to provide reasoning for declines instead of a generic error message when possible. Click here to read more about detailed decline messages.
  • Debug Mode: Enable when you’re having issues processing transactions. You can choose to log API requests directly on the checkout page, save them to the WooCommerce > Status > Logs page, or both. As a best practice, please do not enable this setting unless you’re having issues with the plugin.
  • Environment: Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account. Note: This is not the “test mode” that is listed under your account. This is an entirely separate sandbox environment that requires a separate login and separate API credentials. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.
  • Share connection settings: If using the credit card and eCheck gateways, select this setting to share credentials between the gateways so you don’t have to enter them twice.
  • API Login ID: Follow the steps above to retrieve your API Login ID.
  • API Transaction Key: Follow the steps above to generate your API Transaction Key.
  • API Signature Key: Optional. Only required if you want to enable webhooks for Authorize.Net account updates. Follow the steps above to generate your API Signature Key.
  • Payment Form Type: Choose to display the payment form inline or in a lightbox. Select “Inline” to support PCI-DSS SAQ A-EP compliance.

eCheck Settings ↑ Back to top

You can configure the following settings for the Authorize.Net eCheck gateway:

  • Enable / Disable: Allow customers to use this gateway to checkout. You must enable eChecks on your Authorize.Net account to use the eCheck gateway. Follow the process below under eCheck Issues to get eChecks setup and enabled.
  • Title: The text shown for the payment during checkout and on the Order Received page.
  • Description: The text shown under the gateway’s title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with a test bank account number.
  • Tokenization: Let customers save their payment methods for future use at checkout. This is required for Subscriptions or Pre-Orders.
  • Authorization: Display an authorization message during the checkout process.
  • Authorization Message: If Authorization is enabled, enter the message you want to show to your customers. You can use the following merge tags:
    • {merchant_name}: Your store name
    • {order_date}: Date of purchase
    • {order_total}: Total order value
  • Recurring Authorization Message: If Authorization is enabled and WooCommerce Subscriptions is active on your site, you can enter the message you want to show your customers for recurring payments.
  • Detailed Decline Messages: Display detailed messages to customers to provide reasoning for declines instead of a generic error message when possible. Click here to read more about detailed decline messages.
  • Debug Mode: Enable when you’re having issues processing transactions. You can choose to log API requests directly on the checkout page, save them to the WooCommerce > Status > Logs page, or both. As a best practice, please do not enable this setting unless you’re having issues with the plugin.
  • Environment: Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account. Note: This is not the “test mode” that is listed under your account. This is an entirely separate sandbox environment that requires a separate login and separate API credentials. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.
  • Share connection settings: If using the credit card and eCheck gateways, select this setting to share credentials between the gateways so you don’t have to enter them twice.
  • API Login ID: Follow the steps above to retrieve your API Login ID.
  • API Transaction Key: Follow the steps above to generate your API Transaction Key.
  • API Signature Key: Optional. Only required if you want to enable webhooks for Authorize.Net account updates. Follow the steps above to generate your API Signature Key.
  • Payment Form Type: Choose to display the payment form inline or in a lightbox. Select “Inline” to support PCI-DSS SAQ A-EP compliance.

eCheck Setup with Authorize.Net

To enable eCheck processing on your Authorize.Net account:

  1. Setup an eTicket and ask for the “WEB” eCheck type to be enabled. Be sure you are an account owner and know your gateway ID.
  2. WEB transactions are usually enabled within 2 business days, but there is a funding hold automatically placed on your account – you can take funds in, but can’t take them out until you pass another security check with the underwriting department.
  3. To expedite this process, call the Authorize.Net underwriting department so they can check your website while on the phone with you. They’ll ensure you have a valid SSL on cart/checkout and prominently placed terms of use and privacy policy pages.
  4. Once you’ve met these requirements, the funding hold will be removed.

Webhook Setup ↑ Back to top

Webhooks notify your WooCommerce site when customer profiles and payment profiles are deleted from your Authorize.Net account. This is helpful when using WooCommerce Subscriptions to ensure that payment token removals are logged on your site for troubleshooting purposes.

Follow the steps above to generate your API Signature Key, which you can enter in the plugin settings to enable webhooks. Then, click the link in the settings notice to enable webhooks. This will push the required information into your Authorize.Net account.

WooCommerce Authorize.Net enable webhooks

Authorize.Net will now notify your site when the customer or payment profiles are deleted from your account. We do, however, recommend avoiding changes within your account when possible.

WooCommerce Authorize.Net CIM webhook notifications

Managing Orders ↑ Back to top

As a site administrator, you can use the WooCommerce Authorize.Net gateway to manually capture charges and automatically refund/void transactions as needed.

Capture Charges ↑ Back to top

If you are using version 2.0+ of the Authorize.Net gateway and the Transaction Type setting is set to “Authorization”, you can manually capture these payments from the WooCommerce Orders page. Click here to read more about capturing charges.

Note: If your Transaction Type setting is set to “Charge”, you cannot use the Capture button. Attempting to do so will result in the following error message:
3 (E00027) - The transaction was unsuccessful. Error Code: 33 - A valid referenced transaction ID is required.

Automatic Refunds ↑ Back to top

If you are using version 2.0+ of the Authorize.Net gateway and version 2.2+ of WooCommerce, you can process refunds directly in WooCommerce without needing to log into your Authorize.Net account. Click here to read more about issuing automatic refunds from WooCommerce.

Void Transactions ↑ Back to top

You can void transactions directly in WooCommerce in the following circumstances:

  • If your Transaction Type setting is set to “Authorization”, you can void when the transaction has been authorized but not yet captured.
  • If your Transaction Type setting is set to “Charge”, you can void when the transaction has not yet been settled (e.g. funds haven’t been transferred from the customer’s account to your Authorize.Net account).

Authorize.Net does not accept partial voids. If a transaction is no longer eligible to be voided, you must refund the order. Click here to read more about voiding transactions in WooCommerce.

Gateway Features ↑ Back to top

Your customers can take advantage of the following features when your site uses WooCommerce Authorize.Net.

Saving Payment Methods ↑ Back to top

Customers can save payment methods during the checkout process or from their My Account area. This lets them quickly select payment details during future checkouts and also lets your site support Subscriptions and Pre-Orders.

To manage their saved payment methods, customers can go to My Account > My Payment Methods. From here, they can add new payment methods (credit cards or eChecks), set their default method, and delete any old or expired methods. Click here to read more about managing saved payment methods.

WooCommerce Authorize.Net CIM: my payments
Customer Saved Payment Methods

Notes:

Subscriptions / Pre-Orders Support

WooCommerce Authorize.Net supports all features of WooCommerce Subscriptions and WooCommerce Pre-Orders for both credit cards and eChecks (if enabled).

Accept.js ↑ Back to top

Version 3.0+ of WooCommerce Authorize.Net includes automated support for Accept.js. Once you have configured the gateway, we can retrieve the information required to use Accept.js from your Authorize.Net account – no extra configuration steps required!

This feature means that customer payment information is handled directly by Authorize.Net, meeting the lower level PCI SAQ A-EP compliance level. Accept.js is handled behind the scenes, so your customers won’t notice any change to their checkout process. Click here to learn more about Accept.js.

Enhanced Checkout Form ↑ Back to top

Authorize.Net supports an enhanced checkout form that improves the checkout experience on mobile and desktop devices. Click here to read about the enhanced payment form.

Note: The appearance of your checkout form may vary based on your site’s theme.

Frequently Asked Questions ↑ Back to top

Q: Why am I receiving an error message on subscription renewals saying that Card Code is required? It’s not required in my plugin settings!
A: If you’re seeing an error like “Authorize.Net Payment Failed (3 E00027): Card Code is Required…”, it’s likely that Card Code is required on your Authorize.Net account. For PCI compliance and security reasons, Authorize.Net cannot store CSCs for subscription renewals, so card codes are unavailable for renewal orders. If your Authorize.Net account requires these, the orders will fail. Click here to learn how to disable this requirement.


Q: Why don’t Subscriptions display inside the Authorize.Net control panel?
A: Subscriptions aren’t shown in Authorize.Net because the gateway doesn’t use ARB (automated recurring billing). It tokenizes the customer’s payment method and then the Subscriptions plugin handles charging the payment method. This is far more flexible than ARB and thus supports a lot of features, such as changing payment dates and amounts, that ARB can’t handle.


Q: Why did I receive a “test transaction successful” email?
A: During checkout, the extension validates the payment information entered by the customer (i.e. confirms that the card number, expiration date, etc. are correct). This “test transaction” does not charge the customer, but generates an email to the merchant. You can email support@authorize.net to have them disable this email notification to you.


Q: Can I process automatic refunds with eChecks?
A: No – automatic refunds from WooCommerce can only be processed for credit card transactions.


Q: I’m migrating sites – can I import customer IDs and payment profile IDs to my new site?
A: The Authorize.Net plugin stores the customer ID, payment profile ID, and shipping profile ID as meta fields, so you could use an export plugin like Customer/Order CSV Export to pull down the IDs from your old site and use an import plugin like Customer/Order/Coupon CSV Import Suite to import these IDs to you new site! Other export/import plugins might work well here, too, so long as they are capable of exporting and importing customer/user meta.


Q: My customers get email receipts from WooCommerce and Authorize.Net. How do I get rid of Authorize.Net receipts?
A: You can disable these emails in your Authorize.Net account. Click here for instructions on disabling customer email receipts.


Q: How do I capture a higher amount than what is authorized (like a gas station or restaurant)?
A: Authorize.Net (along with most any eCommerce payment processor) cannot do this with card-not-present transactions, such as online payments. For these payments, you can onlycapture up to the value of the authorization: “As soon as the product is shipped, the merchant can capture an amount up to the amount of the authorization.”

When gas stations and restaurants do this, they’re using a particular POS system that gives them a certification to capture a certain percentage over the authorized amount. This functionality isn’t available for eCommerce systems, so this isn’t possible on your WooCommerce site or with the Authorize.Net plugin.


Q: Authorize.Net supports Apple Pay for web payments. Can I use this in my store?
A: Authorize.Net CIM contains a framework for Apple Pay, but it can only be enabled by developers, as the certification process requires developer-only tools. If you work with a developer and would like to add Apple Pay to your store, please click here to review the setup instructions and requirements. Please note that configuring Apple Pay support for this plugin is considered a customization and is not covered by our support policy.


Q: Does this plugin support 3D Secure? I need to meet Strong Customer Authentication (SCA) requirements.
A: WooCommerce Authorize.Net does not support 3D Secure at this time — Authorize.Net’s API does not support accepting the customer data required to meet 3D Secure v2.0 requirements (which is required for folks seeking to comply with PDS2 regulations / SCA requirements). If you need to enable SCA, please ask your Authorize.Net representative about migrating you to CyberSource. You can read more about PSD2 and Authorize.Net here, and see updates on 3D Secure with WooCommerce CyberSource here.

Troubleshooting ↑ Back to top

Authorize.Net Test Credentials ↑ Back to top

To run tests with this plugin, you will need a set of dedicated test credentials from Authorize.Net. Your live credentials cannot be used in “Test” mode. When you change the Environment setting to “Test”, the Connection Settings fields will remove your live credentials and let you enter your test credentials. When you switch back to “Production”, the plugin will restore your live credentials.

Note: Do not set your production accounts into test mode from within your Authorize.Net account – this returns dummy data for live transactions, but does not work with the plugin’s test mode, since you’re still using production credentials.

Authorize.Net Error Codes ↑ Back to top

Authorize.Net provides many different error/response codes that can provide helpful information about what caused an error during payment processing. Click here to review Authorize.Net’s Response Code Reference. You can enter the code in this reference tool to see the cause of the error. In some cases, such as a transaction being held for review or declined, the plugin can’t resolve the issue. In those cases, you must fix the problem from your Authorize.Net account.

Notes:

  • Orders with Response Code = 4 will be approved, but can be cancelled manually in the WooCommerce admin and Authorize.Net Merchant Area area later if they fail review.
  • Be sure to have “Partial Authorization” turned off in your Authorize.Net Merchant Area. This will restrict orders with with Response Code = 4 and Response Code = 295 from being approved. “Allow Partial Payments” is off by default, but to verify it is off, follow these steps:
    • Login to your Authorize.Net merchant area.
    • Go to Account > Partial Authorization.
    • Ensure that Allow Partial Payments is unchecked and click Submit to save your changes, if applicable.

Required Field Errors ↑ Back to top

If you receive an error like (E00027) - The transaction was unsuccessful. Error Code: 33 - [Field Name] is required., your Authorize.Net account is likely setup to require a field that our plugin cannot send. These errors can occur on orders, refunds, and void transactions.

To resolve this issue, you should remove all field requirements from your Authorize.Net account by following the steps below:

  1. Login to your Authorize.Net Account.
  2. Go to Account > Payment Form > Form Fields.
  3. Uncheck the Required boxes for all fields.
  4. Click Submit.

Accept.js Errors ↑ Back to top

If you receive an error like Accept.js Error: payment nonce is missing, your checkout page is likely not loading the Accept.js file when our plugin expects it to. This is usually caused by a JavaScript conflict of some kind, typically with your theme or another plugin. Often times, optimization plugins interfere with how JavaScript loads on your checkout page and cause this error. A few conflicting plugins to look for are:

  • Autoptimize
  • SG Optimizer
  • Hummingbird Pro

If you are using one of these plugins, disabling the plugin completely or adjusting its settings so they don’t optimize your checkout page should resolve the error.

eCheck Issues ↑ Back to top

If you enabled eChecks in the Authorize.Net gateway plugin but have not enabled WEB eCheck enabled on your Authorize.Net account, you may see errors like [Code 246] - This eCheck.Net type is not allowed. Click here for instructions on setting up eChecks on your Authorize.Net account.

Refund Issues ↑ Back to top

When attempting to process an automatic refund, you may see the following error message:

Oops, you cannot partially void this order. Please use the full order amount.

This means that you’re trying to perform a partial refund, but the charge hasn’t been settled yet. This can happen when you try to refund within a day of purchase. The Authorize.Net plugin tries to void this order, since the funds haven’t been transferred yet, but Authorize.Net doesn’t permit partial voids.

To resolve this, please wait until the charge has settled (about 24 hours after the order was charged) before trying the refund again.

Failed Subscription Renewals ↑ Back to top

The most frequent cause of failed subscription renewals is the “Payment token is missing or invalid” error. This occurs when payment data has changed on your site or within Authorize.Net for this user, but the subscription record hasn’t been updated.

For a renewal to process successfully, a few conditions must be met:

If the customer profile ID and payment profile ID (payment token) don’t match between the user and subscription records, any automated renewal orders will fail until you update the subscription record IDs to match the user record IDs.

We have a few recommendations for preventing mismatches between user and subscription records:

  • Don’t use the same Authorize.Net API credentials on multiple sites. If customer payment information is changed on one site but not another site, your payment profile information may no longer sync with your Authorize.Net account properly.
  • If you take customer information over the phone, be sure to update the payment information on your site instead of on Authorize.Net. Our plugin will push changes from your site to your Authorize.Net account, but won’t be notified of payment information changes in Authorize.Net, so it can’t update your site’s subscription records.
  • If you make any changes to customer or payment profile information from your Authorize.Net account, be sure to also update the subscription records on your site. You should double-check customer profile ID and payment profile ID for the subscription any time you make changes in Authorize.Net.
  • If your customers want to update a subscription payment method, they must use the subscription “Change Payment” process. Simply adding a new payment method to their site account won’t change the subscription’s payment method. If you’re doing this for them, we recommend using the free User Switching plugin to impersonate their account.

Other Issues ↑ Back to top

Having a different problem? Follow these steps to make sure everything is setup correctly before posting a support request:

Upgrading from another plugin ↑ Back to top

If you’re upgrading from a legacy WooCommerce.com integration (Authorize.Net AIM, DPM, or SIM / Accept Hosted), you will see a notice in that plugin to migrate to this integration. Your existing plugin subscription has automatically been converted to a subscription for the new and improved Authorize.Net integration! You can migrate your site to this integration seamlessly with a couple of clicks.

You should be connected to WooCommerce.com to complete this migration. If your site has not been connected to WooCommerce.com, you will be prompted to connect first. (Check out this document for help, or see our FAQs below if you can’t connect.)

WooCommerce Authorize.Net migration needed - not connected

Once connected to WooCommerce.com, you’ll see a notice to migrate to this version of the plugin when you’re ready.

WooCommerce Authorize.Net migration needed - connected

With a single click, this will automatically take care of the full migration:

  • The unified plugin (this new integration) will be downloaded from your WooCommerce.com account and installed.
  • This plugin will be activated.
  • Your settings, such as your Authorize.Net credentials, will be migrated over to the new plugin automatically.
  • Payments will continue to process seamlessly, as will refunds, charge captures, and more.

WooCommerce Authorize.Net migration complete

Upgrade FAQs ↑ Back to top

Q: What if I’m unable to connect to WooCommerce.com? (For example, if your site sells CBD oil products.)
A: You can still migrate! You’ll need a couple more steps, though:

  1. Download the new Authorize.Net integration from your WooCommerce.com account (you will already have a new subscription for it).
  2. Install this plugin under Plugins > Add New > Upload.
  3. Activate this plugin.

Once this new, unified plugin is activated, it will handle migrating your settings automatically for you.


Q: Why were the AIM / CIM / DPM / SIM plugins replaced with this one?
A: When we originally built all of the various Authorize.Net integrations for WooCommerce, it was because Authorize.Net had several different payment processing products. This is no longer the case anymore, so it was confusing to have to choose the right plugin. Since Authorize.Net’s offerings have become more streamlined, we needed to migrate all WooCommerce stores to use this version of the plugin, which supports the latest and greatest offerings from Authorize.Net.



Q: What has changed from my previous plugin?
A: You’ve gained some new features! 🙂 “Which features” depends on what plugin you were using previously. However, all Authorize.Net users now have the ability to let customers save payment methods, use WooCommerce Subscriptions, use WooCommerce Pre-orders, and more. You can also choose to keep your checkout form inline (helping you meet SAQ A-EP PCI compliance standards) or use a lightbox checkout form (helping you meet SAQ A PCI compliance standards).


Q: What will happen to my plugin subscription?
A: Your WooCommerce.com account was automatically gifted a new subscription for this plugin. Here’s how we handled the change:

  • You have been gifted a subscription for the new plugin that ends on the same date as your original plugin subscription.
  • If your plugin subscription was set to auto-renew, we’ve turned it off, and enabled auto-renew on the new plugin subscription. If your subscription did not auto-renew, we’ve left it disabled.
  • Your previous plugin subscription is still in your account for now, but it will end on its original date, and cannot be renewed again (as the legacy plugins are now retired).

Q: What if the migration doesn’t go smoothly?
A: The worst-case scenario is that we’re not able to migrate the plugin’s settings, and you would need to update them manually. This is a pretty foolproof process, though. If you’d like to double-check the migration, we recommend completing it at an off-peak time, then double-checking a test payment with your store. Our support team is also happy to help out with any questions or migration concerns!

For Developers ↑ Back to top

Here are a couple of example snippets for some of the Authorize.Net CIM filters in place:

Default the “Securely Save to Account?” checkbox on the payment form to checked

Adjust authorize-only transaction order status from “On hold” to something else

Questions & Support ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Please check out our troubleshooting tips and frequently asked questions for common issues or contact support via the help desk if you need more help.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top