Customer Portal Paid invoice shows pay button

I’m just getting started with the customer portal. I have a test customer with one invoice which has been paid. Why does the pay button still show? Clicking the pay button results in the following error:

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 115, in application
    response = frappe.api.handle(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/__init__.py", line 49, in handle
    data = endpoint(**arguments)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
    return frappe.handler.handle()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 51, in handle
    data = execute_cmd(cmd)
           ^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 87, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/__init__.py", line 1729, in call
    return fn(*args, **newargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py", line 583, in make_payment_request
    grand_total = validate_and_calculate_grand_total(grand_total, existing_payment_request_amount)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py", line 574, in validate_and_calculate_grand_total
    frappe.throw(_("Payment Request is already created"))
  File "apps/frappe/frappe/__init__.py", line 607, in throw
    msgprint(
  File "apps/frappe/frappe/__init__.py", line 572, in msgprint
    _raise_exception()
  File "apps/frappe/frappe/__init__.py", line 523, in _raise_exception
    raise exc
frappe.exceptions.ValidationError: Payment Request is already created


Why is pay button present for an invoice with status = paid?