Back

VibeFox Authorize.Net for WooCommerce — Help

Requirements

WordPress: 5.8 or later.

WooCommerce: 7.0 or later, installed and active. Without WooCommerce the plugin shows a notice in the admin area and the payment method is not loaded.

PHP: 8.0 or later.

HTTPS: your checkout must use HTTPS. Accept.js refuses to run on plain HTTP.

Authorize.Net account: you need the API Login ID, Transaction Key and Public Client Key of your Authorize.Net account, and a Signature Key if you use webhooks. Production (account.authorize.net) and sandbox (sandbox.authorize.net) accounts have different credentials. Authorize.Net accounts are available to merchants in the US, Canada, the UK, Europe, Australia and New Zealand.

Currency: the store currency must be USD, CAD, CHF, DKK, EUR, GBP, NOK, PLN, SEK, AUD or NZD, and your Authorize.Net account must settle in it. For other currencies the payment method is hidden at checkout.

VibeFox license key: bought on vibefox.net. One key works on one domain.

Installation

1. In WordPress go to Plugins > Add New > Upload Plugin, choose the plugin ZIP file and click Install Now. You can also upload the wcp_authorizenet_gateway folder to /wp-content/plugins/ by FTP.

2. Click Activate.

3. Open the settings: WooCommerce > Settings > Payments > Authorize.Net > Manage, or click Settings under the plugin name on the Plugins page.

4. Enter your VibeFox license key in the license block at the top of the page and click Activate.

5. Enter the credentials of the sandbox and production accounts (see Configuration). Optionally set up the webhook.

6. Turn on Enable/Disable, choose the Transaction type and save. Test a payment in sandbox mode with the card 4111 1111 1111 1111, any future expiry date and any CVV, then untick Sandbox mode.

Configuration

All settings are on one page: WooCommerce > Settings > Payments > Authorize.Net. Above the fields the page warns you when the site does not use HTTPS (Accept.js works only on HTTPS pages) and when the store currency is not supported (the payment method is then hidden at checkout). The page shows only the credential fields of the selected mode.

General

Enable/Disable: Enable Authorize.Net turns the payment method on or off. Default: off.

Title: the payment method name customers see at checkout. Default: Credit Card.

Description: the text shown above the card form at checkout. Default: Pay securely with your credit card via Authorize.Net.

API credentials

In the Authorize.Net Merchant Interface open Account > Settings > Security Settings. Under API Credentials & Keys copy the API Login ID and create a Transaction Key and a Signature Key. Under Manage Public Client Key copy the Public Client Key. Sandbox and production use different credentials.

Sandbox mode: Use the Authorize.Net sandbox (test transactions, no real charges). Switches the API endpoint, Accept.js and the set of credentials below. Default: on. Untick it to take real payments.

Live API Login ID and Sandbox API Login ID: the API Login ID of the production or sandbox account.

Live Transaction Key and Sandbox Transaction Key: the Transaction Key of that account.

Live Public Client Key and Sandbox Public Client Key: the public key used by Accept.js in the browser.

Live Signature Key and Sandbox Signature Key: needed only for webhooks. It verifies the X-ANET-Signature header of each notification.

Payment

Transaction type: how the card is charged. An authorization expires after 30 days.

Authorize and capture: charges the card immediately; the order becomes Processing (default).
Authorize only: reserves the funds; the order becomes On hold. Capture them later with the order action Capture payment (Authorize.Net) or in the Authorize.Net panel.

Webhooks (recommended)

Without webhooks, orders held by the Fraud Detection Suite or captured or voided in the Authorize.Net panel must be updated by hand. In the Merchant Interface go to Account > Settings > Business Settings > Webhooks and click Add Endpoint. Use the URL shown in this section of the settings. It looks like https://your-site/wc-api/wc_authorizenet/. Select these events:

net.authorize.payment.fraud.approved: a transaction held for review was approved.
net.authorize.payment.fraud.declined: a transaction held for review was declined.
net.authorize.payment.priorAuthCapture.created: an authorization was captured, for example in the Authorize.Net panel.
net.authorize.payment.void.created: a transaction was voided.

Enter the Signature Key of the account in Live Signature Key or Sandbox Signature Key. Webhooks without a valid signature are rejected. For each notification the plugin also asks Authorize.Net for the current status and amount of the transaction before the order changes, so repeated notifications change nothing.

Advanced

Debug log: Log API requests and responses to WooCommerce > Status > Logs, source wcp_authorizenet_gateway. Keys, card tokens and personal data are masked. Default: off.

Delete data on uninstall: Remove the settings and the Authorize.Net order meta when the plugin is deleted. Default: off.

Checkout

The customer chooses the payment method (by default Credit Card) and enters the card number, expiry date (MM/YY) and card code (CVV) on the checkout page. In sandbox mode the form shows a hint with the test card 4111 1111 1111 1111. When the order is placed, Accept.js exchanges the card data for a one-time token in the browser. The card fields have no form names, so the card number and CVV are never sent to your server.

The plugin charges the token through the Authorize.Net API for the order total in the order currency. The billing address, e-mail and IP address are sent with the transaction for address verification and fraud filters. If the payment is approved, the customer goes to the order received page and the cart is emptied.

If the card is declined, the customer stays on the checkout and sees Payment failed: followed by the reason, for example a declined card, a wrong card code or an expired card. Configuration and API errors are not shown to customers: they see a general message, and the details go to the order note and the log. If the store cannot reach Authorize.Net, the customer sees Payment error: unable to connect to the payment gateway. Please try again.

