Description
The RedSys gateway connects the WooCommerce checkout to the RedSys payment system, processing card transactions from major Spanish banking networks (Servired, 4B, and Euro 6000) with secure redirection to the payment processor’s page. Designed for merchants selling to the Spanish market who need to accept payments through an approved bank TPV, the integration handles the automatic authorization response and updates the order status directly in the store dashboard.
Key Features of RedSys Gateway
- Connection to the RedSys network
Routes WooCommerce payments to the TPV platform of participating Spanish banks. - Redirection to the bank’s page
Takes the customer to the payment processor’s secure environment and returns them after authorization. - Merchant credential configuration
Allows you to enter the merchant code, terminal number, and secret key in the admin area. - Automatic order updates
Receives the payment processor’s response and adjusts the order status without manual action. - 3D Secure authentication support
Handles the additional verification flow required by the card issuer.
Benefits of RedSys Gateway
- Compatibility with the Spanish standard
Provides the payment method most commonly used by buyers in the local market. - Lower checkout abandonment
The familiar banking flow reduces friction when completing a purchase. - Automated operation
Confirmations reach the dashboard without requiring manual verification against the bank statement. - Direct settlement to the account
The payment processor transfers the funds according to the merchant’s TPV agreement.
Who Is RedSys Gateway For?
- Merchants selling to the Spanish market through WooCommerce who need to accept card payments via a bank TPV.
- Merchants who have a TPV agreement with a bank in the RedSys network and want to integrate it with WordPress.
- Merchants looking for a bank-redirect payment method without having to handle card details on their own website.
How to Download RedSys Gateway
RedSys Gateway is available for download here at Ultrapack. After downloading the .zip file, go to Plugins > Add New > Upload Plugin, select the file, and activate it. Once activated, the method appears under WooCommerce > Settings > Payments, where you can enter the agreement credentials.
For WooCommerce stores targeting customers in Spain, RedSys Gateway handles the critical step of accepting payments through the TPV standard required by major local banks. The combination of redirection to the bank’s environment, automatic authorization responses, and centralized credential configuration provides a payment flow aligned with Spanish retail practices and integrated with the WooCommerce order dashboard.
Frequently asked questions
Is WooCommerce RedSys Gateway GPL-licensed?
Yes. WooCommerce RedSys Gateway is distributed under the GPL (GNU General Public License). You may legally use, modify and redistribute it on as many sites as you want.
Can I use WooCommerce RedSys Gateway on multiple sites?
Yes. You can install WooCommerce RedSys Gateway on as many sites as you want. Only automatic updates through Ultrapack Auto Updater have a limit: from 3 to 80 sites, depending on the plan.
How much does WooCommerce RedSys Gateway cost at Ultrapack?
WooCommerce RedSys Gateway costs US$2.99 as a single purchase, and it is also included in the subscription plans starting at US$12/mo (VIP I).
Does WooCommerce RedSys Gateway include updates?
Yes. The current version of WooCommerce RedSys Gateway is 32.1.0, published at Ultrapack on Sep 10, 2026. Subscribers update straight from the WordPress dashboard with UAU (Ultrapack Auto Updater).
Is WooCommerce RedSys Gateway scanned before publication?
Yes. Every version of WooCommerce RedSys Gateway goes through a malware scan (ClamAV and YARA rules, at UltraHub) before it is published.
What are the requirements for the plugin WooCommerce RedSys Gateway?
Requires WordPress 5.4 or higher and PHP 7.4 or higher. Tested up to WordPress 7.0.
What changed in this version
Version 32.1.0
- SECURITY: The plugin was writing the address of every shopper's order-received page into its own
- log file on every payment, and that address contains the order key - the private token that
- WooCommerce puts in the shopper's payment link and that this plugin requires before it will show
- an order. Anyone able to read the log file could therefore open those orders and see the name
- email, telephone and addresses on them. It happened whether or not the shop had switched debug
- logging on, because this one place wrote to the log without checking that setting. It now respects
- the debug setting like every other log the plugin writes, and the key is replaced with
- "[redacted]" before anything is written, so it is not recorded even with logging switched on. That
- replacement was then applied to every log line the plugin writes rather than to the one that was
- reported: around ninety further lines across the gateways printed the same addresses whenever
- debug logging was on, including the ones that dump the whole message sent to the bank. Log files
- already written still contain those addresses: if you have them, delete them.
- FIX: With InSite, paying with a card the shopper had saved could take the money and still show the
- order as failed. When the bank approves such a payment without asking the shopper to confirm with
- their bank app - which is what happens with a saved card - the plugin was looking for the result
- in the wrong place, found nothing, and treated "nothing" as a refusal. The charge had already gone
- through, so shoppers who were told the payment had failed paid a second time and were charged
- twice. The result is now read from the bank's own signed answer, the same one the rest of the
- payment already uses. It affected the classic checkout and the block checkout equally, and it also
- affected subscription renewals. Reported by two shops within days of each other, one of whom
- traced it to the exact line - thank you.
- FIX: On the card gateway, a payment made with a saved card was completed on the strength of an
- authorisation number alone, without checking the bank's actual answer beside it. A refused payment
- that still carried something in that field would therefore mark the order as paid, and the shop
- would send the goods without having been paid. Both are now required to agree before an order is
- completed. If the bank's answer is missing altogether the payment is not completed, because there
- is nothing left that says it was approved; a shop whose bank genuinely omits that field can
- restore the previous behaviour on purpose with the redsys_allow_payment_without_ds_response
- filter, which is documented and which cannot be used to accept a payment the bank actually
- refused.
- FIX: On stores using certain checkout plugins - Fluid Checkout among them - every payment was
- refused by Redsys with the error SIS0574. The bank requires a short description of the shopper's
- browser with each payment (its language, its screen size and similar), which the plugin collects
- through hidden fields it adds to the checkout. Those fields were being added at the moment the
- card gateway was built, which on those stores happens after another plugin has already asked
- WooCommerce for the definitive list of checkout fields - and WooCommerce builds that list once and
- never again. The fields were therefore never created, never filled in and never sent, and the bank
- refused the payment. They are now added as soon as the plugin loads, before anything can ask for
- the list, which affects every gateway that needs them - the card gateway, Bizum and the wallets
- not only InSite. In InSite the browser description now also travels with the rest of the payment
Version 32.0.0
- New: Manage your store from a native app. This release turns on the management app API that
- until now shipped hidden. Your store can be connected to PackDesk, the native macOS
- management app, to work with orders, refunds, products and customers. The API
- redsys-manager/v1) is strictly opt-in: OFF by default, it requires HTTPS and an active
- picking queue and order updates, product and customer routes, a "changes" delta feed for
- efficient sync, safe write retries via Idempotency-Key, and a per-employee rate limit
- (applied per user, never per IP).
- New: A "Behaviors towards the APP" section in the Redsys advanced settings to enable or
- disable the API, allow or restrict refunds for the Customer service profile, require a
- minimum app version, and set the per-employee requests-per-minute limit (default 300).
- New: A per-user "App profile" on the user edit screen, so each employee connecting from the
- app operates under a profile (for example Administrator or Customer service) that gates what
- they can see and do, including whether they may issue refunds.
- New: An "Apps and Plugins" section in the Redsys advanced settings: a read-only overview of
- the native app and the rest of the plugins, websites and skills.
- Change: Compatibility declared with WooCommerce 11 ("WC tested up to" is now 11.0), so
- WooCommerce no longer warns that the gateway is untested on the version you run. The minimum
- supported WooCommerce is unchanged (7.4).
- New: PackDesk is published on the Mac App Store, and the official "Download on the Mac App
- Store" button now appears at the top of "Behaviors towards the APP" and in the featured-app
- area of "Apps and Plugins", so the app can be installed straight from the store settings. It
- uses Apple's own artwork in the administrator's language
- or Portuguese; English for Basque and Galician, which Apple does not publish) and opens each
- visitor's own country store. The app entry now shows the published version and states that
- it requires macOS 26 Tahoe or later.
- Fix: The product QR code did not appear on stores whose media library is offloaded to an
- external service such as Cloudflare Images. The plugin saved and showed a URL it had built by
- hand from the local uploads folder instead of the media library's real attachment URL, so on
- an offloaded store that address pointed at a file no longer served locally and the image was
- broken. The QR URL is now resolved through wp_get_attachment_url, the attachment id is stored
- and the address is resolved every time the QR is shown, so it follows the file wherever it is
- served - including offloading enabled after the QR was created. Existing QR codes are healed
- automatically the first time their product is opened; otherwise the "Regenerate QR Code" link
- rebuilds them correctly.
- Fix: A Bizum payment could be charged at the bank yet leave the order pending, with the log
- showing "Signature verification failed in successful_request". The order-completion step in one
- of the two Bizum gateways verified the bank notification with the gateway's plain configured
- signature key, while the operation had been signed with the per-order key actually used for it
- as happens on stores with a per-user or dual/test terminal, or the bizum_modify_data_to_send
- filter. The notification passed the first validation and was then rejected by this second check
Version 31.0.7
- Fix: Subscription products from Advanced Subscriptions for WooCommerce were never detected
- as subscriptions. The check guarded on a function name with one letter too many, so it
- always returned false regardless of the product, and the card could be tokenised as a
- one-off payment instead of as a recurring one.
- Fix: Any anonymous visitor could trigger a fatal error through admin-ajax.php. The AJAX
- action check_token_insite_from_action was registered, for logged-in and logged-out visitors
- alike, against a method that does not exist; the working implementation and the name the
- JavaScript posts are check_token_insite_from_action_checkout, registered separately. The two
- obsolete registrations have been removed.
- Fix: The Redsys Tokens admin page registered a form handler that was never written, so
- admin-post.php?action=redsys_tokens_search was a fatal for any logged-in user. Searching on
- that page has always worked through the page itself; the obsolete registration is gone and
- nothing changes for the user.
- Fix: Twelve user-facing texts said "Redys" instead of "Redsys" — nine email titles and three
- in the Bank Transfer gateway description. The Catalan, Basque, Galician, Spanish, French and
- Portuguese translations were updated in the same release, so no translated text is lost.
- Fix: A malformed or tampered bank notification could fill the log with "Trying to access
- array offset on null" warnings. Reading the order number from an undecodable notification now
- returns empty, which callers already treat as unresolvable.
- Fix: With the order number format set to "Number created by WooCommerce only with zeros"
- (simpleorder), adding a payment method could be rejected by Redsys as a repeated order
- number (SIS0051). Real orders and card-additions were numbered from the same 12-digit
- zero-padded space, and the add-card counter started at 1 and walked straight through the
- range of existing order ids. The collision had a second, more damaging consequence: the
- plugin decides whether a bank notification belongs to a card-addition by reading a
- transient that lives 48 hours and is keyed on the number alone, so a real order paid with
- a number a card-addition had reserved in the previous two days was processed as a
- card-addition and returned without marking the order as paid — the money was taken and
- the order stayed pending. Card-addition numbers now use the reserved prefix 200 plus a
- 9-digit counter, and the order-number generator can no longer produce that prefix: under
- the default format the number is a random 1-999 prefix followed by the last 9 digits of
- the order id, so the two values that would land in a reserved space, 100 and 200, are
- re-rolled. The card-addition decision is now taken from the number itself plus a check
- that no real order carries it, keeping the transient as a fallback so operations already
- in flight when the plugin is updated keep working. Nothing is migrated and no pending
- card-addition is lost. The "only with zeros" format keeps working; its remaining and
- inherent limitation — paying the same order twice reuses the number and Redsys answers
- SIS0051 — is now stated in the setting itself.
- Fix: The InSite tokenization number could collide with the default order number format.
- It begins with 1, while the default format uses a random 1-999 prefix, so a random prefix
Version 31.0.6
- the opposite behaviour. Express brings its own data from the Apple Pay sheet, so letting
- WooCommerce Blocks re-sync the order destroys it; standard mode has no data of its own, so
- letting Blocks fill the order in is the only thing that populates it. This is now decided
- per mode. Apple Pay Express keeps the 31.0.6 behaviour and is unaffected.
- Fix: Apple Pay in the block checkout could fail to pay when the shopper typed the address on
- the page. The sheet showed the pre-tax amount while the server charged the real total, and
- the payment was rejected on the mismatch. The amount was calculated once when the page was
- rendered and never updated as taxes and shipping were recalculated; it now follows the live
- cart total, so it always matches what is charged.
- Fix: Apple Pay in the block checkout could open the payment sheet with required checkout
- fields still empty, and left WooCommerce's "Place order" button visible next to the Apple
- Pay button. Required fields are now checked before the sheet opens, and the "Place order"
- button is hidden while Apple Pay is the selected method.
- Fix: Apple Pay in the block checkout still produced a paid order with no customer data when the
- gateway's terminal type was "mixed" instead of "secure". The earlier fix in this version fills
- the order on the payment page, but a mixed terminal charges directly and never loads that page.
- On a mixed terminal the order is now filled from the checkout form before the charge is sent.
- Secure terminals and Apple Pay Express are unaffected.
- Change: Apple Pay and Google Pay now always use the Secure terminal, and the "Terminal type"
- selector has been removed from both. For a wallet the terminal type only affected the first
- payment (renewals go through the card/redirection gateway), and Secure already charges and
- requests the recurring subscription token. The Mixed terminal used a path with no payment page
- which is where Apple Pay as a normal method lost the customer's data on the block checkout.
- Stores set to "mixed" move to Secure automatically on update; no data is lost.
Version 31.0.6
- Fix: The ACP webhook dispatcher no longer floods the logs with "as_next_scheduled_action /
- as_schedule_recurring_action was called before the Action Scheduler data store was
- initialized" notices. The worker was scheduled on plugins_loaded, where the as_* functions
- already exist but Action Scheduler has not yet initialized its data store. Scheduling is now
- deferred to the action_scheduler_init hook when the store is not ready, keeping the WP-Cron
- fallback unchanged when Action Scheduler is absent.
- Fix: Apple Pay Express orders were saved without any customer data
- phone, billing and shipping address) and were recorded as guest purchases, even though the
- payment completed correctly. Google Pay Express was unaffected. The express order was
- registered in the session as the Store API draft order, so the Checkout block hydration on
- the pay page re-synced it from the cart (OrderController::update_order_from_cart) and wiped
- the contact data seconds before the bank notification arrived. The express flow no longer
- hands its order to WooCommerce Blocks, and releases it from the draft session when the
- payment starts. Applies to the express button on both the Cart and the Checkout blocks.
Release notes published by the developer.
How to install
Automatic updates: this item is updated by the Ultrapack Auto Updater. With it installed, the new version shows up in your dashboard like any other WordPress update (how to set it up).
- Download the file
woocommerce-gateway-redsys.zip. - In the WordPress dashboard, go to Plugins > Add New > Upload Plugin.
- Select the file
woocommerce-gateway-redsys.zipand click Install Now. - Click Activate.
Requirements: Requires WordPress 5.4 or higher and PHP 7.4 or higher. Tested up to WordPress 7.0.
Stuck on a step? Open a ticket telling us which one you stopped at.

UAU Ready