- Blogging for Benjamin Competition
- Why I'm Grateful to Work on the Web
- 24 Pull Requests
- Update Downloadable Product's Expiration Date in WooCommere
- Get Lost in the Flow and Work for More Than a Salary
- Why A Plugin's Popularity Matters
- Why You Should (Or Shouldn't) Use Premium Plugins
- WooCommerce Terms & Conditions
- Only Ship to Continental United States with WooCommerce
- Just Talk
- Why I Love Jetpack
- Making Jetpack Better
- Remove Billing Address for Free Virtual Orders in WooCommerce
- Notify Admin of Customer Address Change in WooCommerce
- Open Your Self Up To New Possibilities
- 2013 Resolutions Review
- Create a Community
- Tips for Starting a Community
- The Intent of Goals
- Create The Ultimate Invoicing System Using WooCommerce
- Change From Address in Ninja Forms
- Work With People Who Inspire You
- Contact Form 7 & MailPoet Integration
- Giving Back to The Community
- Adding Fuctionality to Lean Plugins
- Choose Stripe For a Payment Gateway
- A Dip Into Entrepreneurship
- Reward Yourself
- Blogging for Benjamin Plugin
- Blogging for Benjamin Wrap Up
I'm constantly amazed at the sheer number of ways that WooCommerce can be used. As soon as you think you have all of the possible use cases our customers come up with a new idea that they suggest and we get to implement! How fun! But unfortunately this isn't all that well documented on the WooThemes.com website. It would be really great if there was a way we could share all of these really cool solutions so that our customers don't have to figure it all out on their own. With that I wanted to present one of my favorite WooCommerce solutions which is an invoicing system.
A Bare Bones Invoicing System
Let's start with the basics. If you want an invoicing system what is the most important thing you have to do with your store? You have to disable the payment gateway. If you have a standard payment gateway like Stripe or PayPal you force your client to pay right then and there with a credit card / PayPal account. You most likely don't want to force your clients to pay in full right that second. You also probably prefer a check over a credit card due to the expensive credit card fees.
Invoicing Payment Gateway
People have asked us to create an invoicing gateway but you don't need to do that! You can actually just rename the built in Cheque gateway to “Invoice” and the customer message to “We will invoice you shortly.” Now your orders will be put on hold automatically.
If you're invoicing clients you may or may not be sending them actual deliverables. If you're not doing any shipping at all just disable it entirely in the WooCommerce -> Shipping settings. This way you don't have to mark every product as “Virtual”.
Unlike retail if you're sending clients invoices there's usually some sort of contract involved. Make sure you set a terms page in your WooCommerce settings so that the client has to agree to the terms before pressing the submit button.
A Well Built Invoicing System
The cool part is that up till now all of this is free. You don't have to spend a dime on anything. If you however you want to start automating things and saving your self a ton bunch of time you can use Freshbooks with the WooCommerce Freshbooks extension. Quite simply it will automatically create and send invoices to your clients.
And if you don't already have information for this client it will be automatically created and stored in Freshbooks. I love automation like this. Once we have Freshbooks installed I like to change the Cheque gateway's customer message to: “We will invoice you via Freshbooks.”
The Ultimate Invoicing System
We already have a pretty darn awesome invoicing system which automatically creates orders, puts them on hold, and sends an invoice to the client but there's a few more things we can do to make it better yet!
Get Client Information Before Order
You may have a different way of getting a clients information ahead of time like a contact form on your site. Well you can actually capture that information when they fill out a contact form and put it in Freshbooks ahead of time. You can use Ninja Forms to create a contact form and use the Freshbooks extension to capture that information.
You could also use the Front End Editor extension to automatically add the users to your site. Why would you want to do this? Well let's say that you want to limit your orders to existing clients…
Limit Orders to Existing Clients
It might make sense to limit these invoices to people you actually know and have dealt with. You don't just want anyone to place an order without meeting with them first. You may want to use something like the WooCommerce Catalog Visibility Options extension to prevent regular users from checking out / seeing prices.
Well if you did all that you now have the ultimate invoicing system for WooCommerce!
- You have a really smooth checkout experience for your clients
- You are automatically creating invoices and saving you time
- You are automatically saving client data in Freshbooks ahead of time
- You are optionally restricting the store to existing clients
Now what are you going to do with all of that extra time!? I guess you'll have to go out and get more clients! 🙂
Great suggestion Patrick!
Awesome article! We’ll be implementing this in our website for our print orders.
just want to ask if it is possible if the customer can pay online via paypal or stripe using the invoice?
Yeah – definitely. Once the customer creates an invoice you can set the order to
pendingin the backend and then they can pay for it via the
Can Woo provide enough distinguished options to put orders “on-hold” (via cheque) so that the order can be reviewed by the order fulfillment department, then put into “processed” status so that credit credit cards gateways be used in “My Account”? The problem as I see it is that the “other” payment gateways would be present next to the cheque option on checkout…
Hey Andy – not sure exactly what you want here but it sounds like you want an extra order status? Something your fulfillment department can use? There’s a tutorial here for creating custom order statuses: http://www.sellwithwp.com/creating-woocommerce-custom-order-status/
Hi, sorry I get wordy sometimes. Essentially, we need to be able to review the order after checkout before they pull the trigger and get charged (we have to calculate freight shipping and such)….
Not really – you could use Stripe and change it to “authorize” a charge only and then manually capture it later. but you’d have to give them a shipping estimate or dig into the code to authorize a higher amount.
Better options would be:
None of those are awesome but without doing any custom programming that’s the best way I can think of off the top of my head. Good luck!
Hi Patrick, I want to sell to consumers as well as retailers. Can I use your invoicing method above for retailers but on the spot credit card payments for consumers? I am thinking of having a retailer page with prices disabled so that they have to log in to see prices and place orders so I would use your method above for this group..would that work?
It should work like that but I would actually look into something like Dynamic Pricing & Conditional Content. This way you don’t have to go through the invoicing process at all. You already have special prices set for retailers.
I actually want to invoice retailers rather than have them pay on the spot though ,I save on the payment gateways fees as I have them do a direct bank transfer and they get up to 30 days credit on their purchases. I really like the sound of the automated invoices. The dynamic pricing and conditional content would get around the need to disable retailer prices until they logged in however. I have been told that the function to separate customers into groups does not work well on woo though…is this your experience?
No it’s not hard it should only be a couple of steps. I’d read the documentation about membership pricing using Dynamic Pricing. My preference would be to use Groups over User Role Editor but both work.
Hi Patrick, thanks very much for the info, not being a developer its a lot to get my head around but i’ll do a bit more reading and see i can make more sense of what might work best on my site. thanks again
Role based payment plugin allows you to set specific payment gateways to show up for specific roles, then you use any role editor plugin to add “retailers” so when they login they have only “invoice me” while guest and other purchasers have “paypal” or whatever you are using.
You might not need role editing but i use it in combination with dynamic pricing to have different discounts for different groups of members.
Hey Jason and Ray,
Our situation is similar. We have “dealers’ who get a 30% discount and pay by PO/Invoice net 30 days, and we have regular customers who pay MSRP by credit card.
1. Can you provide the name of the Role Based Payment plugin and your recommendation for the best Role Editor plugin. Thanks!
2. Also, we need to give our Dealers a discounted price, while showing them the full MSRP, when they shop. Do you have a recommendation for a good plugin for that. Woocommerce Dynamic Pricing in $129, which seems like overkill.
Thanks for the great article. This is just what we need.
I’m trying to figure out how we can accept an offline check payment or cash payment from a customer using WooCommerce using the invoice method you described. I would like to receive the payment and details (cheque number, amount, etc) and apply it to the invoice as you would in Quickbooks or Freshbooks. Saving this information in a note, and changing the status to paid doesn’t seem very elegant. Any thoughts or suggestions?
Most e-commerce platforms don’t focus on check payments so they don’t usually dedicate a ton of features / or space in the user interface towards it. If you are expecting a ton have you thought about integrating WooCommerce with Freshbooks or Quickbooks?
We’ve looked at the Quickbooks integrations but haven’t found one that we felt confident to try. 61extensions’ solution has a lot of mixed reviews. Any suggestions?
Quickbooks is so complex I wouldn’t trust a WordPress developer to know everything about it. That’s we no longer make a Quickbooks extension. I’d look into something like Webgility.
Thanx for the useful tutorial / post.
Can you please tell me how to invoice a client for “consumables” and custom services, which are not stock items / products in Woocommerce?
For example, as a solar installer, we sell solar panels, inverters, batteries, etc – these are all standard stock items. But with installations we would need wire, lugs, clamps, metal / wood, etc – these are all consumables which change for every job so it’s nearly impossible to add a product for Woocommerce for every possible consumable.
Another item would be labor – this also changes from job to job. For example, on one job we would send two workers and spend two days, another job may only require one worker, and another job three workers for 5 days.
How would I invoice these customizable items?
Hey Rudi, well your setup is definitely a bit harder to do. You could sell these materials as separate products. Owen you’re editing the product in admin there’s a section called ‘catalog visibility’. You can use that to hide it from the store but still be able to manually add it to an invoice. You could do the same thing with hours.
I hope that helps. 🙂
How would you handle an order form or page that makes it easy, fast, simple… Like so:
For each item to add to invoice, just change quantity from zero to number wanted.
At bottom, button to see all selected item.
Then customer confirms or edits invoice again.
You see my point, fast and easy for customer to create their own invoice.
Is there a way for customers to make several payments towards one balance using this method?
I would look into WooCommerce Deposits for something like this.
I want to generate different receipt per product. if i purchase two product i want two different receipt with my existing account. so let me tell what change required in woocommerce plugin.
do the needful
Thanks for such a great post and the many options you shared. This post should stay alive as folks are always seeking information on how to create opportunities instead of road blocks…
Have you figured out a way to add a previous payment “credit” to the new invoice manually so that existing paper payment previously received is noted on the new invoice?
Hi, I situation where people can purchase immediately but for some we send them invoice that they can go and pay in the bank, not online.
How would we set this up?
Practically we need to set up invoice for them to print our and take to bank.
hi, we can use this module for design invoice like plugin: https://codecanyon.net/item/woocommerce-invoice-delivery-packing-slip-pdf-template-builder-plugin/17242839
Is it possible to send an automatically Woo commerce invoice 15 days after the purchase? I need this option.
Does the invoice plugin work with roles? I don’t want everyone to have net 30 invoice as a check out choice. I only want a couple selected clients to have net 30 invoice.
I am using Word Press 4.7.3
Invoicing Payment Gateway
… Now your orders will be put on hold automatically. -> How does this work?
Can I change the field for every payment gateway?
Thank your very much for your answer in advance
Hello, I really like the process you defined for using WC to invoice. I was wondering how WC could be setup to automatically”register” a new customer so that their payment method (they would also provide us authorization to automatically charge the payment method) is setup but no charges are applied. Then after services were rendered an invoice would be generated and the amount due would be automatically collected using the payment method that was created.