# Software Licensing - Minimum Requirements

Software Licensing 3.8 introduced the ability to set minimum platform requirements for products. If a customer doesn&#039;t meet those requirements, they won&#039;t be given automatic updates through the API.

- [API prerequisites](#prerequisites)
- [Configuring requirements for a product](#configuring-requirements)
- [Adding custom requirements](#custom-requirements)



API prerequisites
-----------------

In order for this feature to work properly, the customer&#039;s platform versions need to be sent along with the API request that checks for an update.

If you&#039;re using [our plugin updater](https://easydigitaldownloads.com/docs/software-licensing-updater-implementation-for-wordpress-plugins/), that means your product needs to be bundling version 1.9 or greater of the `EDD_SL_Plugin_Updater` class file.

If you&#039;re using [our theme updater](https://easydigitaldownloads.com/docs/software-licensing-updater-implementation-for-wordpress-themes/), your product needs to be bundling version 1.2 or greater.

If you&#039;ve built a custom integration, you need to make sure to include &quot;php\_version&quot; and &quot;wp\_version&quot; in your API request. Consult our [API documentation](https://easydigitaldownloads.com/docs/software-licensing-api/) for more details.

If a customer&#039;s site does not include the platform version(s) in the API request then those requirements will not be checked and the user may still receive the update.

Configuring requirements for a product
--------------------------------------

To configure requirements for a product, edit the product via Downloads &gt; Edit. On the right sidebar, search for a metabox called &quot;Download Requirements&quot;. It looks like this:

![](https://easydigitaldownloads.com/wp-content/uploads/2022/01/CleanShot-2025-09-15-at-2136502x-800x225.png)Simply enter your minimum required versions and save. Any versions left blank will not be checked or required.

Adding custom requirements
--------------------------

By default Software Licensing supports PHP and WordPress versions, though your own dependencies can be added with some custom code. Two steps are required:

**1. Add your dependency to the metabox**

Adding a new dependency is done with a simple filter like this, which needs to be added to your own site:

```
add_filter( &#039;edd_sl_platforms&#039;, function( $platforms ) {
	$platforms[&#039;your-platform-id&#039;] = &#039;Your Platform Display Name&#039;;
	
	return $platforms;
} );
```

Replace `your-platform-id` with a unique, slug-friendly version of your dependency name, and replace `Your Platform Display Name` with the display-friendly version. Here&#039;s an example of adding Easy Digital Downloads as a requirement:

```
add_filter( &#039;edd_sl_platforms&#039;, function( $platforms ) {
	$platforms[&#039;easy-digital-downloads&#039;] = &#039;Easy Digital Downloads&#039;;

	return $platforms;
} );
```

Once added, your platform will appear in the metabox:

![](https://easydigitaldownloads.com/wp-content/uploads/2022/01/CleanShot-2025-09-15-at-2138462x-800x229.png)**2. Include the dependency version in your API request**

When checking for a new update via the API (within your product), you need to send the dependency&#039;s current version number in the API request. To do that, you simply have to append a new argument: `{your platform ID}_version`.

A version check request normally looks like this:

```
https://YOURSITE.com/?edd_action=get_version&amp;item_id=8&amp;license=cc22c1ec86304b36883440e2e84cddff&amp;url=https://licensedsite.com
```

But with our new argument, it would look like this:

```
https://YOURSITE.com/?edd_action=get_version&amp;item_id=8&amp;license=cc22c1ec86304b36883440e2e84cddff&amp;url=https://licensedsite.com&amp;easy-digital-downloads_version=1.0
```

Note the addition of `&amp;easy-digital-downloads_version=1.0` at the end.

If you&#039;re using a custom updater, you can add the new argument directly to the API parameters sent with the request:

```
$api_params = array(
	&#039;edd_action&#039;                     =&gt; &#039;get_version&#039;,
	&#039;license&#039;                        =&gt; ! empty( $data[&#039;license&#039;] ) ? $data[&#039;license&#039;] : &#039;&#039;,
	&#039;item_name&#039;                      =&gt; isset( $data[&#039;item_name&#039;] ) ? $data[&#039;item_name&#039;] : false,
	&#039;item_id&#039;                        =&gt; isset( $data[&#039;item_id&#039;] ) ? $data[&#039;item_id&#039;] : false,
	&#039;version&#039;                        =&gt; $this-&gt;version,
	&#039;slug&#039;                           =&gt; $data[&#039;slug&#039;],
	&#039;author&#039;                         =&gt; $data[&#039;author&#039;],
	&#039;url&#039;                            =&gt; home_url(),
	&#039;beta&#039;                           =&gt; ! empty( $data[&#039;beta&#039;] ),
	&#039;php_version&#039;                    =&gt; phpversion(),
	&#039;wp_version&#039;                     =&gt; get_bloginfo( &#039;version&#039; ),
	&#039;easy-digital-downloads_version&#039; =&gt; defined( &#039;EDD_VERSION&#039; ) ? EDD_VERSION : &#039;&#039;, // current version number
);
```

If you&#039;re using our plugin updater class (version 1.9 or greater), then you can add this argument to the API request by using a filter. This filter needs to be part of your plugin, as it runs on your customers&#039; sites:

```
add_filter( &#039;edd_sl_plugin_updater_api_params&#039;, function( $api_params, $api_data, $plugin_file ) {
	/*
	 * Make sure $plugin_file matches your plugin&#039;s file path. You should have a constant for this
	 * or can use __FILE__ if this code goes in your plugin&#039;s main file.
	 */
	if ( __FILE__ === $plugin_file ) {
		// Dynamically retrieve the current version number.
		$api_params[&#039;easy-digital-downloads_version&#039;] = defined( &#039;EDD_VERSION&#039; ) ? EDD_VERSION : &#039;&#039;;
	}

	return $api_params;
}, 10, 3 );
```

Be sure to replace `easy-digital-downloads` with the unique ID you&#039;ve chosen for your dependency, and `defined( &#039;EDD_VERSION&#039; ) ? EDD_VERSION : &#039;&#039;` with the current version number. This value needs to be able to be dynamically retrieved by the customer site.