# `retroactive_change`

**Status 422.** The expiry change would reach back before shoppers were told.

## What it means

Points only expire once shoppers have been warned, so an expiry change may never make points expire sooner than the rule shoppers were already told about, and expiry cannot be switched on from a date already past. `problem` says which; `current_effective_from` and `current_period_months` show the rule in force, when there is one. Nothing was changed.

## What to do

Choose a later `effective_from`, or a longer `period_months`, and send it with a new `Idempotency-Key`.

## Safe to send again?

Not as it is. Change what the answer points to, then send the request.

## What else the answer carries

- `problem`: With `invalid_request` or `retroactive_change` from a programme change: the platform's own reason, like `campaign_starts_in_past` or `retroactive_start`. With `assistant_limit`, which limit: `point_value_locked`, `currency_locked`, `expiry_locked`, `more_than_double`, `raised_from_zero`, `earning_more_than_double`, `everyday_rate_moved`, `changes_how_it_pays`, `changes_who_it_pays`, `changes_what_it_gives`, `minimum_more_than_halved`, `new_offer_kind`, `new_reward_too_generous` or `new_reward_kind`.
- `current_effective_from`: When the expiry rule shoppers were told about took effect, or null when there is none.
- `current_period_months`: That rule's period in months, or null when there is none.

## Where you can meet it

- [`POST /stores/{store_key}/programme`](https://matrixrewards.co.uk/docs/api/2026-10/stores.md#updateProgramme): Change the earn rate, the bonuses, what a point is worth, referrals, spending any amount, the time zone, the ways to earn, or when points expire

Every code, and the shape of an error answer: [Errors](https://matrixrewards.co.uk/docs/errors.md).

---

Page: https://matrixrewards.co.uk/docs/errors/retroactive_change
Contract: 2026-10 sha256:35af153960028890fea5738799f5a71e535e1eea4dd3f6b8d5f50b37f02363da
