No simple way for surcharges as far as I am aware, but I did build an extension for this previously for paying invoices in My Account. Took about 2 days.
From memory I also had to setup a custom permission as the standard customer center role doesn't allow applying more to the invoice than what is due.