Repeated submits and repeated payment of the same order never charge it a second time. The payment method works on the classic checkout, on the Checkout block and on the Pay for order page. It is compatible with WooCommerce High-Performance Order Storage (HPOS).

The plugin has no saved cards or customer profiles, no WooCommerce Subscriptions or Pre-Orders, no eCheck/ACH, Apple Pay, Google Pay, PayPal or 3-D Secure, no partial capture of an authorization and no automatic currency conversion.

Orders and refunds

Order statuses

Processing or Completed: the card was charged (Authorize and capture), or an authorization was captured. WooCommerce sets Processing, or Completed for orders with only virtual downloadable products. The order note shows the amount, transaction ID, auth code, card type and last four digits. The transaction ID is the Authorize.Net Trans ID.

On hold: the funds are only authorized (Authorize only), or the Fraud Detection Suite held the transaction for review. Approve or decline a held transaction in the Authorize.Net panel; with webhooks the order is updated automatically. An order is also put on hold when a capture reported by webhook does not match the order amount.

Cancelled: a webhook reported that the transaction was declined, voided or expired before the order was paid. If this happens to a paid order, its status is not changed and a warning note is added.

Capture

For an order with an authorization, open the order, choose Capture payment (Authorize.Net) in the order actions and click the update button. The whole order amount minus refunds is captured, and the order is marked paid. If the capture fails, the error is shown and added to the order notes. You can also capture in the Authorize.Net panel; with webhooks the order is updated automatically.

Refunds

Open the order, click Refund, enter the amount and click Refund via Credit Card (the button uses your payment method title). A refund of the full order amount first voids the transaction if it is not settled yet, or an authorization that was not captured. Settled transactions, usually after 24 hours, can be refunded fully or partially. Before settlement a partial refund is not possible: refund the full amount to void the transaction, or try again after settlement. If Authorize.Net does not accept the refund, WooCommerce shows the error and no refund is recorded. A successful refund or void is added to the order notes.

Refunds, captures and webhook checks of an order use the credentials of the mode the order was paid in, so orders of the other mode can still be captured and refunded after you switch Sandbox mode. Keep the credentials of that mode in their fields until those orders are done.

License key

The plugin works with a VibeFox license key from vibefox.net. The license block is at the top of WooCommerce > Settings > Payments > Authorize.Net. Paste the key into License key and click Activate. The block shows the status, for example the date the license is active until and your domain. Use Check now to check the status again, Change key to enter another key and Remove key to remove it from this site. The link Manage licenses and domains in your account opens your vibefox.net account.

One key works on one domain. Removing the key from a site does not free its domain slot. Free the slot in your vibefox.net account.

Without an active key, Authorize.Net is not shown to customers at checkout. If a payment is started anyway, the customer sees This payment method is not available. Please choose another one. Logged-in store managers still see the payment method, marked (unlicensed — visible to admins only), so you can set up and test the plugin before you buy a key. A reminder appears on the Plugins page and on WooCommerce pages. Existing orders are not affected: webhooks are still processed, and captures and refunds work.

When a license expires, the plugin keeps working, but updates and support need a renewal. The status is checked again automatically in the background.

Troubleshooting

Authorize.Net does not appear at checkout: check that the license is active, Enable/Disable is on and the current mode has an API Login ID, Transaction Key and Public Client Key. Check that the store currency is supported; the settings page shows a warning when it is not.

The payment went through, but the order stays On hold: the transaction type is Authorize only (capture it with the order action), or Authorize.Net held the transaction for review. Approve or decline it in the Authorize.Net panel. To have such orders updated automatically, set up the webhook: check that the endpoint URL is exactly the one shown in the settings, that the four events are selected and that the Signature Key of the current mode is entered.

Webhook answers webhooks are not configured: no Signature Key is entered for either mode.

Webhook answers invalid signature: the Signature Key belongs to another account or mode. Create or copy the Signature Key again and paste it into the field of its mode.

Webhook answers verification failed, retry later: the store could not read the transaction from the Authorize.Net API. Authorize.Net retries the delivery.

The card form does not load or shows The secure card form (Accept.js) could not be loaded: the checkout must use HTTPS, and the Public Client Key and API Login ID of the current mode must be correct.

Payment error: the card could not be tokenized: Accept.js did not return a token. The customer should re-enter the card details and try again.

The customer sees a general error: open the order notes or turn on Debug log and look at WooCommerce > Status > Logs, source wcp_authorizenet_gateway. A currency the account does not support is rejected by Authorize.Net.

A partial refund fails because the transaction is not settled yet: refund the full order amount to void the transaction, or retry after settlement, usually within 24 hours.

The license block shows an error: follow the message in the block. For example, if the key is already used on another domain, free a slot in your vibefox.net account and click Check now. If the site address changed, click Check now to activate the key for the new domain. If the license server cannot be reached, the plugin keeps working on the last known status.

Uninstall

Deactivating the plugin keeps all data. To remove it, deactivate and delete it on the Plugins page. The license key and license status of this plugin are always removed. The gateway settings, the Authorize.Net data stored on orders and the logs are removed only if Delete data on uninstall was on. Otherwise they stay for a later re-install. Existing orders keep their payment notes and transaction IDs.

Authorize.Net is a trademark of its respective owner. This plugin is not affiliated with or endorsed by Authorize.Net.