The one page checkout process in WooCommerce is pretty darn slick. You can beautifully sell all sorts of products. We know because we use it ourselves on WooThemes.com. But there are plenty of special circumstances where you don't want a customer to go through your normal checkout process.
- Sometimes you may want to give special pricing to a customer
- Sometimes you may want to send a direct payment link to your customers / clients
- Sometimes a customer may want to add on something extra to an existing order before you ship it
- And sometimes you may have products which aren't in your public catalog but you want to give them to some customers
In all of these cases you can easily create an invoice and have the customer pay for it using WooCommerce.
Creating the Invoice
Creating an invoice is as simple as creating an order in the backend, adding products, and setting it to
pending. I've broken down each step below to show you how it works.
Create a New Order
- We first need to create a new order. In the WordPress admin click on WooCommerce -> Orders
- Now click on Add Order
- Add as many items as you like to the order. If you're adding an extra cost to an existing order I recommend creating a hidden product (ex. Shipping Cost) so it's clear what the user is paying for. Feel free to adjust the price of the items as you see fit.
- Press the
Sending the Invoice
You now have an order ready to go. You just need to send it.
- Leave the order status as
pending. You must do this otherwise the customer won't be able to pay for it
- You must enter a billing address email for the customer. If you don't they wont get the invoice.
- Make sure you've selected a customer
- Press the Save Order button and you're done!
What the Customer Sees
The customer will be sent an email with a link to pay for the order.
Or you can prompt your user to log into their account and pay for it using the pay link.
In case your customer doesn't pay your invoice you can easily remind them. On the edit order screen you can resend email notifications by selecting
Customer Invoice under
A couple of months ago I wrote a post about how to Create The Ultimate Invoicing System using WooCommerce. You can certainly take what you have here and add onto it with the tips in that post.
Thanks for this great tut!, I wonder if I have to make a few orders is there a way that I can send the order invoice to my customer to pay it by email with out having to go one by one online, with one button I can send many pay orders at the sema time?
It would have to be very custom if you wanted people to pay for multiple invoices at the same time. At that point I would just delete one order and merge the costs into the next one.
I need to add orders for customers to pay me monthly expenses . Now, I pre-fill order details for my customers. Then I Keep the order status as ‘Pending’, calculate the total.
But I need to send a bulk reminder with the invoice to the customer (with a payment link), I need to do this because a significant number of customers will not answer , I would like to be able to send again the orders to the customers who didint pay or answer the first Order to all the ones with pending status with one click . Instead of having to do it one by one on each payment order. Send a bulk orders emails again with the payment link .
So do you know about a way to send the bulk emails with the Invoice details and the payment link like the original Invoice to all pending customers with one click ?
There aren’t any prebuilt solutions for this. You could get someone to customize Follow Up Emails which would send emails out every X days until someone pays you. For custom work like that I always recommend Codeable.
I have a question about your article. You say after creating the order and the invoice, the store manager can send an email with the invoice and a link to “pay” for the order. Where will this link take the customer to? How that page will look like?
What I need to do is to let the customer place the order from the frontend, but not allow him to pay at checkout. I will only leave a modified option of “pay on delivery” button. Then, I put the order to pending. Several weeks later (when I restock) I’ll send him the invoice with the link where he/she can enter and choose any payment methods available (debit card, PayPal, check). How will that work please?
Hi Anthony. The customer pays via the normal checkout page. You can’t have two separate checkout pages. If you wanted that it would have to be a pretty big customization. For this type of work I recommend Codeable.
How does one setup so that there’s a link in the email invoice linking back to the site in order to checkout?
If you send the customers an order that is
pendingit will automatically include the
paylink which will take them to their account where they can pay for the order.
If you want the link to take the user directly to the checkout you should be able to do something like that with Email Cart for WooCommerce (aff).
I hope that helps! 🙂
Is it possible to create an invoice, save it but that WordPress send the invoice later, for a given date?
I want the invoice to be send at a given date and not immediately. Let’s say i do a job as consultant. the job benefits the client later (within 2 months) and i want the invoice after these 2 months)
That isn’t possible. You’d have to customize WooCommerce to do that. For customizations like this I recommend Codeable.
You mentioned in your post that “And sometimes you may have products which aren’t in your public catalog but you want to give them to some customers.” How would you go about doing this? We are trying to add products to our invoices without adding them to the website itself and wondering if this is possible
Take a look at the
Catalog visibilitysetting on the add/edit product page (documented here).
Sorry to take so long to reply again, What we are trying to see if we can do is just add items directly to the invoice instead of having to go to add the product to our web site. We take a lot of orders over the phone and our products are changing in weight and quantity often. (400 1 time products in last 2 months) The biggest slowdown we have now is having to add the products to the website just to put them in one order.
How can I display any added custom fees and added shopping fees made on an order/invoice page on the customer’s email confirmation and checkout page?
Is there any way to show our customer name in woocommerce email invoice..
Hi Patrick, Thank you for this. I have one question though – I was able to successfully create the invoice and the order is sent to me, but the customer does not receive the email even though it says “Order Updated and Email Sent.”
Do you have a dedicated SMTP provider? Using those should make sure the emails are delivered reliably.
Thank you for a great blog. Can you tell me, if I don’t know which method the customer wants to pay with, do I leave payment method as na? Will they then have the option to pay by any method, or must I specify?
They’ll be able to pay with any payment method that’s available on your site. Ex. if you’ve turned on PayPal it will be an available option for them.
Hi Patrick, I have created new order from admin and sent invoice to me with payment link. When I view the received email with link to pay and click, I get this message
This order’s status is “Pending Payment”—it cannot be paid for. Please contact us if you need assistance.
It doesn’t matter which payment gateway I select. any ideas
Hi Patrick, I solved my problem, I wasn’t hitting the order total, silly me for thinking it was automatic.
I made the same mistake. Patrick’s step-by-step process and screenshots helped me see that I had missed that step.
Thank you so much for sharing how to do this. Your instructions were fantastic and very easy to follow for a not so savvy user! Because of you my customer received their quote in a timely manner. I did have to play around with the calculations of the shipping and tax to ensure it was correct but other than that…easy
I have seen that “calculate total” in backend .But never thought that have this much of useful.
Wonderful article. I am having trouble with sending the invoice. The only message the customer gets when they click the pay link is this message “This order’s status is “Pending Payment”—it cannot be paid for. Please contact us if you need assistance”. I am not sure how to solve this problem because I do not see the payments page. Do you have a solution? Thank you.
You need to ensure you have clicked “Calculate Totals” after you’ve added all the products to the cart manually.
The reason you’re seeing this is because your order is totally $0, it needs to be greater than $0 for the page to appear.
I don’t see “Pay” in the account.
I only have two options: Cancel / View.
The order I have created is in Payment pending status.
Even the email has no “Pay”.
Do you have any guess?
Hi Patrick, my client wants to have the last 4 of the customer’s credit card to show on the invoice – is there any way to do this? I have been scouring the web to no avail.
I’m sure this is possible but I’m not sure how to do it off the top of my head. I bet it would be a small customization. Maybe just $50-100 from Codeable (who I always recommend for these types of jobs).
Hello! I’ve read your article but I was actually looking for different information: how can I check what address is sent automatically on the invoice once Pay Pal payment done? Or maybe is it the same address as established in Pay pal? The thing is that my business is registered in a different country, so I should probably change it. I have no idea where I can find such an option.
Thank you in advance!
Hi. Great post! I use this on my site…but when a customer pays for an invoice, it marks it the order as “Complete”. I was wondering if it is possible to have it mark an order as “Processing” instead once the invoice is paid for? Thank you for your help!
We have our orders go to a warehouse to be filled. The customer will be invoiced, and I’d like to send the orders out before the order is paid for. The warehouse isn’t sure is an order marked “Pending” will go through the warehouse. Any thoughts?
This seems to be broekn in the latest version of woocommerce:
Thanks man, you know, you are the best