# Upgrades

An upgrade moves a customer from one SKU to another — for example _Standard → Gold_, or _V1 → V2_. This page explains how upgrades work, independently of any specific language or store integration.

For implementation details, see the [C++ Upgrade Licenses tutorial](/content/docs/developers/tutorials/cpp-upgrade-licenses/index.html) or the [WooCommerce upgrade integration](/content/docs/developers/integrations/woocommerce/upgrade/index.html).

## The two licenses involved

Every upgrade involves two serials:

- The **source** — the customer’s current license.
- The **target** — the upgrade license they move to.

## How the match works

- When you create the upgrade (target) license, you mark it as an upgrade license and choose which **source SKU(s)** it accepts.
- KEYZY validates the upgrade by **SKU identity**: it checks whether the source license’s SKU is one of the accepted sources. It does **not** compare the individual products inside two SKUs.
- An upgrade can accept **several source SKUs at once**. This is “any one of these sources” (OR) — a holder of any accepted source SKU can use the upgrade, and you do not need a separate upgrade definition per source.

If the source license’s SKU is not an accepted source, the upgrade is rejected (an “upgrade does not match” result).

## One license in, one license out

An upgrade is strictly **one license in, one license out**. On success the server deletes the source license and makes the target available to activate. After the upgrade succeeds on the server, you still activate the target serial as usual.
