Title: Blueforce Age Check for WooCommerce
Author: blueforce
Published: <strong>September 21, 2026</strong>
Last modified: September 21, 2026

---

Search plugins

![](https://ps.w.org/blueforce-age-check-for-woocommerce/assets/banner-772x250.png?
rev=3704924)

![](https://ps.w.org/blueforce-age-check-for-woocommerce/assets/icon-256x256.png?
rev=3704924)

# Blueforce Age Check for WooCommerce

 By [blueforce](https://profiles.wordpress.org/worshipper/)

[Download](https://downloads.wordpress.org/plugin/blueforce-age-check-for-woocommerce.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/blueforce-age-check-for-woocommerce/)

## Description

This plugin asks for a date of birth where the order is placed and rejects the order
on the server if the customer is below your minimum age. It also covers express 
payment buttons, which skip the checkout form, and it reports every order that came
in without a valid age check.

**What it is, and what it is not.** The plugin checks a date of birth that the customer
enters. It assists your shop with its age control. It does not verify identity documents
and it does not guarantee legal compliance. You remain responsible for meeting the
rules that apply to your products and your country. If you need document verification,
use a dedicated identity service.

#### Why another age plugin

Most age plugins show a popup when someone opens the shop. A popup is answered with
one click and has no connection to the order. This plugin works at the other end:
at the moment the order is placed, on the server.

 * **No popup.** The date of birth is one field in the checkout.
 * **Checked on the server.** Changing the field in the browser does not help. Orders
   sent directly to the WooCommerce Store API are rejected as well.
 * **Express payment buttons are covered.** Buttons on product and cart pages skip
   the checkout form. The plugin asks for the date of birth right next to them, 
   checks it on the server and only then lets the payment through.
 * **A safety net.** Payment plugins change, and an update can bring a new way to
   order. Every binding order without a valid age check gets an order note, a log
   entry and an email notice, so you can clarify the age before you ship.

#### Features

 * Classic checkout and block checkout
 * Minimum age of your choice
 * Your choice of what is stored: by default only the result and the age at the 
   time of the order, optionally the full date of birth
 * The date of birth is never saved to the customer account
 * Age check result shown on the order screen
 * Site Health tests: is the check active, do the payment plugins still fit, has
   the safety net reported anything in the last 30 days
 * Personal data export and erasure, with a suggested text for your privacy policy
 * HPOS compatible
 * Translation-ready. German is included for Germany (informal and formal) and Switzerland
 * No external services, no tracking, no calls to other servers

#### Supported express payment plugins

The plugin asks for the date of birth next to the express buttons of these plugins
and rejects their orders without a confirmed age:

 * WooCommerce Stripe Payment Gateway (wallet and one-click buttons on product and
   cart pages)
 * WooCommerce PayPal Payments
 * TWINT for WooCommerce (TWINT Express Checkout)

The date of birth is asked on classic product and cart pages. At checkout, the express
buttons above the form stay locked until the date of birth field in the form holds
a valid date. In the cart block and the mini cart the buttons are shown without 
the question, and orders from there are rejected until the age is confirmed elsewhere.

Express buttons of other plugins are not unlocked by this plugin. Their orders are
rejected where they use the standard WooCommerce order routes, and reported by the
safety net otherwise. Developers can add their own adapter with the filter `bf_agecheck_express_adapters`.

A note on honesty: payment plugins are third-party code. One of the supported plugins
can create an order on a route of its own that bypasses the standard WooCommerce
order routes. For that route the plugin relies on hooks of the payment plugin. If
those hooks change, the Site Health test tells you, and the safety net still reports
such orders.

#### For developers

 * `bf_agecheck_min_age` changes the minimum age.
 * `bf_agecheck_requires_check` switches the check off, for example on a staging
   site. Answer it the same way in every context.
 * `bf_agecheck_customer_message` changes the customer messages.
 * `bf_agecheck_date_formats` adds accepted date formats.
 * `bf_agecheck_send_alert` suppresses the email notice, for example on a staging
   site.
 * `bf_agecheck_classic_field_hook` moves the field in the classic checkout.
 * `bf_agecheck_express_adapters` and `bf_agecheck_express_selectors` add or adjust
   support for express payment plugins.
 * `bf_agecheck_move_paypal_button` keeps the PayPal button on the product page 
   where it was.
 * `bf_agecheck_binding_statuses` and `bf_agecheck_monitor_order` control which 
   orders the safety net watches.
 * `bf_agecheck_legacy_meta_keys` lists meta keys of an earlier solution, so existing
   orders keep their age.

This plugin is an independent project by Blueforce Digital Solutions. It is not 
affiliated with Automattic, WooCommerce or any payment provider. Product names are
used only to describe compatibility.

## Screenshots

[⌊The date of birth field in the checkout.⌉⌊The date of birth field in the checkout
.⌉[

The date of birth field in the checkout.

[⌊The date of birth next to the express payment buttons on a product page.⌉⌊The 
date of birth next to the express payment buttons on a product page.⌉[

The date of birth next to the express payment buttons on a product page.

[⌊The settings.⌉⌊The settings.⌉[

The settings.

[⌊The age check result on the order screen.⌉⌊The age check result on the order screen
.⌉[

The age check result on the order screen.

[⌊The Site Health tests.⌉⌊The Site Health tests.⌉[

The Site Health tests.

## Installation

 1. Install and activate WooCommerce 8.9 or newer.
 2. Install and activate this plugin.
 3. Go to WooCommerce, Settings, Advanced, Age check and set your minimum age.
 4. Place a test order to see the date of birth field in your checkout.

## FAQ

### Does this plugin verify identity documents?

No. It checks a date of birth that the customer enters. If you need document verification,
use a dedicated identity service.

### Does it make my shop legally compliant?

It assists you with your age control, it cannot guarantee compliance. Which measures
are sufficient depends on your products and your country. Please check the rules
that apply to you.

### Does it show a popup when someone opens the shop?

No. The check happens where the order is placed.

### Which dates can customers enter?

In the classic checkout and next to express buttons the browser shows a date picker.
In the block checkout the field is a text field that accepts 17.05.2001 and 2001-
05-17. A date picker is used there automatically once your WooCommerce version supports
date fields. Dates with slashes are not accepted by default, because 01/02/2001 
means different days in different countries.

### What is stored?

By default only the result of the check and the age at the time of the order. You
can choose to store the full date of birth with the order. The date of birth is 
never saved to the customer account.

### Why do I get an email about an order without a valid age check?

The order reached a binding status, but no valid age check is recorded for it. Usually
a payment button skipped the checkout form. The order note names the payment method.
Please clarify the age of the customer before you ship. Orders you create yourself
in the admin area and subscription renewals are not reported.

### The express buttons are greyed out.

They unlock as soon as the customer has entered a valid date of birth: on product
and cart pages in the field above the buttons, at checkout in the date of birth 
field of the form. The confirmation lasts for the shop session, so the customer 
sees the field once.

### What happens to the data when I delete the plugin?

The settings are removed. The age check data stored with your orders stays, because
it belongs to your order history. If you store full dates of birth and want them
gone, erase the personal data of the orders with the WooCommerce tools before you
delete the plugin.

### Which WooCommerce version do I need?

WooCommerce 8.9 or newer. On older versions the plugin stays inactive and tells 
you so in the admin area.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Blueforce Age Check for WooCommerce” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ blueforce ](https://profiles.wordpress.org/worshipper/)

“Blueforce Age Check for WooCommerce” has been translated into 1 locale. Thank you
to [the translators](https://translate.wordpress.org/projects/wp-plugins/blueforce-age-check-for-woocommerce/contributors)
for their contributions.

[Translate “Blueforce Age Check for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/blueforce-age-check-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/blueforce-age-check-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/blueforce-age-check-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/blueforce-age-check-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/blueforce-age-check-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First release.
 * Date of birth field in the classic checkout and the block checkout.
 * Server-side checks for the classic checkout, the Store API and payment plugins
   that create orders directly.
 * Date of birth next to express payment buttons on product and cart pages, with
   support for WooCommerce Stripe Payment Gateway, WooCommerce PayPal Payments and
   TWINT for WooCommerce.
 * Safety net with order note, log entry and email notice for orders without a valid
   age check.
 * Choice of stored data, personal data export and erasure, Site Health tests.
 * German translations for Germany (informal and formal) and Switzerland.

## Meta

 *  Version **1.0.0**
 *  Last updated **17 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/)
   and [German](https://de.wordpress.org/plugins/blueforce-age-check-for-woocommerce/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/blueforce-age-check-for-woocommerce)
 * Tags
 * [Age Check](https://wordpress.org/plugins/tags/age-check/)[age verification](https://wordpress.org/plugins/tags/age-verification/)
   [alcohol](https://wordpress.org/plugins/tags/alcohol/)[checkout](https://wordpress.org/plugins/tags/checkout/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/blueforce-age-check-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/blueforce-age-check-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/blueforce-age-check-for-woocommerce/reviews/)

## Contributors

 *   [ blueforce ](https://profiles.wordpress.org/worshipper/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/blueforce-age-check-for-woocommerce/)