This is an info Alert.
xpay
  • Product
    • Become Agent-Ready
      • Merchants
        Agentic Commerce — list your store across ChatGPT, Gemini, Claude & Perplexity
      • Publishers
        Monetize your content when AI agents read, cite, or train on it
      • SaaS Companies
        Treat AI agents as first-class customers with agent-priced checkout
    • Monetize
      • Monetize MCP Server
        Charge per call on any MCP server in 2 minutes
      • Monetize AI Agents
        Turn n8n, Zapier, Activepieces workflows into revenue
  • Resources
    • xpay Ecosystem
      • xpay✦ Tools
        1,000+ pay-per-use tools for your AI agents
      • Agent-Ready SaaS Index
        25,481 SaaS scored on agent-buyability
      • SaaS Pricing Database
        Pricing pages indexed across 1,000+ categories
      • Shopify Apps Directory
        Every Shopify app, with its full review history
      • WooCommerce Plugins Directory
        Every WooCommerce plugin, scored on how well it is maintained
      • GitHub
        Open source repositories
    • Agent Building
      • Agent Frameworks
        AI frameworks for building multi-agent systems
      • x402 Integration
        AI frameworks with x402 payment integration
      • Networks
        Blockchain networks supporting x402
    • Company
      • About xpay✦
        Our mission, products, and protocols
      • Blog
        Latest insights and updates
      • Docs
        Complete xpay documentation
  • Pricing
  • Blog
  • Docs
Get Started
  1. xpay✦ Commerce

  2. Directory

  3. WooCommerce plugins

  4. APG Withdrawal for WooCommerce

APG Withdrawal for WooCommerce

Add to WooCommerce an online withdrawal workflow with customer form, My Account integration and admin request log.

50+ active installs
5.0
(1 ratings)
Free on WordPress.org
View on WordPress.orgSupport forum
Will this break my store?

What the WordPress.org registry says about keeping APG Withdrawal for WooCommerce running.

WordPress compatibility
Tested to 7.1
Tested against the WordPress branch in use today.
Last updated
1 month ago
Requires PHP
7.4
Your host must be running at least this version.
Requires WordPress
6.0
Requires other plugins
woocommerce
These must be installed and active first.
Contributors
1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.

50+ active installsWordPress.org reports installs in bands, not exact counts.
Maintenance & trust

Scored on how APG Withdrawal for WooCommerce is looked after — not on how many stores run it.

Well maintained
Not enough public feedback to put a confident number on this one. Little public feedback — score rests mostly on release activity. What we can see is below.

Maintenance
35 / 35
Updated 4 days ago.
WordPress compatibility
20 / 20
Tested to WP 7.1 (current).
Support responsiveness
Not enough data
Only 0 support thread(s) — not enough to judge.
Merchant satisfaction
10 / 15
5.0/5 across 1 rating(s).
Listing transparency
10 / 10
Provides: screenshots, description, homepage
1 of 5 measures had too little evidence to score. They are left out of the total rather than counted as zero — otherwise a plugin would be marked down for being small rather than for being poorly kept.Measured 2026-08-13 from the WordPress.org plugin registry.
Ratings

5.0

1 rating
5★1
4★0
3★0
2★0
1★0
Every rating WordPress.org holds for this plugin, not a sample. Written reviews live in the plugin's WordPress.org reviews forum.

APG Withdrawal for WooCommerce adds to your WooCommerce store a complete online right of withdrawal workflow compliant with EU consumer protection legislation.

