Edit a Paid-for Order In WooCommerce and Invoice the Balance.

Update: This comment has another way to edit a paid for order and invoice the balance that will likely work better, especially for customers paying by credit card.

You’ve heard from a customer that just placed an order and they would like to add an extra product to the order. It’s already paid for, so how do you go about adding it and charging them for the difference? I’ll walk you through the process here and you’ll be invoicing customers like a champ in no time.

First, you’ll want to edit the order and look for the order status drop-down. Change the order to “On hold” and update the order. Now you can start editing the products.

Next, look down below the list of items in the order and you’ll see a button labeled “Add items.” Click on it and then the “Add Products” button that appears after that.

That will open up a modal window (pop-up) where you can actually add in new products. Use the search field there to locate the products you want to add and select them. Then click the “Add” button when you’re finished.

After that click on the “Recalculate” button to add everything together. This will update the total on the invoice. It will also show how much has been paid so far. Then we change the order status to “pending payment” and update the order.

After the order refreshes, we’ll want to look in the top right hand corner for the “order actions” box. In the drop-down there, select the “Email Invoice/Order details” option and click the button next to it. This will send a copy of the order to your customer. It will have a link they can use to pay the balance due.

They can also view the order in their account in the “orders” tab. There is a button there they can use to pay for any orders with an outstanding balance.

That’s all there is to it. We edited an existing order, set it to on hold. Added products. Recalculated the total. Set the order to “pending payment” and updated it. Then used order actions to send an invoice to the customer for payment.

That’s how you can edit a WooCommerce order that’s been paid for and add products to it. Le me know if you have any questions in the comments.

18 responses to “Edit a Paid-for Order In WooCommerce and Invoice the Balance.”

  1. buteryak Avatar

    This is what I need to do, so thanks for your post, the issue I have though, is that when the new invoice is sent, with the link to pay, the order is for the order total, not the balance, is there anyway to change this behavior?

    1. Bill Robbins Avatar
      Bill Robbins

      You are totally right. I’m not certain when this changed, but I can’t make this work either at the moment. For the time being, it looks like another order will be necessary.

      1. David Hilscher Avatar
        David Hilscher

        I too would love to know how to charge the remaining balance

      2. Bill Robbins Avatar
        Bill Robbins

        I’ve worked with this a bit more and here’s one possible workaround. I picked up this idea from a post on Business Bloomer about allowing users to edit processing orders.

        The code snippet in that post adds an edit button to the orders section of the account page. When a user clicks it, it duplicates the order and adds the original items to the shopping cart and adds a “credit” equal to the amount already paid.

        That got me thinking that one way we could approach this would be to duplicate an order and add a credit to the new order equal to the amount paid on the other order. There is a Duplicate Order plugin that may be able to do this for you so the items don’t have to be manually copied over.

        Then you can cancel the original order (don’t refund it). After that set the new order to “pending payment” and send the invoice to the customer. That should do it. Let me know if you have any questions.

  2. Ahmed Avatar

    This method is only for orders paid with credit card, but what if I offer credit and cash? Also, this method cancel the original order; how can I give the customer the ability to edit on the same order?

  3. Bill Robbins Avatar
    Bill Robbins

    After working with this more, it’s definitely best to create a new order instead of editing an existing one. With a credit card, there isn’t an option, but even with cash, it will still work out better.

    Even the Deposits extension which is designed to accept partial payments creates new orders for the installment payments.

  4. Xavier Avatar

    The issue I have is exchanging a product for a different one that’s cheaper.
    I need to issue a partial refund: cost difference between original more expensive product and its cheaper replacement.
    This seems just impossible to do.
    Any ideas?

    1. Bill Robbins Avatar
      Bill Robbins

      You can issue a partial refund. First, edit the order. Then click on the refund button. Instead of using the “quantity” field to return the whole product, you can enter an amount next to the specific product. Here’s a link to a screenshot to show what I mean.


      That will let you make a partial refund of an existing order.

  5. Hannes Avatar

    Is it possible to change the payment amount manually after payment is made?

    1. Bill Robbins Avatar
      Bill Robbins

      Good question. If it’s a lower price than what has been paid, you can issue a partial refund.

      For a higher price, you’ll probably want to make a separate invoice for that. Say the original purchase price was $25 and it needs to be changed to $30. You could edit the order and send an invoice, but the customer would be charged the full amount. It won’t take what has already been paid and deduct it from the total. That’s why it’ll be better to go with a separate invoice for the difference.

  6. cubefreee Avatar

    What about if you need to increase their order total $$? Is there a plugin that can do that?? Seems like many other articles require duplicating the order. Odd. Thx!

    1. Bill Robbins Avatar
      Bill Robbins

      It’s best to create a separate order for the extra amount. Most gateways like Stripe only support one charge per order. An alternative would be to refund the whole order and then create a new order that is correct and charge it.

  7. pageperfectco Avatar

    This was very helpful, thank you. I actually think the OP is the easier way rather than duplicating the order. Cheers.

    1. Bill Robbins Avatar
      Bill Robbins

      The original way is definitely easier. It just won’t work with most online payments like credit cards. If the payment is with cash or checks then it’s a good way to go.

  8. dave970 Avatar

    this seems silly you cannot process payment – say for instance a customer substitutes an item for another item – COVID causing shipping issues means customers are asking for substitutions..often more expensive then what ordered/paid for. all my other systes allow for credit againg order. why not woocommerce ?

    1. Bill Robbins Avatar
      Bill Robbins

      It would definitely be nice if it worked this way. I’ve been wondering if we could move payments to a separate post from the order. That’s how refunds work. Multiple refunds can be issued on the same order that way. If payments were each a separate post, this would be easier to accomplish.

  9. kickyride Avatar

    I prefer the article method over duplicating the order. Only problem I have with this process is with Stripe/Credit Cards, it does not auto deduct the payment already applied. However, if you edit any item, you can then “add fee” of a negative amount, call it “payment already applied” or whatever you like, and it will show in the order as an added line item/credit. It looks nice to the customer and is easy to understand.

  10. kickyride Avatar

    This method is preferred for my ecomm store using credit cards (Stripe & PP) for payment. However, as of today, Woo did not auto adjust the paid amount. Using the steps above, it required payment of the full amount. I then corrected this by editing items and using the “add fee” button to add a negative charge for the paid amount. This allowed me to name it whatever I wanted like “previous payment credit”. That last bit was to change the “hold stock” setting in Woo. The default is 60 minutes after which, the customer cannot pay and the order gets auto-canceled. I increased it to 720 min which should suffice for payment and allow stock to be returned in a reasonable amount of time for legit canceled/abandoned orders.

Leave a Reply

%d bloggers like this: