I've tried to book a single ticket from Shiraz to Tehran with Mahan Air. But they never accepted my (Belgian) credit card.
I wonder if there are any alternative ways I can book it.
As far as I know, for Iranian airlines (Mahan, Iran Air,..) you should always book via an agency as they still don't have international payment systems (mainly due to sanctions); as an alternative you can look for an agency that works with them in the city/country of your residence and give them a call!
Generally these sale points work like this: receive your request, look for a ticket in your preferred date, inform you of the exact available date and the corresponding price, along with an IBAN and a deadline to pay.
In the links below you can find list of their official sale offices:
If you can't find an official sale office nearby, there might be some other local agencies that sell their tickets. You can find out about them by contacting them.