Features

  • Customer withdrawal form via the [apg_withdrawal_form] shortcode.
  • Partial withdrawal down to the unit: the customer ticks the order lines and adjusts how many units of each one they are withdrawing from.
  • Configurable withdrawal window (days) and deadline source (completed or created date).
  • Optional extra grace days on top of the standard withdrawal window.
  • Active request detection: hides the withdrawal button if a request is already open for the order.
  • Optional digital-content waiver checkbox at checkout (both classic shortcode and block-based checkout): a configurable selector chooses when to display it — never, only on virtual products (or per-product _apg_withdrawal_type = digital), on every order, or on selected categories and/or selected products. The customer’s choice is persisted to order meta as legal evidence.
  • Admin request log with full request details (custom post type), status views with counts, bulk status changes and sortable status column.
  • Own WooCommerce order status Withdrawal requested, optionally applied to the order as soon as a declaration is received, so affected orders can be filtered, sorted and bulk-edited with the native tools.
  • Optional refund account (IBAN) validated with the international control digits (ISO 7064 MOD-97-10).
  • Optional double opt-in for guests: the request is held until the customer opens a single-use link sent to the email address on the order, while keeping the date and time of the original submission.
  • Jurisdiction setting (EU baseline / Spain) that governs the statutory reference shown to the customer.
  • REST API under apg-withdrawal/v1 to list, read, create and progress requests from headless storefronts and back-office integrations.
  • IP address and browser identifier storage options for legal evidence.
  • Email notification to the store admin on every new request.
  • Automatic customer acknowledgement email on submission.
  • Customer status update emails when the request is accepted, rejected or completed.
  • Automation: updates the withdrawal request status automatically when the linked WooCommerce order changes status.
  • My Account integration: customers can view their withdrawal request history.
  • CSV export of withdrawal requests, honouring the status currently selected in the list, with protection against spreadsheet formula injection.
  • 100% compatible with HPOS (High-Performance Order Storage).
  • Public form built to WCAG 2.1 AA — the level EN 301 549 requires today — with the WCAG 2.2 target-size criterion already met: grouped and labelled controls, live regions for dynamic notices and focus moved to each new step.
  • One-click WooCommerce refund built from the request: the declared lines and quantities, capped by whatever is still refundable on the order. Always started by hand, never automatically. Works with Redsys and Bizum out of the box.
  • WPML and Polylang ready, both through wpml-config.xml and through runtime string registration.

Translations

  • English: by Art Project Group (default language).
  • Spanish: by Art Project Group.

More information

You can learn more about APG Withdrawal for WooCommerce on our official website, and follow the development on GitHub.

Thanks

Thanks to everyone who uses the plugin, helps improve it, makes a donation or encourages us with their comments.

If you find this plugin useful, you can support its development with a small donation.

External Services

This plugin connects to the WordPress.org Plugins API to fetch information about the plugin (such as the rating). It sends the plugin slug when requesting data. More information: https://wordpress.org/about/privacy/

How do I configure the plugin?

In the plugin settings you can configure the notification email, the withdrawal page, the withdrawal window in days, the deadline source (completed or created date), the extra grace days and which data to store (IP address, browser identifier).

Is the plugin compatible with HPOS?

Yes. The plugin is fully compatible with WooCommerce High-Performance Order Storage.

Can guest customers submit a withdrawal request?

Yes. The form supports both logged-in customers (with pre-filled data and order selector) and guests (with email lookup of their orders).

Where should I place the withdrawal link?

The withdrawal form page is auto-created on activation and contains the [apg_withdrawal_form] shortcode. To comply with Article 11a of Directive 2011/83/EU (added by Directive 2023/2673), the link to that page should be prominently visible and easy to find on the storefront. The plugin gives you several tools to place it; deciding where to place it is the merchant’s (or their web designer’s) responsibility:

  • The fixed URL of the auto-created page, available in WooCommerce → Withdrawal → Withdrawal page.
  • The [apg_withdrawal_link] shortcode, with optional label, class and target attributes, to drop the link inside any post, page, footer widget or HTML block.
  • The matching Withdrawal link Gutenberg block for sites built with the Full Site Editor.
  • The Withdrawal request action that is automatically added to every eligible order in the My Account → Orders table.

Typical recommended placements:

  • The site footer, so the link is reachable from any page.
  • The My Account menu (the per-order action is already added; you can also add a top-level menu item linking to the public form).
  • The Terms and Conditions / Privacy Policy pages, alongside the rest of the consumer information required by Article 6.1.h of Directive 2011/83/EU.
  • The order processing / completed emails (the plugin already injects the link there automatically via woocommerce_email_after_order_table).

What happens if my store does not offer the withdrawal function?

