---
title: "Troubleshoot API Manager"
url: "https://kestrelwp.com/docs/troubleshoot-api-manager/"
description: "Fixes for API Manager licenses that don't exist, requests that don't match, and blocked updates."
published: "2026-10-06T20:27:12+00:00"
modified: "2026-11-03T17:20:27+00:00"
---

Most API Manager problems come down to three things: the license doesn’t exist (because of the order’s status or a guest order), the request from your software doesn’t match the license (wrong key or product ID), or something between your software and your store blocks the request. This page lists the symptoms and messages you’re likely to see, with the cause and fix for each.

Our support covers API Manager on your store: licenses, activations, downloads and the licensing API. For your own software, app or custom client, we can offer basic guidance, but we can’t build or debug it for you.

## Start with the logs

Under **API Manager » Configuration » Debug**, turn on **Server error log** (and **Server request log** if you need every request), reproduce the problem, then open the log from **View Log** or **WooCommerce » Status » Logs**. Each error is logged with the request your software sent, which usually shows the missing or wrong value. Turn the logs off afterwards.

To rule out your software, send the same request with Postman. The PHP library includes a Postman collection, and the [licensing API reference](/docs/api-manager-licensing-api/) has examples.

## Licenses and orders

### A customer has no license after buying

Check these in order:

1. **The order status.** Licenses exist only while the order is **Completed**, or **Processing** when **Grant access to downloadable products after payment** is on under **WooCommerce » Settings » Products » Downloadable products**.
2. **The customer account.** A guest order gets no license. API Manager logs "Guest order reached a license-creation status but has no customer account; license resources were not created. Enable account creation at checkout to prevent this." To fix one, assign the order to a customer account (create one if needed), save the order, then choose **Regenerate licensing resources** from the order actions.
3. **The product.** **Licensing** must be ticked on the product. If you ticked it after the sale, API Manager builds licenses for past orders in the background, which can take a few minutes on a large store.
4. **Expiry.** A license that has expired and passed its grace period, or whose subscription ended, has been deleted.

For many orders at once, run **Licensing resources repair** under **WooCommerce » Status » Tools**.

### A renewal gave a customer a second license that never expires

API Manager 3.8.0 and 3.8.1 treated a renewal of a product sold on a WooCommerce Subscriptions plan as a one-time purchase, so the renewal order issued its own license alongside the subscription’s, and that license never expires. Version 3.9.0 stops new ones and removes the existing ones:

1. Update API Manager to 3.9.0 or later.
2. Under **WooCommerce » Status » Tools**, run **Licensing resources repair**. It removes every renewal license that nothing is activated with. The subscription keeps its own license, so the customer loses nothing.
3. Open **WooCommerce » Status » Logs** and choose the `missing-api-resources-repair` log. Each "Kept licensing resource" line names a renewal license the tool left in place because a site is activated with it, along with its renewal order and subscription.
4. For each one, open the renewal order and, under **License activations**, click **Delete** on its activations.
5. Run **Licensing resources repair** again. It now removes those licenses too.
6. Ask the customer to activate those sites again. They now activate against the subscription’s license, which expires and renews with the subscription.

Do step 5 before the customer reactivates. Until the extra license is removed, a new activation can land on it again.

### A license disappeared after an order or subscription change

