Correct way to refund a customer payment

We have customers who make payments via credit card that we may have to refund down the line. What is the right way to handle this in ERPNext? I can’t seem to create a Payment Entry for paying the customer as it says “Cannot Pay to Customer without any negative outstanding invoice”. Cancelling the payment is not an option as we still need to show the funds coming in and being paid back out.


Make credit note using journal entry, while making journal entry select entry type as Credit Note. For more details check below link

1 Like

I tried that, still giving me the same error. Also tried on to make sure it wasn’t just my install.

The error says you need a negative invoice. You should create a credit note from the customers invoice before ERPNext will allow you pay the customer

What if the payment isn’t related to a particular invoice? Often these credit card payments will be proforma, and we only invoice when the goods are shipped. Sales orders will not be going on ERPNext.

I see. ERPNext only checks Sales/Purchase invoices for negatives. Please report this on ERPNext

Done, thanks.

Hi all,

It’s been exactly 3 years since this issue was logged on Github… seems like it’s still not resolved?

Still no way to properly refund an advance payment in ERPNext!

Pls help fix


Unsure what the problem - In Journal entry for Debtors Account you can select party type customer and specific Customer name - and so the journal entry refund payment is applied to that specific customer.

In payment entry if the customer has negative balance it lets you post payment entry to that customer as I recall… reverse for supplier (excess payment received back).

I belive It does not solve the issue, for 2 major reasons

1 - ERPNext try to ensure that a party always have a single one debit and credit account.
2 - When validating accounts payable/receivable reporta, ERPNext doesnt will handle different accounts per party, what will give wrong balances.

1 Like

Just a work around:

  1. JE - debit customer and credit cash
  2. Go to payment reconciliation tool and reconcile the payment with the JE
    All the accounts will be proper.
1 Like

Hi @Shah1

Yes, you’re correct. This is the workaround we also found but it seems too hacky… this scenario is so common that it should be handled in a standard way!

Kind regards,

1 Like

Agreed. The payment entry shouldn’t check for an outstanding negative invoice on type : pay.

Payment Requests done are also un-refundable. Stripe payments are currently unrefundable via the system.

Still this problem is not fixed??

I’d like to add my vote for a standard way of handling this. Just came across this issue for the first time today and expected to find a nice built in way of doing this as I’ve come accustomed to find in ERPNext, but disappointed to see that it hasn’t been addressed. I don’t think I have enough experience with the code base yet to make a proper PR for this issue, but I’ll give it a try if no one else does.

1 Like

+1 for this issue to be resolved.


I have found the correct way to enter such transactions. Receive the payment to a holding account using the payments window, please note it must be a bank account. then create a journal to another account (example Deposit for future allocation, this is a current liability account). When you are ready to make the refund create a journal from (example Deposit for future allocation) to the default debtors account and use Payment Reconciliation to reconcile the customer’s account. You can then go to the Payment Entry window hit pay, party type: customer: fill the details including the payment method and bank account details enter the refund amount, under references select journal enter the transaction that was used to bring the amount back to the debtors and save. Transaction complete

Please try and try to solve this. appreciate it


Do you mean the standard way to refund?