> Then they give you a "20% refund" that you can use on your next purchase there.
Consider yourself lucky. For me it was 20eur take it or leave it, on 500eur loss.
<rant>
I consider cancellation/refund policies that end before your arrival technically - a scam. The situation was like that - the apartment was booked with cancellation available 3 (or smth) days before arrival [0]. Upon arrival - the place was cigarette reeking, bedbug infested, with 30 year old completely worn out mattresses disgusting place. Owner says - "sorry - no refunds" [1], booking says - "we talked to the owner, cancellation policy has ended, the reviews are above average" [2][3]. Upon other calls they gave me 20eur. Bank could not issue a refund, because everything was up to policy.
Though I still use booking.com. I learned to ignore those dark patterns, because it's obvious that 1 spot is left for an apartment, there are no more to it :) . I had only 1 horrible experience with them, but had much worse with AirBNB. Booking.com is great to search all types of accommodation and it's often possible to find a way to book directly and for cheaper, so using it sort of as a search engine.
</rant>
[0] from my experience it's usually like that, cancellations/refunds until your arrival usually add exorbitant amounts to the price
[1] though owner suggested ordering cleaning services, but that place needed crime scene level cleaning and complete refurbishment
[2] lesson learned: always sort reviews by newest and translate from foreign languages, because newest 3 reviews were horrifying. But I have not read them, because have not translated them, or have not seen them. Because default sorting shows by "relevant", i.e. foreign language reviews are on the bottom and the other sort order is a mystery to me.
[3] it seams that people do not know how to vote in reviews. If you returned from vacation and infested your own home with bed bugs, and had multitude of other problems - do not give 7 or 8 as a review score - give it a 1. Booking.com used those reviews against me - "if it's above 8 - we cannot do anything about it".