Moving the order to any status other than **Completed** (or **Processing** with download access after payment), trashing it, or cancelling its subscription removes the license and its activations. See [What order changes do to licenses](/docs/manage-api-manager-licenses-and-activations/#what-order-changes-do-to-licenses).

## Activation errors

These messages come from your store and are shown by your software (the PHP library shows them on its activation screen).

### "No licensing resources exist. Login to My Account to verify there are activations remaining, and the license key and product ID are correct."

No active license matches the key and product ID sent. Compare both with the order’s **Licensing** box or the customer’s **My Account » License keys** page:

- The key must be the customer’s user license key or the product license key for that order, whichever **Enabled types** allows.
- The product ID must be the **Licensed product ID** of the product (for variable products, the variation the customer bought).
- If the license expired, check its grace period and renewal. See [How API Manager license expiration and renewal work](/docs/api-manager-license-expiration-and-renewal/).

A product list request, which checks only the key, returns the same message ending "…and the license key is correct."

### "Cannot activate license key. No licensing resources available."

The license has no activations left. Delete an old activation from the order’s **License activations** box, ask the customer to delete one from **My Account » License keys**, or raise **Activation limit total** on the order.

### "Cannot activate license key. The license key has already been activated with the same unique instance ID sent with this request."

The software sent an instance ID that’s already active, usually after it lost its saved activation. Delete the existing activation for that site, then activate again. Each installation needs its own instance ID.

### "A customer account does not exist for this license key."

The key sent doesn’t exist on this store. It was typed wrong, or it was replaced. Check the key on the customer’s **My Account » License keys** page, or on their user profile if you replaced their user license key.

### "The access for this license key has been disabled, or a license key was sent that does not exist on this store."

The customer’s user license key is disabled on their user profile, which stops every key they have. See [Manage a customer’s user license key](/docs/manage-api-manager-licenses-and-activations/#manage-a-customer-s-user-license-key).

### "The following required query string data is missing:"

The request left out a required key, named after the colon. Most often it’s the product ID, when the software doesn’t hard-code it and the customer left it empty. See the required keys for each action in the [licensing API reference](/docs/api-manager-licensing-api/).

### "The source is not trusted."

Your `wp-config.php` defines `WC_AM_TRUSTED_SOURCES`, and the request came from an IP address that isn’t listed, or didn’t send a matching `ip_address`. See [Trusted sources](/docs/api-manager-licensing-api/#trusted-sources).

## Connection and update problems

### Customers see "Connection failed to the licensing server."

The customer’s site couldn’t reach your store, or got an unexpected response. Check, in this order:

1. Your store’s SSL certificate is valid and not expired. The PHP library checks it on live sites.
2. Your caching plugin, host cache or CDN doesn’t cache requests with the `wc-api=wc-am-api` query string. API Manager already tells caches not to cache your home page, where requests arrive; if you turned that off with `WC_AM_DISABLE_HOMEPAGE_CACHE`, exclude the query string yourself.
3. Your firewall, security plugin or a service such as Cloudflare doesn’t block those requests or their query strings.
4. `WP_DEBUG_DISPLAY` is off on your store. PHP notices printed into a response break it. Set `define( 'WP_DEBUG', false );` in production, or log errors instead of displaying them.
5. The customer’s server allows outgoing HTTPS requests.

Start without a firewall or CDN, confirm requests work, then add those services back and test again.

### "The product ID … could not be found in this store."

Returned to update and information requests when the product ID isn’t a licensing product on this store, often because the product was duplicated or the ID was typed wrong. Use the **Licensed product ID** from the product’s **Licensing** tab. An activation with a wrong product ID returns "No licensing resources exist…" instead.

### Updates don’t appear on customers’ sites

- The **Version** on the product’s **Licensing** tab must be higher than the version installed.
- The current release must be the first file under **Downloadable files**.
- Save the product again to refresh its cached update details.

### WordPress shows "Update package not available"

Your store told the site about the new version, but only sends the download to an installation with an activated, active license. The key isn’t activated on that site, or the license expired. Activate the key again, then retry. If it persists, check the product’s first downloadable file and the download errors in [Deliver downloads and software updates with API Manager](/docs/api-manager-downloads-and-updates/#common-issues).

## Store setup problems

### Amazon S3 downloads stopped working after changing security keys

API Manager encrypts the stored **AWS secret access key** with your site’s WordPress security keys. If you change `AUTH_KEY` or `NONCE_SALT` in `wp-config.php`, enter the secret key again under **API Manager » Configuration » Downloads**, or define `WC_AM_AWS3_SECRET_ACCESS_KEY` in `wp-config.php` instead.

### License keys or Licensed downloads shows a 404

Go to **Settings » Permalinks** and click **Save Changes** to refresh WordPress’s rewrite rules.

### License keys pages, renewals or emails are missing with an older WooCommerce Subscriptions

With a WooCommerce Subscriptions version older than 5.0 active, API Manager doesn’t load its My Account pages, renewals or emails. Update WooCommerce Subscriptions to 5.0 or later.

### Activations from staging sites use up slots

Turn on **Ignore test activations**, and make sure your software sends the site address with each activation (the PHP library does). Activations from a site already activated before the setting was on still count; delete them from the order.

## Keep learning

- [Get started with API Manager](/docs/get-started-with-api-manager/)
- [Manage API Manager licenses and activations](/docs/manage-api-manager-licenses-and-activations/)
- [API Manager licensing API reference](/docs/api-manager-licensing-api/)
- [API Manager PHP library for plugins and themes](/docs/woocommerce-api-manager-php-library-for-plugins-and-themes-documentation/)
