When a child asks to spend their points on a reward, you can approve it or turn it down. Approving worked properly. Turning it down did not, and the way it failed was quietly unkind.
What your child used to see
Your kid taps to claim a reward. The button on their screen changes to "Asked", and they wait.
You decline it.
On their next refresh, "Asked" turns back into "Get". That is all. No message, no reason, nothing to say a person had considered it and said no. From their side it looks like the request evaporated, or like they imagined tapping it.
The decline was recorded. It was simply never shown to the only person it concerned.
Under the surface the decline was saved correctly. The kid's app just had no reason to look at it: it only ever asked for requests that were waiting or approved, so a declined one fell into a gap between the two and was read by nothing.
What happens now
Declining asks you for a reason. There are three common ones to pick from, and an optional note if you want to say something specific.
Your child sees the decline and the reason on their own screen, in the same place the reward was.
Why this was worth fixing properly
The straightforward fix would have been to make the request disappear from the child's list. That would have been tidier and it would have been worse.
The point of the app is not tracking chores. It is teaching a kid that effort turns into things, and that the people deciding are reasonable. "No, not this week, we are saving for the trip" teaches that. A button silently reverting teaches that asking does nothing, which is the opposite lesson and is also just how it feels to be nine.
There is a smaller reason too. A child who does not know they were declined asks again, and you decline again, and neither of you knows the other has been through this before.
The pattern behind it
This is the same bug this project keeps making in different clothes: something gets written down and nothing ever reads it.
The decline was stored. A notification row was created. Both were correct and both were invisible, because no screen asked for them. A record nobody reads is indistinguishable from a record nobody wrote, and it is worse than nothing, because it looks like the feature exists.
I now treat "where does this get read" as part of building the thing rather than a step afterwards. It is the question that would have caught this one before a kid ever saw it.