---
title: Metering limitations and FAQ
slug: metering-limitations-and-faq
icon: {"faIcon":"fa-brands fa-wordpress"}
docTags: 
createdAt: 2026-02-23T14:38:52.766Z
---



# What is Metering, in Plain English?

When a customer buys a SaaS offer on Microsoft Marketplace, they usually pay a flat monthly fee. But some offers also charge based on actual usage — things like emails sent, API calls made, or GB of data processed. This is called metered billing.

The way it works is simple: your platform (the ISV's software) keeps track of how much the customer uses, and whenever usage goes over the included amount, it sends a report to Microsoft saying "this customer used X units of Y thing." Microsoft then bills the customer for that extra usage.

That report is sent through the Metering Service API. And that API has specific rules about how and when you can send those reports.



# The One Rule You Need to Know

Almost everything about the metering API comes down to one rule:



| **📌  The Golden Rule**<br />You can only send ONE usage report per customer subscription, per billing metric, per calendar hour.  If you try to send a second one for the same combination within the same hour, it gets rejected as a duplicate. |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |



That's it. Everything else is just a variation of this.



## What does "per subscription + per metric + per hour" actually mean?

Subscription = one customer's order. Each order has a unique ID.

Metric (dimension) = the thing you're billing for (e.g. emails\_sent, api\_calls, storage\_gb). Each offer can have multiple.

Calendar hour = e.g. 08:00–08:59 is one hour. 09:00 starts a fresh slot.



So the rule applies to a specific combo of all three. Change any one of them, and it's a completely separate slot.



# So What Can I Send?

## ✅ Two reports for different customers — no problem

If Customer A and Customer B both have active subscriptions, you can send a report for both at the exact same time. They have different subscription IDs, so they're totally independent. You could send reports for 100 different customers simultaneously.



## ✅ Two reports for different metrics — no problem

If your offer has two billing dimensions (say, emails\_sent and api\_calls), you can send a report for both in the same minute. Different metrics = different slots. No conflict.



## ✅ Two reports for the same customer, same metric, different hours — fine

If you send a report for Customer A's email usage at 08:55, and then again at 09:05 — that's fine. Those are two different calendar hours, so they're separate slots.



## ❌ Two reports for the same customer, same metric, same hour — rejected

If you send a report for Customer A's email usage at 08:10, and then another one at 08:45 for the same metric — the second one will be rejected. You already filled that slot.



| **💡  The Right Way to Handle This**<br />Don't send every usage event as it happens. Instead, collect and add up all the usage within an hour, then send one single report at the end of that hour with the total. That's what Microsoft recommends too. |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |



# Only Active Subscriptions

You can only send usage reports for subscriptions that are currently active. Microsoft will reject events for subscriptions that are:

•        Cancelled / Unsubscribed

•        Suspended

•        Still pending activation (PendingFulfillmentStart)



The one exception: if a customer cancels today, you can still send usage reports for the period before the cancellation — as long as you do it within the 24-hour window.



# Common Scenarios at a Glance



| **Situation**                                                                   | **Result**      | **Why**                                         |
| ------------------------------------------------------------------------------- | --------------- | ----------------------------------------------- |
| Two events for the same order, same meter, 5 min apart (same hour)              | **❌  Rejected** | Same hour — combine into one event              |
| Two events for the same order, same meter, different hours (e.g. 8:50 and 9:05) | **✅  Accepted** | Different hours, no conflict                    |
| Two events for the same order, different meters, same time                      | **✅  Accepted** | Different dimensions are independent            |
| Two events for different orders (subscriptions), same meter, same time          | **✅  Accepted** | Different subscriptions = no conflict at all    |
| Event for a cancelled or suspended subscription                                 | **❌  Rejected** | Only active (Subscribed) subscriptions accepted |





*[Source: Microsoft Learn — Metering Service APIs & FAQ](https://learn.microsoft.com/en-us/partner-center/marketplace-offers/marketplace-metering-service-apis)*