Article 11a of Directive 2011/83/EU has applied throughout the EU since 19 June 2026, regardless of whether each Member State has transposed it. Spain had not done so at the time of this release — the European Commission issued a reasoned opinion against Spain in June 2026 — but the obligation applies by direct effect, and non-compliance is penalised through the general regime of the TRLGDCU, whose fines reach 100,000 € for minor infringements, 1,000,000 € for serious ones and 4,000,000 € (or 4% of the turnover in Spain, whichever is higher) for very serious ones. Check the regime applicable in your own country: this note is informative and is not legal advice.

Can I ask the customer for a bank account?

Yes, in WooCommerce → Withdrawal → Request handling → Account for the refund (IBAN), either as an optional or as a required field. It is disabled by default. The number is validated with the international control digits (ISO 7064 MOD-97-10) before being accepted, is stored alongside the request, is included in the privacy exporter and is deleted outright by the privacy eraser. Only enable it when you genuinely cannot refund through the original payment method.

How do I stop somebody else from submitting a withdrawal in a customer’s name?

Enable Confirm guest requests by email?. A visitor who is not logged in then has their request held while a single-use link is sent to the address recorded on the order; only opening it registers the declaration. The request keeps the date and time of the original submission, so the customer never loses days of their withdrawal period. Logged-in customers are unaffected, since WordPress has already authenticated them.

Is the plugin accessible? Does it help with the European Accessibility Act?

The public form targets WCAG 2.1 level AA, which is what EN 301 549 — the standard the European Accessibility Act points to — requires today: the line-item selector is a labelled fieldset of native checkboxes and number inputs operable with a keyboard, dynamic notices are live regions, and focus moves to each new step of the flow. It also already satisfies the WCAG 2.2 target-size criterion (2.5.8), which arrives with version 4.1.1 of that standard, and the guest confirmation link is the pattern WCAG 2.2 recommends for accessible authentication (3.3.8), since it asks the customer for no cognitive test.

Two caveats. First, the Accessibility Act (Directive (EU) 2019/882, in Spain Law 11/2023) has applied to e-commerce since 28 June 2025, and it binds the shop, not a single plugin: colour contrast, focus visibility and page structure come from your theme, and the responsibility for the store as a whole is the merchant’s. Second, companies with fewer than 10 employees and a turnover below 2 million euros are exempt from the obligations on services. Check your own situation: this note is informative and is not legal advice.

Can I refund the customer from the withdrawal request?

Yes. Each request shows a Refund panel with the amount the declaration implies — the declared lines at their declared quantities, plus the standard delivery cost when the withdrawal covers the whole contract, as Article 13(1) of Directive 2011/83/EU requires — always capped by whatever is still refundable on the order, so a refund you already issued by hand is never handed out twice. Nothing happens until you press the button. By default the refund is only recorded in WooCommerce, without moving money or touching stock; two checkboxes let you send it through the payment gateway (when the gateway supports it) and restock the returned products. The apg_withdrawal_refund_plan filter lets you adjust the figures, for instance to deduct the diminished value of returned goods.

Does it work with Redsys and Bizum?

Yes, and nothing extra needs installing. Bizum runs on Redsys for e-commerce, and the WooCommerce implementations of Redsys — José Conti’s paid gateway, Codection’s, the official unified module — issue refunds through the standard WooCommerce refund API. The refund panel uses that same API, so ticking Send the money back through Redsys reaches your virtual POS directly. The panel names the gateway it is about to use, so you always know where the money is going.

Three things worth knowing. Redsys accepts both full and partial refunds, so a partial withdrawal is returned as declared. When the customer sees the money depends on their bank, typically between 2 and 31 days — the 14-day limit in Article 13(1) of Directive 2011/83/EU applies to you issuing the refund, not to their bank crediting it. And if you use a Redsys gateway that does not implement refunds, such as the free Light edition, the panel says so and records the refund in WooCommerce without moving money, so you can issue it from your bank’s back office and keep the accounting straight.

When a gateway rejects a refund, the reason it gives — the SIS code, in the case of Redsys — is shown in the error notice instead of a generic failure, so you have something to act on.

Does the plugin have a REST API?

Yes, under the apg-withdrawal/v1 namespace. GET /requests and GET /requests/<id> list and read requests, and PUT /requests/<id> moves one through the workflow; all three require the manage_woocommerce capability. POST /requests registers a declaration coming from a headless storefront and is public, exactly like the public form: it goes through the same processor, so the order must match the email address, the rate limiter applies and the guest email verification kicks in when you enabled it.

