send charge(subscription, dimension, quantity, effectiveStartTime)
200 → done; store UsageReportEventId and Microsoft.UsageEventId
409 → done; the hour had already landed, the body tells you which report
429, 502, timeout → wait (backoff), send the identical request again
400, 404, 422 → do not retry unchanged; fix the request or the subscription stateResending the identical request can never double charge: if the first attempt landed at Microsoft, the retry gets 409 with its ids. Never change effectiveStartTime on a retry; that makes it a new usage event.