DEV Community

Željko Šević
Željko Šević

Posted on • Originally published at sevic.dev on

License key verification with Gumroad API

Gumroad allows verifying license keys via API calls to limit the usage of the keys. It can be helpful to prevent the redistribution of products like desktop apps.

Allow generating a unique license key per sale in product settings, and the product ID will be shown there. Below is the code snippet for verification.

try {
  const requestBody = new URLSearchParams();
  requestBody.append('product_id', process.env.PRODUCT_ID);
  requestBody.append('license_key', process.env.LICENSE_KEY);
  requestBody.append('increment_uses_count', true);
  const response = await fetch('https://api.gumroad.com/v2/licenses/verify', {
    method: 'POST',
    body: requestBody,
  });
  const data = await response.json();

  if (data.purchase?.test) {
    console.log('Skipping verification for test purchase');
    return;
  }

  const verificationLimit = Number(process.env.VERIFICATION_LIMIT);
  if (data.uses >= verificationLimit + 1) {
    throw new Error('Verification limit exceeded');
  }

  if (!data.success) {
    throw new Error(data.message);
  }
} catch (error) {
  if (error?.response?.status === 404) {
    console.log('License key doesn\'t exist');
    return;
  }

  console.log('Verifying license key failed', error);
}
Enter fullscreen mode Exit fullscreen mode

Demo

The demo with the mentioned example is available here.

Top comments (0)