These amount and paid are values to a discrete point, eg: 9.99 becomes int(999)? Should we be returning decimals, eg Decimal('9.99') instead? That's much easier and more consistent for the rest of the code, although I'm not sure how that discrete point is calculated.