amount can be either string or json object