License key verification with Gumroad API

Published November 16, 2023Last updated June 14, 20241 min read

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');
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");
console.log('Verifying license key failed', error);


The demo with the mentioned example is available here.