Payment Gateway for Authorize.net for WooCommerce
Description
Payment Gateway for Authorize.net for WooCommerce by Easy Payment is a secure and feature-rich solution for accepting credit card payments via Authorize.net. Customers stay on your website during checkout, creating a seamless experience.
This plugin uses Authorize.net Accept.js to tokenize credit card details before they reach your server—ensuring full PCI-DSS SAQ A-EP compliance. It supports one-time and recurring payments with full integration for WooCommerce Subscriptions and the modern Checkout Block system. Developed by an Official Authorize.net Partner, this plugin ensures high performance and reliability.
Payment Methods
- Credit & Debit Card Payments
- eCheck (ACH)
- Google Pay
- Apple Pay (Beta)
Features
- Accept credit card payments using Authorize.net Accept.js
- Process refunds and voids from the WooCommerce order screen
- Pre-authorization and capture later (“Authorize Only”) supported
- Save cards for future purchases with secure tokenization
- Works with WooCommerce Subscriptions for recurring billing
- FunnelKit compatible for upsell and cross-sell flows
- Fully compatible with WooCommerce Checkout Blocks
- PCI compliant using tokenization (SAQ A-EP)
- Responsive credit card form for all devices
- Logging and debug tools for development and troubleshooting
Supported Card Types
- Visa
- MasterCard
- American Express
- Discover
- JCB
- Diners Club
Integration Compatibility
- WooCommerce Subscriptions
- WooCommerce Checkout Blocks
- WooCommerce Pre-Orders
- FunnelKit Checkout / FunnelKit Upsell
External Services
This plugin connects to several Authorize.net services to process payments securely and provide related functionality:
-
Authorize.net API
Used for processing payments, issuing refunds, storing payment profiles, and handling subscriptions.- Data sent: transaction amount, customer name, address, and tokenized card data
- Endpoints used:
- https://api.authorize.net/xml/v1/request.api
- https://apitest.authorize.net/xml/v1/request.api
-
Accept.js
Used to tokenize credit card details in the browser before they reach your server.- Data sent: raw card number, expiry, CVV (sent directly to Authorize.net via JavaScript SDK)
- Endpoints used:
- https://js.authorize.net/v1/Accept.js
- https://jstest.authorize.net/v1/Accept.js
-
Webhook Services
Used to receive updates from Authorize.net about transaction status, subscription events, etc.- Endpoints used:
- https://api.authorize.net/rest/v1/webhooks
- https://apitest.authorize.net/rest/v1/webhooks
- Endpoints used:
-
Merchant Signup Links
Provides a link to register or log in to an Authorize.net merchant account.- Endpoints:
- https://account.authorize.net/
- https://sandbox.authorize.net/
- https://account.authorize.net/signUpNow?resellerId=27457
- No personal data is sent by the plugin automatically.
- Endpoints:
Terms of Service: https://www.authorize.net/about-us/terms.html
Privacy Policy: https://www.authorize.net/about-us/privacy.html
Installation
- Upload the plugin to the
/wp-content/plugins/directory. - Activate it via Plugins > Installed Plugins.
- Go to WooCommerce > Settings > Payments > Authorize.net Credit Card.
- Enter your Authorize.net credentials: API Login ID, Transaction Key, and Signature Key. The Public Client Key required by Accept.js is detected and stored automatically.
- Enable the gateway and configure optional settings.
Screenshots
Faq
Does this plugin support subscriptions?
Yes. It fully supports WooCommerce Subscriptions using saved cards via tokenization.
Why is Accept.js required?
Accept.js is used to tokenize card data in the browser before it’s sent to your server, making the integration PCI compliant.
Can I issue refunds directly from WooCommerce?
Yes. You can process refunds and voids from the WooCommerce order admin.
Will customers leave my site to complete the payment?
No. All payment processing happens inline using Accept.js—customers stay on your checkout page.
Does it support WooCommerce Checkout Blocks?
Yes. This plugin is fully compatible with the block-based Cart and Checkout experience.
Reviews
Excellent Plugin, Excellent Customer Service
By nworbdier on July 16, 2026
We were having issues on our store and reached out to the team and it was resolved in one day. Their slack support is also amazing and they act like they really care about your issue on a personal level.
Would HIGHLY recommend to anyone on the fence for this plugin. It’s actually better than the official Authorize.net plugin I installed. The reason I switched to this one is because the official plugin was blocking a function and wouldn’t work for our store at all. EasyPayment all the way!
Top tier support!
By meroving on May 9, 2026
I’m really impressed with the team’s fast support. Communication was smooth, they reacted quickly to every request, and the plugin is working well too! Very satisfied. Thanks!
The ONLY one that works!
By alienjackhammer on September 17, 2025
I’ve tried EVERY authorize.net plugin. I even paid for two of them. None of them worked. The biggest problem with most of the plugins; is that they do not work with woocommerce blocks. And the ones that do; don’t show correct response codes and do not allow saved credit card info. I’m very pleased with the product AND the support. I had an issue and the developer responded right away. If you are looking for an authorize.net plugin that actually works; this is the one. Can’t recommend enough!
Changelog
1.0.29
- Fixed – “Missing or invalid card token” could continue after updating to 1.0.28 on sites using W3 Total Cache. W3 Total Cache combines scripts into files whose names do not change when a plugin is updated, and tells browsers and CDNs to keep them for a year, so the old card script kept being served. The plugin’s checkout scripts are now kept out of W3 Total Cache’s combined files and load from their own versioned URLs, so updates take effect immediately. Thanks to @megunticook for the report and the logs.
- Fixed – On the classic checkout, retrying a card payment after a decline failed with “Transaction failed with no response code” because the already-used Accept.js token was sent again (Authorize.Net error E00114). Every attempt now gets a fresh token, for card and eCheck payments alike. Thanks to @moonmotherhemp for the report.
- Improved – When Authorize.Net rejects a payment request before creating a transaction, its error code and message are now always written to the log and shown in the order note. If the payment details have expired or were already used, customers are asked to re-enter them and told they have not been charged.
- Fixed – eCheck payments did not work on the Checkout block: Place Order did nothing, and once the bank details were tokenized the charge failed with Error 153 (Unable to decrypt data).
- Fixed – A partial refund on a card payment that had not yet settled voided the whole transaction while WooCommerce recorded only the partial amount. Before settlement only a full refund (void) is now allowed, with a clear message; partial refunds work as before once the payment has settled.
- Fixed – Refund order notes always showed an amount of $0.00, and failed refunds showed a generic “Refund failed.” instead of Authorize.Net’s reason.
- Fixed – Saving a card at checkout triggered a WooCommerce “called incorrectly” notice for
_payment_tokens. Saved cards are now linked to orders through WooCommerce’s payment token API.
1.0.28
- Fixed – “Missing or invalid card token” on checkout when a caching or optimization plugin (e.g. W3 Total Cache with non-blocking JavaScript) loaded the plugin’s card or eCheck script before WordPress’s translation script. The script stopped on its first line, so the card was never tokenized and the order was rejected. Both scripts now wait for their dependencies before starting, and show a clear message instead of failing silently if Authorize.net’s Accept.js is unavailable. Thanks to @megunticook for the report and the logs.
1.0.27
- Improved – Tested with WordPress 7.1.3 and WooCommerce 11.2.1.
- Fixed – The WooCommerce Checkout block could not be edited in the block editor while the Credit / Debit Card method was enabled: the editor showed “Your site doesn’t include support for the Checkout block” and offered to convert it to Custom HTML. The plugin’s card script listed WooCommerce’s wc-credit-card-form script as a dependency, but WooCommerce only registers that script on the front end, so inside wp-admin the unresolved dependency stopped the Checkout block’s editor script from loading. The dependency is now only added when the script is registered. The front-end checkout was not affected. Thanks to @brightsol for the report and the analysis.
1.0.26
- Fixed – The order’s shipping address was not sent to Authorize.net with the payment, so transaction details in the Merchant Interface showed no Ship To information and merchants using shipping-address fraud filters (Advanced Fraud Detection Suite) had legitimate orders flagged for review. Every charge – card, eCheck, Google Pay, Apple Pay, saved cards, subscription renewals and pre-order releases – now includes the WooCommerce shipping address. Orders without a shipping address (virtual or downloadable products) are unchanged. Thanks to @donnaploof for the report.
- Added – Apple Pay payments via Authorize.Net (beta), with the same coverage as Google Pay: a payment method on the classic checkout and the Checkout Block, plus an express Apple Pay button on the Cart, the classic checkout and the block-based Cart and Checkout (configurable placement, button label, color, shape, width and height). Apple Pay is released as a beta – it is disabled by default, and we welcome reports from early adopters on the support forum.
- Added – Apple Pay settings tab under the Authorize.Net settings: Apple Pay Merchant ID, Merchant Identity Certificate and Key (used server-to-server for Apple’s merchant validation), and a Domain Association File field that the plugin serves automatically at /.well-known/apple-developer-merchantid-domain-association for Apple’s domain verification.
- Added – Apple Pay Express collects the shipping address, shipping method and billing address from the Apple Pay sheet, quotes live WooCommerce shipping rates inside the sheet, and creates the order server-side exactly like Google Pay Express – including held-for-review handling, fees, coupons and taxes.
- Improved – The Apple Pay option only appears on devices and browsers that can actually pay (Safari on iPhone, iPad and Mac with a card in Wallet), and requires HTTPS.
1.0.25
- Improved – Tested with WordPress 7.1.2.
1.0.24
- Fixed – WooCommerce Subscriptions: every automatic renewal was charged twice in the same scheduled run. The gateway’s renewal handler was registered once by WooCommerce and a second time by the Checkout Blocks integration, so each renewal charge was submitted twice: Authorize.net rejected the duplicate (“Error 11: A duplicate transaction has been submitted.”), and that rejection then marked the already-paid renewal order as Failed and put the subscription On hold – so the customer was charged, yet received a renewal invoice asking them to pay again. Renewal handlers now run exactly once per renewal. If this affected your store: those Failed renewal orders were in fact paid – verify the charge in the Authorize.net Merchant Interface, then set the order back to Processing and reactivate the subscription. Thanks to @gordonium for the precise report.
- Fixed – As a permanent safeguard, a renewal order that already has a completed payment can never be charged again or flipped to Failed by a duplicate attempt, whatever triggers it: the duplicate is skipped and recorded as an order note instead, and Authorize.net’s own 120-second duplicate-transaction window remains active on all renewal and saved-card charges.
- Fixed – The Checkout Blocks integration created its own private copies of the card, eCheck and Google Pay gateways on every page load; it now reuses the gateways WooCommerce has already loaded. This also stops the same duplication elsewhere: saving the gateway settings no longer validates credentials and re-registers the Authorize.net webhook twice, “Capture Authorized Payment” no longer submits the capture twice (which left a stray “Capture failed” note on a successfully captured order), and removing a saved card no longer sends the profile deletion to Authorize.net twice.
1.0.23
- Fixed – Payments that Authorize.net accepted but held for review (Advanced Fraud Detection Suite) were marked as Failed orders with the misleading reason “Error I00001: Successful”, so customers who had already been charged were told the payment failed and paid again. These orders now go On hold with the transaction ID and a note telling you to approve or decline the transaction in the Authorize.net Merchant Interface. Approvals and ordinary declines are unchanged.
- Added – Order status now follows the outcome of a fraud review automatically: approving a held transaction in Authorize.net completes the order, declining it cancels the order and restores stock. Existing stores are updated on their own after this release – no settings need to be re-saved, no webhook is replaced, and any extra event types you added to the webhook yourself are kept.
- Improved – Card, eCheck and Google Pay orders held for review are never flipped to Failed by a later error during checkout, and “Capture Authorized Payment” is hidden while a transaction is still under review.
- Improved – Refunding an order whose payment is still under review now tells you to approve or decline the review in Authorize.net first, instead of returning a gateway error. Authorize.net does not allow these transactions to be refunded or voided until the review is settled.
- Fixed – With the transaction type set to “Authorize only”, a post-purchase order bump or upsell charge (CheckoutWC, FunnelKit) moved the original order back to On hold and replaced its transaction ID with the bump’s. The order now keeps its own status and transaction reference, and the extra authorization is recorded in an order note so you can capture it in the Authorize.net Merchant Interface.
- Added – Developers: the duplicate-transaction window sent to Authorize.net can now be set with the
easyauthnet_authorizenet_duplicate_windowfilter, which turns on Authorize.net’s own protection against a customer submitting the same payment twice. The default is unchanged.
1.0.22
- Fixed – In rare cases checkout could fail at the final step with “There was an error processing your order.” and no explanation, because an unexpected PHP error during payment stopped WooCommerce from returning a valid response. The gateway now reports a proper error message and records the cause in WooCommerce > Status > Logs. Successful payments and ordinary card declines are unaffected.
- Improved – Tested with WooCommerce 11.0.
1.0.21
- Added – Accounting integration support: every order now carries its Authorize.Net transaction reference, including pre-authorized card payments and eCheck (ACH). QuickBooks connectors and similar bookkeeping tools can reconcile these orders against the gateway automatically.
- Improved – eCheck orders keep their transaction reference through settlement, so your books stay in step with the payment as it clears. Your configured eCheck order status is unchanged.
- Improved – Streamlined payment gateway registration for smoother compatibility with third-party plugins that list your store’s payment methods.
1.0.20
- Added – Google reCAPTCHA v3 fraud protection for card and eCheck checkout, blocking card-testing attacks. Optional and off by default; enable it under the Credit Card settings tab with your own v3 keys.
- Added – CheckoutWC compatibility: post-purchase one-click order bumps are charged to the card saved during checkout, with refund support.
- Added – WooCommerce Subscriptions: admins can now change or repair a subscription’s payment method from the subscription edit screen, and a recovered failing payment method is applied to future renewals automatically.
- Fixed – Changing a subscription’s payment method from My Account charged the customer immediately; the new card is now saved without any charge.
- Fixed – WooCommerce Pre-Orders “charge upon release” now works end-to-end: the card is saved at checkout and charged automatically when the pre-order is released.
- Fixed – FunnelKit upsells: guest checkout upsells are now supported and a declined upsell charge shows the real decline reason instead of failing silently.
- Improved – Safer detection of third-party plugins to prevent rare fatal errors caused by other plugins’ autoloaders, and stricter saved-card validation so a payment can only use cards saved by this gateway.
1.0.19
- Fixed – “Missing or invalid card token” still occurred on the Pay for Order page for stores using the block-based Checkout. The Pay for Order handler now binds reliably regardless of checkout type, so admin-created orders can be paid with card or eCheck.
1.0.18
- Fixed – “Missing or invalid card token” error when customers paid for admin-created orders (e.g. draft orders) from the Pay for Order page. Card and eCheck details are now tokenized correctly on that page, so these orders can be completed.
1.0.17
- Fixed – Card Logos selection could not be cleared; removing all card logos and saving reverted to showing every logo. An empty selection is now saved and respected, while fresh installs still default to all logos.
1.0.16
- Added – Google Pay Express button in the block-based Cart and Checkout, matching the existing classic checkout express experience.
- Fixed – Google Pay Express now captures the buyer’s billing address from the Google Pay sheet, so orders always record a billing address even when the cart needs no shipping (virtual products, or no shipping methods configured). Classic and block express now share identical address logic.
- Fixed – Checkout could break when the Authorize.Net Public Client Key was missing; it is now detected and stored automatically.
1.0.15
- Added – Support for additional currencies: AUD, CAD, DKK, EUR, GBP, NOK, NZD, PLN, SEK, USD.
- Fixed – Orders rejected when an address or other billing field exceeded Authorize.Net’s character limits; values are now truncated to the API maximum lengths.
1.0.14
- Fixed – American Express (and other valid cards) being declined at checkout by the plugin’s own client-side card-type check. Card brand acceptance is now governed entirely by your Authorize.Net merchant account, which returns the real decline reason when a brand is not enabled.
- Changed – The “Accepted Cards” setting is now “Card Logos” and controls only which card icons are displayed at checkout.
1.0.13
- Fixed – Google Pay live OR_BIBED_11 error by adding a “Google Pay Merchant ID” setting for production transactions.
1.0.12
- Fixed – capture webhook forcing physical orders to Completed.
1.0.11
- Improved – PHP 8.5 compatibility: defensive type coercion in payment, refund, and XML request flows (Authorize.Net API, Google Pay, eCheck).
1.0.10
- Improved – Synchronization between Authorize.net CIM and WooCommerce saved payment methods.
1.0.9
- Added – FunnelKit compatible for upsell and cross-sell flows.
1.0.8
- Fixed – Intermittent checkout failures (E00114 Invalid OTS Token) and improved CIM card-saving flow stability.
1.0.7
- Added – Support for eCheck (ACH) payments.
- Added – Support for Google Pay payments.
- Fixed – Issue preventing new card details from being saved in Authorize.Net for customers with existing saved cards.
1.0.6
- Enhanced – Improved gateway settings panel text.
1.0.5
- Added – Compatibility with WordPress 6.9.
1.0.4
- Improved Gateway Settings UI.
1.0.3
- Enhancement – Improved credit card form for a smoother checkout experience.
1.0.2
- Enhanced – Display actual API error messages instead of generic error messages.
1.0.1
- Enhancement: Display specific Authorize.Net decline reasons in the Checkout block (WooCommerce Blocks) instead of a generic error message.
1.0.0
- Initial stable release
- Accept.js integration for secure card tokenization
- Support for WooCommerce Subscriptions
- Support for WooCommerce Checkout Blocks
- Refunds, voids, saved cards, and authorization capture support

