{"id":337759,"date":"2026-07-18T21:40:48","date_gmt":"2026-07-18T21:40:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/agecheck-age-verification\/"},"modified":"2026-07-18T21:40:16","modified_gmt":"2026-07-18T21:40:16","slug":"victor-eliot-age-verification","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/victor-eliot-age-verification\/","author":23529785,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Victor Eliot \u2013 Age Verification for WooCommerce","header_author":"Victor Eliot","header_description":"Connects WooCommerce to AgeCheck (agecheck.cz), a Czech age-verification service. Verifies customers are 18+ via Bank iD, MojeID, data box or ID document scan before checkout \u2014 for the whole shop, selected categories or single products. Confirmed server-side. Built for the Czech market (Act No. 65\/2017 Coll.).","assets_banners_color":"16336e","last_updated":"2026-07-18 21:40:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/agecheck.cz\/reseni\/woocommerce","header_author_uri":"https:\/\/victoreliot.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"victoreliot","date":"2026-07-18 21:40:16"}},"upgrade_notice":{"2.0.0":"<p>Major update: category picker, per-product exemptions, new triggers and\nremembered verification.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3613016,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3613016,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3613016,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3613016,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3613016,"resolution":"1","location":"assets","locale":"","width":2560,"height":1840},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3613016,"resolution":"2","location":"assets","locale":"","width":2560,"height":1280},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3613016,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3613016,"resolution":"4","location":"assets","locale":"","width":2560,"height":1640},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3613016,"resolution":"5","location":"assets","locale":"","width":2560,"height":1440}},"screenshots":{"1":"Plugin settings \u2014 category picker with 18+ suggestions","2":"Per-product control \u2014 mark a single product as \"requires 18+\" or \"exempt\" right in the product data","3":"Age gate in the checkout","4":"Site-wide gate (the \"page entry\" trigger)","5":"Proof of verification in the order detail"}},"plugin_section":[],"plugin_tags":[70877,5616,226616,3148,286],"plugin_category":[45],"plugin_contributors":[272239],"plugin_business_model":[],"class_list":["post-337759","plugin","type-plugin","status-publish","hentry","plugin_tags-age-gate","plugin_tags-age-verification","plugin_tags-bankid","plugin_tags-checkout","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-victoreliot","plugin_committers-victoreliot"],"banners":{"banner":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/banner-772x250.png?rev=3613016","banner_2x":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/banner-1544x500.png?rev=3613016","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/icon-128x128.png?rev=3613016","icon_2x":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/icon-256x256.png?rev=3613016","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/screenshot-1.png?rev=3613016","caption":"Plugin settings \u2014 category picker with 18+ suggestions"},{"src":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/screenshot-2.png?rev=3613016","caption":"Per-product control \u2014 mark a single product as \"requires 18+\" or \"exempt\" right in the product data"},{"src":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/screenshot-3.png?rev=3613016","caption":"Age gate in the checkout"},{"src":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/screenshot-4.png?rev=3613016","caption":"Site-wide gate (the \"page entry\" trigger)"},{"src":"https:\/\/ps.w.org\/victor-eliot-age-verification\/assets\/screenshot-5.png?rev=3613016","caption":"Proof of verification in the order detail"}],"raw_content":"<!--section=description-->\n<p>This plugin connects WooCommerce to <strong>AgeCheck<\/strong> (agecheck.cz), a Czech\nage-verification service, so your shop can sell age-restricted (18+) goods in\nline with Act No. 65\/2017 Coll. (for tobacco and nicotine products, distance\nselling requires a system that electronically and unambiguously verifies the\nbuyer's age \u2014 a simple \"I am 18\" checkbox is not enough).<\/p>\n\n<p>The plugin blocks order completion for age-restricted (18+) products until the\ncustomer proves their age. The result is confirmed <strong>server-side<\/strong> (your secret\nAPI key never reaches the browser), so the check cannot be bypassed from the\nfront end.<\/p>\n\n<p>The plugin interface is provided in Czech (and Slovak) and can be translated.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Verification via <strong>Bank iD, MojeID, data box (datov\u00e1 schr\u00e1nka) or ID document scan<\/strong><\/li>\n<li><strong>What to verify:<\/strong> the whole shop \/ selected product categories (a clear\npicker that highlights typical 18+ categories) \/ individual products \u2014\n\"requires verification\" or \"exempt\" right in the product settings (exempt always wins)<\/li>\n<li><strong>When to verify:<\/strong> at order completion (default) \/ when a gated item is added\nto the cart \/ on page entry (site-wide gate)<\/li>\n<li><strong>Remember verification:<\/strong> a configurable number of days \u2014 on the device\n(signed cookie) and, for logged-in customers, on their account (works across\ndevices); 0 = verify on every order<\/li>\n<li><strong>AgeCheck network:<\/strong> a customer already verified at another shop in the\nnetwork passes with a single click (cheaper repeat verification)<\/li>\n<li>Works with the classic checkout and the <strong>block checkout (Store API)<\/strong> \u2014\nserver-side check in both; a proof-of-verification is stored on the order\n(visible in the order detail \u2014 evidence for regulatory inspections)<\/li>\n<li>Privacy by design: only a \"18+ yes\/no\" proof is stored, never the customer's\nname or document number<\/li>\n<li>HPOS compatible<\/li>\n<li>No monthly fee \u2014 you pay only for completed verifications (account at agecheck.cz)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>AgeCheck<\/strong> service (agecheck.cz), which performs\nthe age verification itself. Without an account at agecheck.cz the plugin does\nnot work.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> to start a verification, your shop's server creates a session\nthrough the API (only an internal order\/cart reference is sent). The customer's\nbrowser then opens the verification window on agecheck.cz and polls the session\nstatus (session ID). Your shop's server confirms the result through the API\nusing your API key.<\/li>\n<li><strong>What is NOT sent:<\/strong> the plugin does not send the customer's name, address or\norder contents to the service.<\/li>\n<li><strong>When:<\/strong> only during age verification (no analytics, no background tracking).<\/li>\n<li>Provider: vinireto s.r.o., https:\/\/agecheck.cz \u2014\nterms: https:\/\/agecheck.cz\/tos \u00b7 privacy: https:\/\/agecheck.cz\/privacy-policy<\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>Author: Victor Eliot\nE-mail: mail@victoreliot.com\nPhone: +420 777 666 651\nWeb: https:\/\/agecheck.cz<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>victor-eliot-age-verification<\/code> folder to <code>\/wp-content\/plugins\/<\/code>\n(or install the ZIP via Plugins \u2192 Add New \u2192 Upload Plugin) and activate it.<\/li>\n<li>Register your shop for free at https:\/\/agecheck.cz\/register and copy the shop\nID (<code>mrch_\u2026<\/code>) and API key (<code>oid_live_\u2026<\/code>) from the <strong>Integration<\/strong> section.<\/li>\n<li>Go to <strong>Settings \u2192 AgeCheck<\/strong>, enter both values and choose:\n\n<ul>\n<li>what to verify (all \/ categories \/ products),<\/li>\n<li>when (order completion \/ add to cart \/ page entry),<\/li>\n<li>how long to remember a verification.<\/li>\n<\/ul><\/li>\n<li>For individual products you can tick \"Requires age verification 18+\" or\n\"Exempt from age verification\" in the product settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20at%20agecheck.cz%3F\"><h3>Do I need an account at agecheck.cz?<\/h3><\/dt>\n<dd><p>Yes. Registration is free and a new account gets a welcome credit to try it out;\nyou only pay for completed verifications, with no monthly fee.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20%28gutenberg%29%20checkout%3F\"><h3>Does it work with the block (Gutenberg) checkout?<\/h3><\/dt>\n<dd><p>Yes \u2014 the server-side check also runs through the Store API, so an order cannot\nbe completed without verification. The verification panel appears in the cart and\nvia the \"add to cart\" \/ \"page entry\" triggers; on the classic checkout it appears\nright above the \"Place order\" button.<\/p><\/dd>\n<dt id=\"can%20a%20customer%20bypass%20verification%20by%20disabling%20javascript%3F\"><h3>Can a customer bypass verification by disabling JavaScript?<\/h3><\/dt>\n<dd><p>No \u2014 the decisive check runs on the server (<code>woocommerce_checkout_process<\/code> and\nthe Store API). Without a confirmed verification the order will not go through.<\/p><\/dd>\n<dt id=\"do%20you%20store%20customers%27%20personal%20data%3F\"><h3>Do you store customers' personal data?<\/h3><\/dt>\n<dd><p>No. The service returns only the \"is over 18: yes\/no\" result and the method used.\nThe name, date of birth and document number are not sent to the shop.<\/p><\/dd>\n<dt id=\"how%20strict%20is%20remembering%20a%20verification%3F\"><h3>How strict is remembering a verification?<\/h3><\/dt>\n<dd><p>You decide: 0 days = every order is verified; otherwise the verification is\nremembered on the device (signed cookie) and, for logged-in customers, on their\naccount.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>New modes: whole shop \/ selected categories (checkbox picker with suggestions) \/ products<\/li>\n<li>New per-product \"Exempt from age verification\" flag (wins over everything)<\/li>\n<li>Triggers: order completion \/ add to cart \/ page entry (overlay)<\/li>\n<li>Remember verification: signed cookie + customer account, configurable days<\/li>\n<li>Block checkout: server-side check via the Store API<\/li>\n<li>Proof of verification on the order detail (HPOS)<\/li>\n<li>Security: sanitization of all settings, escaping, i18n, uninstall.php<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: classic checkout gating, server-side confirmation, per\nproduct\/category rules, HPOS.<\/li>\n<\/ul>","raw_excerpt":"Age verification (18+) for WooCommerce via Bank iD, MojeID, data box or ID scan. Powered by AgeCheck (agecheck.cz). Confirmed server-side.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337759"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/victoreliot"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337759"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337759"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337759"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337759"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337759"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}