{"id":327805,"date":"2026-06-21T13:52:24","date_gmt":"2026-06-21T13:52:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bkm-eu-withdrawal\/"},"modified":"2026-06-21T13:51:31","modified_gmt":"2026-06-21T13:51:31","slug":"bkmeuwi-withdraw-from-contract","status":"publish","type":"plugin","link":"https:\/\/el.wordpress.org\/plugins\/bkmeuwi-withdraw-from-contract\/","author":23518143,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BKM EU Withdraw From Contract","header_author":"Bilal Khalid Mughal","header_description":"All-in-one EU withdrawal solution. Two-step form, admin panel, email notifications, and export tools. EU Directive 2011\/83\/EC compliant.","assets_banners_color":"1b2b4a","last_updated":"2026-06-21 13:51:31","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/profiles.wordpress.org\/bilalkhalidmughal\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/bkmeuwi-withdraw-from-contract\/","header_author_uri":"https:\/\/profiles.wordpress.org\/bilalkhalidmughal\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"bilalkhalidmughal","date":"2026-06-21 13:51:31"}},"upgrade_notice":{"1.0.2":"<p>Security hardening for the design settings and admin panel, plus database query and readme compliance fixes. Update recommended.<\/p>","1.0.1":"<p>Security and compliance improvements. Update recommended.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3580712,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3580712,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3580712,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3580712,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3580712,"resolution":"1","location":"assets","locale":"","width":1117,"height":1640},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3580712,"resolution":"2","location":"assets","locale":"","width":1157,"height":981},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3580712,"resolution":"3","location":"assets","locale":"","width":1006,"height":604},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3580712,"resolution":"4","location":"assets","locale":"","width":1689,"height":715},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3580712,"resolution":"5","location":"assets","locale":"","width":1294,"height":1366},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3580712,"resolution":"6","location":"assets","locale":"","width":1279,"height":1234},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3580712,"resolution":"7","location":"assets","locale":"","width":1438,"height":1588},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3580712,"resolution":"8","location":"assets","locale":"","width":1366,"height":3077}},"screenshots":{"1":"Withdrawal form - step 1, customer fills in their details","2":"Withdrawal form - step 2, customer reviews before confirming","3":"Submission success screen with reference number","4":"Admin panel - all withdrawal requests with status filters and export tools","5":"Plugin settings - general tab with field validation controls","6":"Plugin settings - email notifications configuration","7":"Plugin settings - design and appearance customisation","8":"Built-in setup guide with EU directive compliance checklist"}},"plugin_section":[],"plugin_tags":[255182,268220,266617,268221,264542],"plugin_category":[],"plugin_contributors":[268222],"plugin_business_model":[],"class_list":["post-327805","plugin","type-plugin","status-publish","hentry","plugin_tags-consumer-rights","plugin_tags-contract-cancellation","plugin_tags-eu-withdrawal","plugin_tags-withdraw-contract","plugin_tags-withdrawal-form","plugin_contributors-bilalkhalidmughal","plugin_committers-bilalkhalidmughal"],"banners":{"banner":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/banner-772x250.png?rev=3580712","banner_2x":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/banner-1544x500.png?rev=3580712","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/icon-128x128.png?rev=3580712","icon_2x":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/icon-256x256.png?rev=3580712","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-1.png?rev=3580712","caption":"Withdrawal form - step 1, customer fills in their details"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-2.png?rev=3580712","caption":"Withdrawal form - step 2, customer reviews before confirming"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-3.png?rev=3580712","caption":"Submission success screen with reference number"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-4.png?rev=3580712","caption":"Admin panel - all withdrawal requests with status filters and export tools"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-5.png?rev=3580712","caption":"Plugin settings - general tab with field validation controls"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-6.png?rev=3580712","caption":"Plugin settings - email notifications configuration"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-7.png?rev=3580712","caption":"Plugin settings - design and appearance customisation"},{"src":"https:\/\/ps.w.org\/bkmeuwi-withdraw-from-contract\/assets\/screenshot-8.png?rev=3580712","caption":"Built-in setup guide with EU directive compliance checklist"}],"raw_content":"<!--section=description-->\n<p>BKM EU Withdrawal (EU Withdraw from Contract) gives your customers a simple, legally compliant way to exercise their EU right of withdrawal - and gives you a complete back-office to manage every request.<\/p>\n\n<p>Whether you run a service, a digital product, or a physical goods store, this plugin handles the entire withdrawal process from submission to resolution.<\/p>\n\n<h4>Form Features<\/h4>\n\n<ul>\n<li>Two-step form - customer fills details on step 1, reviews everything on step 2 before confirming<\/li>\n<li>Fields: Full Name, Email Address, Phone Number, Address, Postal Code, Order Number, Product Details, Withdrawal Reason<\/li>\n<li>File attachment support - customers can upload supporting documents<\/li>\n<li>Each field can be set as required or optional from the admin settings<\/li>\n<li>Fully customisable appearance - colours, button styles, border radius, and label size.<\/li>\n<\/ul>\n\n<h4>Admin Panel Features<\/h4>\n\n<ul>\n<li>All Requests - view and manage all withdrawal submissions in one place<\/li>\n<li>Status management - update request status with full history log<\/li>\n<li>Internal notes - add private notes to any request (not visible to customer)<\/li>\n<li>Auto-generated reference number for every request (format: WD-2026-00001)<\/li>\n<li>Filter requests by status, search by name, email, order number, or reference<\/li>\n<\/ul>\n\n<h4>Email Notifications<\/h4>\n\n<ul>\n<li>Customer receives a confirmation email on submission<\/li>\n<li>Admin receives a notification email for every new request<\/li>\n<li>Customer receives a status update email whenever their request status changes<\/li>\n<\/ul>\n\n<h4>Export Tools<\/h4>\n\n<ul>\n<li>Export requests to CSV<\/li>\n<li>Export requests to Excel<\/li>\n<li>Export respects current filters - export only what you see<\/li>\n<li>Bulk export by selecting specific records<\/li>\n<\/ul>\n\n<h4>Shortcode<\/h4>\n\n<p>Place the withdrawal form anywhere using:<\/p>\n\n<pre><code>[bkmeuwi_withdrawal_form]\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip via Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Go to EU Withdrawals &gt; Plugin Settings to configure the form<\/li>\n<li>Add the shortcode <code>[bkmeuwi_withdrawal_form]<\/code> to any page where you want the form to appear<\/li>\n<li>Check EU Withdrawals &gt; Setup Guide for step-by-step instructions<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>No. This plugin works on any WordPress site regardless of which eCommerce solution you use.<\/p><\/dd>\n<dt id=\"which%20eu%20directive%20does%20this%20comply%20with%3F\"><h3>Which EU directive does this comply with?<\/h3><\/dt>\n<dd><p>EU Directive 2011\/83\/EC on consumer rights, which grants customers a 14-day right of withdrawal from online purchases.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20form%20appearance%3F\"><h3>Can I customise the form appearance?<\/h3><\/dt>\n<dd><p>Yes. From Plugin Settings you can change colours, button styles, border radius, and label font size.<\/p><\/dd>\n<dt id=\"can%20i%20make%20certain%20fields%20optional%3F\"><h3>Can I make certain fields optional?<\/h3><\/dt>\n<dd><p>Yes. Phone Number, Address, Postal Code, Product Details, Withdrawal Reason, and Attachments can each be toggled between required and optional.<\/p><\/dd>\n<dt id=\"where%20are%20withdrawal%20requests%20stored%3F\"><h3>Where are withdrawal requests stored?<\/h3><\/dt>\n<dd><p>All requests are stored securely in your WordPress database. You can view, manage, and export them from the EU Withdrawals admin menu.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully internationalised and ready for translation using the text domain bkmeuwi-withdraw-from-contract.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Validated the Form Width design setting against a strict allow-list of CSS dimension values to prevent CSS injection.<\/li>\n<li>Moved remaining admin-area inline style and script blocks into properly enqueued CSS\/JS files.<\/li>\n<li>Rewrote the listing and export database queries to use fully literal, fixed-placeholder $wpdb-&gt;prepare() calls (including a fixed 50-slot IN() list for bulk export), so every query is statically verifiable by Plugin Check.<\/li>\n<li>Shortened the readme short description to meet the 150-character limit.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed WordPress.org review issues: removed arbitrary CSS insertion, implemented wp_enqueue for assets, updated naming prefixes, removed direct core file includes.<\/li>\n<li>Rebranded plugin to better reflect EU Directive compliance.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"All-in-one EU withdraw from contract solution. Two-step form, admin panel, email notifications, and CSV\/Excel export.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/327805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=327805"}],"author":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bilalkhalidmughal"}],"wp:attachment":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=327805"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=327805"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=327805"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=327805"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=327805"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=327805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}