code: def refund_payment(payment_psp_object: Model, amount: Money, client_ref: str) -> Tuple[bool, Model]:
      
      logger.debug('refund-payment', payment_psp_object=payment_psp_object, amount=amount, client_ref=client_ref)
      if amount.amount <= 0:
          raise PreconditionError('Can only refund positive amounts')
      psp = psp_for_model_instance(payment_psp_object)
      return psp.refund_payment(payment_psp_object, amount, client_ref)
docs: :param payment_psp_object: an instance representing the original payment in the psp
      :param amount: the amount to refund
      :param client_ref: a reference that will appear on the customer's credit card statement
      :return: a tuple (success, refund_psp_object)