Lots of learners have asked, lots of attempts at answering have been made.
But the truth is:
The difference between zahlen and bezahlen is
… pointless to think about.
Some teacher in class, on Youtuber or TikTok might say “Zahlen is for this and that context and bezahlen is for that.” or “Zahlen takes this as a direct object while bezahlen takes that as a direct object.”
But all this is nonsense.
There simply aren’t any grammatical or contextual difference that would be consistent enough to call them a rule.
The only thing that most Germans would agree with is that zahlen sounds a bit more formal and bezahlen a bit more “hand-on”.
But even for that, there might be big difference depending on region.
So bottom line… pick one of the two and roll with it and then slowly add the other one based on how you see it in daily life.
I would recommend using bezahlen, because it’s a bit more down to earth, but you do you.