Interesting side fact for SpendMoney. The function actually has an undocumented fourth parameter of type Boolean. The 4th parameter defaults to "false".
If set to "true", the money will be spent even if the SIM does not have enough money. Otherwise the money is not spent and the function returns "false".