Question: I have applied as a GSoC student to work on a project that would provide Refunds and / or Partial Payments functionality for CiviCRM. I am seeking current solution to do this when needed so I can suggest and develop better solution. What is the manual way to use negative contributions for refunds as according to me this situation could have occurred several times.

Similarly, how are partial payments handled now with work-arounds?

Answer: 
I use a different approach for refunds. 

If it is for a membership I "renew" the membership paying a negative amount and then edit the membership end date to show the correct date. This lets us keep track of each individual credit card payment/refund and provides an accurate history of "contributions" linked to the membership.

If it is "just" a contribution I enter a negative contribution.

We aren't running events through CiviCRM at the moment, but if we were I would see if I got the desired result by making a negative contribution and then directly editing the civicrm\_participant\_payment table to add a line linking the payment to the participant id.

By making negative payments we still have an accurate daily records at the line item level for entering into our accounting package.
Four different refund cases and their current handling:

1) Full refund - just going in the contribution & changing it to cancelled.

2) Partial refund when payment was made by Pay-later - going into the contribution & changing the amount. This doesn't work with a credit card payment.

3) Partial refund when payment was made by credit card and refunded by credit card. If necessary, create a new temporary price and go into the event registration and receipt it at this price. It appears to edit the existing entry rather than creating a new one.

4) Partial or full refund when payment was made by credit card & refunded by bank deposit and vice versa. Create a new temporary negative price and create a second registration for the person in the same event with the negative fee.