To expand on this: the mapping between images and other cues to a precise meaning is often actually pretty poor. To correctly navigate using images you often have to have prior knowledge, with the exception of the most downright obvious images or visual cues possible. On the other hand, text can have essentially arbitrary precision (although past a certain point it becomes difficult to parse) - and is thus actually often superior for first-use (or infrequent use) scenarios. The ideal is to have the best communication possible, and while I'm not sure as to the extent that Uber reaches that goal, text being unreadable and the app being unnavigable because you changed the language is, in my view, more on you than on the app developers.
Let's say you're in Europe and and have a card in dollars:
[] 1000€
[] 1000€ (1€/1.2$ -> 1200$)
Anyway, I digress...
But they’re usually designed in such a way that it’s impossible to hit a wall, and worst case you pay a $5 fee.
This is good design and an illiterate person could be walked through this a few times and could then do it anywhere.
Bad design is relying on your users continually having to teach themselves how to use your app.
The correct user-focused interface solution for that particular problem is to show the actual costs next to each button. And then I'd think one would make the cheaper option the obvious default (e.g., bigger, greener), with the more expensive option less favored.