Store Purchase API RecurrenceChange Refund returns 200 but refund is never executed

CompuLab, Markus Gömmel 0 Reputation points
2026-09-14T13:19:02.38+00:00

Windows/Store app publisher (Partner Center, Apps and Games workspace) — Store Purchase API issue. Please route to Store developer / commerce support if this product is not the right one.

We use the Microsoft Store Purchase API (B2B) from our server to manage subscription add-ons. Two separate Refund requests against the same paid, active subscription both returned HTTP 200, yet no refund was ever executed: 12 days later the customer's order history shows only the original charge, no refund email was received, and no credit reached the payment card.

Identifiers:

  • Product (subscription add-on): Store ID 9PMRMBNCX0BK, SKU 0100, market DE
  • Recurrence ID: mdr:0:c92d187613fe467f828069aa87f3c6fd:9e07539e-250a-4cff-ab39-9eecd626cbf9
  • Beneficiary (publisherUserId): pub:2debcf0d-313b-4df7-bcfc-ab2c144f9d61
  • Order: purchased 2026-09-02 (recurrence startTime 2026-09-02T00:00:00Z), EUR 4.99, non-trial (isTrial: false)

Timeline (UTC):

  1. 2026-09-02 ~15:30 — POST https://purchase.mp.microsoft.com/v8.0/b2b/recurrences/{id}/change with {"changeType":"Refund","b2bKey":"…"} → HTTP 200. The returned recurrence snapshot and subsequent recurrences/query calls showed recurrenceState: ActivelastModified unchanged (2026-09-02T12:54:41Z, i.e. pre-request).
  2. 2026-09-03 08:56 — same Refund request repeated → HTTP 200 again, and notably not 403 IneligibleForRefund, which we would expect if the first refund had been processed. Snapshot again unchanged.
  3. 2026-09-03 08:56 — changeType: Cancel on the same recurrence → HTTP 200 and executed immediately (recurrenceState: CanceledexpirationTime clamped to 2026-09-03T08:56:37Z, cancellationDate set). So authentication, the b2bKey and the recurrence ID are all correct; only Refund is silently not executed.
  4. 2026-09-14 — customer order history at account.microsoft.com/billing/orders still shows the 2026-09-02 EUR 4.99 order with no refund line; no refund notification email; no card credit.

For contrast, a Refund attempt on a trial recurrence of the same product on 2026-09-02 correctly returned 403 IneligibleForRefund ("no order eligible"), so the eligibility check itself works.

Questions:

  1. Was a refund recorded on your side for this order? If so, why is it not visible to the customer and where is the money?
  2. If not, why does RecurrenceChange Refund answer 200 without executing, and without an eligibility rejection? Is there a market (DE), same-day-order, or account-type condition that causes a silent no-op?
  3. Please process the refund of the EUR 4.99 order for the recurrence above.

Publisher/app: CompuLab, Markus Gömmel, True Backgammon Community. Tenant ID: a70bd93c-c127-42ae-a25b-c877dae8614f.

Microsoft Partner Center | Other
0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.