Unused marketplace subscriptions are lines that come not from operations but from a contract: a SaaS subscription that renews monthly after the project ended; a licence fee per hour for a marketplace image that runs on beside a stopped or idle instance; a private offer whose term has expired and that runs on at list price. The saving comes from cancelling a subscription, replacing an image with one without a licence fee and renegotiating a contract before its renewal. The fix belongs to the team that once ordered the software, with procurement where a contract stands behind it.
Symptom
The bill shows third-party lines whose quantity does not move with use. On AWS they carry bill/BillingEntity AWS Marketplace instead of AWS, a vendor's lineItem/ProductCode instead of an AWS service, and for images a software fee per instance hour beside the BoxUsage line of the same instance; a SaaS contract appears as a monthly or yearly line with bill/BillType Purchase. On Azure they come with PublisherType Marketplace and the vendor's PublisherName, for SaaS with ChargeType Purchase and Frequency Recurring, for images as the vendor's licence meter beside the VM meter. On Google Cloud they appear under the service name of the marketplace product, with the vendor in the SKU description, for images as a licence SKU beside the instance SKUs. What marketplace purchases mean on the bill in principle is in marketplace purchases; this page covers the ones nobody uses any more.
How to detect it
AWS
The instances whose image carries a product code, and the marketplace lines of the last month:
aws ec2 describe-instances --query 'Reservations[].Instances[?ProductCodes].[InstanceId,State.Name,InstanceType,ProductCodes[0].ProductCodeId,ImageId]' --output table
aws ec2 describe-images --image-ids <ami-id> --query 'Images[].[ImageId,Name,ProductCodes[].ProductCodeId|join(`,`,@)]' --output table
A stopped instance pays no software fee per hour, but a yearly subscription for the same product runs on; subscriptions and contracts with term and renewal are in the AWS Marketplace console under "Manage subscriptions" (read on 2026-10-21). Trusted Advisor and Compute Optimizer do not check marketplace purchases. In billing data the list is the sum per lineItem/ProductCode with bill/BillingEntity AWS Marketplace, compared with the instances that carry the code; a code without a running instance and a Purchase without usage lines are the candidates (AWS Cost and Usage Report, CUR billing columns).
Azure
The marketplace lines of the last month and the VMs with a marketplace image:
az consumption marketplace list --start-date 2026-09-01 --end-date 2026-09-30 \
--query "[].{publisher:publisherName, offer:offerName, plan:planName, resource:instanceName, cost:pretaxCost, recurring:isRecurringCharge}" -o table
az vm list --query "[?plan!=null].{name:name, rg:resourceGroup, publisher:plan.publisher, product:plan.product, plan:plan.name, state:provisioningState}" -o table
A VM with a plan pays the vendor's licence per hour while it is allocated; SaaS subscriptions are in the portal under Marketplace, SaaS, with plan, term and renewal (cost details fields). Azure Advisor has no recommendation on marketplace purchases. In the cost export the list is the sum per PublisherName and PlanName with PublisherType Marketplace, compared with the resources that carry the plan (Azure cost exports).
Google Cloud
The instances with a licence on the boot image, and the marketplace orders:
gcloud compute instances list --format="table(name,zone.basename(),status,disks[0].licenses.list())"
Licences of marketplace images sit on the boot disk and are billed per instance hour; SaaS orders and their terms are in the console under Marketplace, "Your orders", with the billing account that carries them. There is no recommender for it. In the billing export the list is the sum per service.description that is not a Google service, compared with the instances that carry the licence (Google Cloud billing export).
How to fix it
- Find the owner and the contract per line: who ordered, how long the term is, when the notice period ends, whether there is a private offer with an end date. The contracts belong in the register of procurement, contracts and renewals.
- Cancel what nobody uses: SaaS subscriptions in the provider's marketplace console before the next renewal, within the vendor's notice period; contracts with a fixed term run to their end, but automatic renewal is switched off.
- Images without a licence fee: an instance with a marketplace image that does not need the software is rebuilt from a standard image; on AWS
aws ec2 describe-images --image-ids <ami-id>checks the target image's product code, on Azureaz vm image show --urn <urn> --query planshows the plan, on Google Cloudgcloud compute images describe <image> --format="value(licenses)"the licences. An instance that needs the software but only by the hour is stopped where the fee runs per hour. - Correct the template: marketplace images only through an allow list, every purchase with an owner, an end date and a notice period in the contract register, and the marketplace sum as a line of its own in the cost review.
A cancellation takes effect at the vendor's next billing; an hourly fee ends with the instance. None of these steps has a dry run; the list and the contract stand in for it.
Risks and side effects
- A subscription nobody uses any more sometimes holds data at the vendor: export before the cancellation, or it is gone.
- Contracts with a fixed term and private offers cannot be ended early; the saving starts at the end of the term, and the notice period is the date that counts.
- An image without a licence fee is not the same product: the vendor's support, updates and configuration fall away, and a rebuild takes time and a test.
- Marketplace purchases count towards the framework contract's commitment at all three providers, on AWS the Enterprise Discount Program, on Azure the MACC; a cancellation lowers the counted sum (enterprise agreements and private pricing).
- A SaaS subscription on the wrong bill is sometimes a question of allocation, not of use; the team that uses it sits in another account.
How to verify the saving
Before: the marketplace lines per vendor and product in the last full month, on AWS per lineItem/ProductCode with bill/BillingEntity AWS Marketplace, on Azure per PublisherName and PlanName, on Google Cloud per marketplace service, with a note on whether a resource uses them. After: the same lines in the first full month after the cancellation or rebuild, expected zero for the cancelled ones and without a licence meter for the rebuilt instances. The amount of the list is the estimate, the owner's consent makes it accepted, the cancellation implemented, and the following month's invoice realises it in the pattern of estimated, accepted, implemented, verified. The number of marketplace lines without an owner is the figure that then stays at zero.
Sources
Read on 2026-10-21. CUR billing columns, describe-images, Azure cost details fields, az consumption marketplace, gcloud compute instances list.