The amount due for this invoice. Takes into account all entities in the invoice.
        Can be < 0 if the invoice was overpaid.

def due(self):
        """
        The amount due for this invoice. Takes into account all entities in the invoice.
        Can be < 0 if the invoice was overpaid.
        """
        invoice_charges = Charge.objects.filter(invoice=self)
        invoice_transactions = Transaction.successful.filter(invoice=self)
        return total_amount(invoice_charges) - total_amount(invoice_transactions)