Upgrading from one member tier to a higher level - does Ghost know to prorate?

Yes. If your user subscribes for $250 and then comes back and selects the $300 plan, they’ll get charged another $50. Where the behavior may surprise you/them is that if they’re half way through their year at $250, they’re going to get $125 credited towards the $300, so they’ll get charged $175. That behavior could be more clearly explained in the Ghost portal than it currently is.

If your user signs up at $300 and then downgrades immediately to the $250 plan, they’re going to get no immediate refund, but they’ll get a $50 credit towards the next renewal (a year later), so that one will happen at $200. And then the next one will happen at $250

Some writing I did about changing prices in Stripe previously: Can you change subscription prices in Ghost? (not an exact answer to your question.)

I don’t necessarily think the current behavior is “wrong”, but I do wish that the Portal would expose when and what the customer is going to be billed. My user whose bill a year from now will be $200 due to a $50 credit doesn’t see any of that in Ghost - they just see that they’re on the $250 plan. This is something that could definitely be better than it is!