Activation token works after expiration


I am testing the online activation and validation through woocommerce for a hardware locked workbook.

I have the license set to expire after one day. I am manually entering an order in woocommerce with my hardware activation key. After that, I enter my activation token based on my email and order number. Everything works as expected.

When I come back the next day, it says my license has expired, and that I need to enter a new activation token. When I enter the same activation token (email and order number), the software is activated and my 1 day license periods starts again.

What is going on here and how can I resolve it? Obviously the intent would be that somebody needs to re-purchase after the license period expires.


I have this same issue. I have had a couple of users figure this out and activated their trial more than 1 time. I had to go into WooCommerce and block that order so they couldn’t do it again.

It’s a known problem because the WooCommerce script allows reactivation on the same machine. You can modify the PHP code so that only one activation is allowed on a machine for a trial period.

1 Like

Same issue for me.

Is there an alternative solution, different than modify the PHP code in Woocommerce?

For example a wordpress plugin that switches the order status from completed to suspended after a certain period?


I think I will go with a subscription setup anyhow, I just have not purchased the plugin yet. Will having a subscription change this? (ie. If a person ended their subscription would they still be able to reactivate with the same token?).

But I would still have an issue with the have a trial version, and would want it set so that they would never be able to reactivate on the same machine. I’m not even sure manually blocking would work here, because would I need to manually unblock if they purchased the old version.

I have zero php experience but could try to muddle though. Do you have any guidance on how you would need to adjust the code?


Yes, you are right: it’s another possibility rather than changing the PHP code. Here is a suggestion:

In a few days, we’ll release a new subscription kit that uses FastSpring and not WooCommerce. And it will be free. No need to purchase the subscription plugin from WooCommerce.

Thanks, I will hold off on figuring out the subscription side until that is available.

I’m still not sure what to do for the free trial. From the testing I have done:

  • After the trial is complete, the same activation token will work if the order status is still set to complete.
  • I can change the order status (hopefully through an automated method), and that will prevent the same order number from working again. But if somebody order’s the free trial again, their new order number will work. I did not see a way to restric the number of purchases (of this free item) for a particular user.
  • I could block the user (again could hopefully make this automated), and I think that if any order has the blocked status, the user will remain blocked (so this would resolve the re-ordering issue). The problem I think is that this would also prevent them from purchasing activating the full version, even with their hardware key blocked only on a trial version order. Is that correct?

Not too sure what to do here. Is anyone aware of a workaround?