How long should I keep the withdrawal request records?

The plugin does not delete withdrawal request records automatically. As a general recommendation, keep them for at least 5 years after their creation — the typical statute of limitations for consumer and contractual actions in many EU jurisdictions. Always check the applicable retention period in your country before deleting old records or running the plugin’s CSV export + uninstall flow.

Where can I get support?

APG Withdrawal for WooCommerce is a free plugin. Art Project Group does not provide free technical support, but offers a paid technical support service for installation and configuration.

Categories
Order managementMarketplaces & channels
Plugin details
Version0.7.1
Last updated2026-08-09 9:12am GMT
Added2026-05-17
Requires WordPress6.0
Tested up to7.1
Requires PHP7.4

Tags on WordPress.org
consumer rights
refund
right of withdrawal
withdrawal
woocommerce
Alternatives
Other plugins in the same categories.
Order On Mobile for WooCommerce
2K+ installs
4.9(66)
PiWeb Cancel order / Refund request for WooCommerce
2K+ installs
4.8(38)
Return Refund and Exchange For WooCommerce
4K+ installs
4.7(123)
Custom Order Status Manager for WooCommerce
30K+ installs
4.7(117)
Order Tracking – WordPress Status Tracking Plugin
3K+ installs
4.6(73)
Filter Orders by Product for WooCommerce
4K+ installs
4.7(15)
xpay

The agent-readiness stack for the AI shopping era — helping merchants, publishers and SaaS companies get discovered, cited and transacted with by ChatGPT, Perplexity, Claude, Gemini and the custom shopping agents underneath them.

CompanyAgentically Inc. (d/b/a xpay✦)1875 Mission St, Ste 103San Francisco, CA 94103, United Stateslegal@xpay.sh · privacy@xpay.sh
or ask your AI app
Company
About xpayAgency PartnersGitHubDiscordllms.txt
DevelopersDocumentationAPI ReferenceSDKs & LibrariesQuickstart GuideOpenAPI Spec
Stay Updated
Occasional product updates and agent-readiness playbooks from xpay (Agentically Inc.) — typically a couple of emails a month. Double opt-in: we email you a link to confirm before sending anything, and every email has one-click unsubscribe.
Social
  • For Publishers
    • News
    • Finance
    • Dev / Tech
    • Travel
    • View all verticals
  • Agent-Ready Index
    • SaaS Pricing Database
    • Agent-Ready SaaS Index
    • Verified band
    • AI & ML
    • Sales & CRM
  • Products
    • Pricing Widget
    • Monetize MCP Server
    • Paywall
    • Smart Proxy
    • Monetize AI Agents
    • xpay x402 Facilitator
  • Agentic Economy
    • Timeline
    • Resources
    • Manifesto
    • Stack
  • Agentic Commerce
    • Get listed
    • ChatGPT Ads
    • How ChatGPT Ads work
    • ChatGPT Ads · Apparel
    • ChatGPT Ads · Health & Beauty
    • xpay Listings · Amazon + Google
    • Pricing
    • Free audit
    • Shopify
    • WooCommerce
    • Apparel & Accessories
    • Health & Beauty
    • Overview
  • Commerce Index
    • Shopify apps directory
    • Agentic Commerce Ready Index
    • Methodology
    • Pet brands · WooCommerce
    • Pet brands · Shopify
  • Marketplace
    • 🛍️ xpay.deals — agentic storefront for deals
  • Protocols
    • Overview
    • x402
    • MPP
    • UCP
    • ACP
    • AP2
    • TAP
    • A2A
  • Agent Frameworks
    • Overview
    • LangChain
    • CrewAI
    • Claude MCP
    • AutoGPT
    • LangChain vs Mastra
    • LangGraph vs Pydantic AI
  • Company
    • About xpay
    • Blog
    • Docs
    • GitHub
  • Free prompts
    • Ecommerce prompts
    • Email marketing prompts
    • Product description prompts
    • Facebook ad prompts
    • Skincare prompts
    • Supplement prompts
    • Wine prompts
    • Electronics prompts

© 2025 Agentically Inc. All rights reserved.
Privacy PolicyTerms of UseAcceptable Use Policy