Woocommerce Custom Pay Later Vs Backorders

If you have multiple stores in multiple locations, inventory control in woocommerce can be problematic.  Sure, there are plugins and external systems that will manage inventory, but there is a further financial cost and a learning curve.

Warehousing and storage may be problematic too.  Its not always possible to have all stock on hand at all times.

Therefore, a standard buy and deliver on demand woocommerce set up doesn’t always work.

This is where Backorder and Pay Later arrangements are very useful.

 Pay LaterBackorders
Payment at CheckoutNoYes
Payment GatewaysYesYes
Extra Plugins NeededOptionalNo
Custom CodeOptionalNo
Custom StylingOptionalNo
Higher Risk of RefundNoYes
Inventory controlNoYes
AutomationNoYes

Backorders

Woocommerce has a backorder function already built in which allows customers to pay for items up front and then dispatch the items when they become available.

This is particularly handy when

  • Centralized storage is an issue allowing you to dispatch items from distributed locations.
  • You need to order the items and then immediately dispatch to your customer.
  • Stock is delayed, held up or lost
  • Drop shipping arrangements are used to dispatch items from a 3rd party vendor.
  • New models are announced but not yet supplied

Either way, it’s important that you are up front about the wait time so that customer expectations are met. Otherwise your customer reviews will be brutal.  Depending on the wait time, backorders won’t work in certain time sensitive industries where customers need items immediately eg a fridge is broken and a replacement is urgent.

Sometimes customers decide they don’t want to wait after they have paid.  In these cases, you will have to refund.

If you didn’t want to hold any stock at all… you could set all your products to backorder.

Woocommerce makes setting up backorders very straightforward.

Setup

From the woocommerce setting page, go to

  1. Products>>Inventory
  2. Enable stock management.
  3. Save

Edit a product and select the inventory tab.

  1. Change the stock status to backorder.
  2. Save.

Your products will now clearly display a backorder notice on the product page.

Easy!

Custom Pay Later Method

A custom Pay Later method allows your customers to check out and pay you later.  No money is exchanged… yet.  The customer still has to pay the full amount but its delayed.  This is not to be confused with Buy Now Pay later finance because its not the same!

The Pay Later method simply puts some time in between you and the customer to make further decisions.  Then they make payment.

It means there is no need to remove products from your store when stock availability is questionable ie seasonal stock or you are unaware of the stock levels in other stores.

Pay Later methods tells the customer you MAY have the product in stock and you MAY be able to deliver it.  For this reason, the product won’t show any shipping options.

After a customer has checked out using Pay Later, they have shown intent to buy… and will require follow up.

This is where you provide certainty for the customer by telling them you have the product ready to ship. Or you don’t.

I prefer to call the customer.  This allows you to get a better understanding of what the customer needs and presents you with the opportunity to switch sell if needed.  The customer is less likely to abandon the sale if they have spoken with you and more likely to leave a positive review.  Because you have developed a relationship with the customer, you are more likely to generate repeat sales and referrals.

Therefore, Pay Later takes a little longer to process than back orders … but has its own quirky advantages.

Customer expectations are different using pay later.  Even though there has been a no obligation shopping cart transaction, there hasn’t been a financial transaction just yet either.  Essentially, its a lead rather than a sale.  It minimizes the risk of irate customers demanding refunds when they realize stock is unavailable within their timeframe or you can’t deliver it because its too far.

There are no extra payment gateways to configure. No need to issue refunds if the customer changes their mind.

This system repurposes existing woocommerce payment methods and turns it into a pay later method.

Concept

  1. Customer visits your site
  2. Customer buys a product using Pay Later.  No money changes hands.
  3. You check your stock
  4. You check if it can be delivered and the delivery cost
  5. You call the customer.
  6. If its in stock and delivery/pick up isn’t an issue (ie delivery cost could be prohibitive) you send the customer a payment link to pay using credit card etc…
  7. If you don’t have it in stock, you let the customer know that its unavailable right now and you can order it in.  Send them a payment to pay now or when it arrives.
  8. If the customer wants to back out that’s OK.  No refund needed. Cancel the order.

Setup

  1. Go to woocomemrce settings>>Payments.
  2. Enable Cash on Delivery. (ie checkout without paying)
  3. Change the title to read: Pay After confirmation.  OR Pay Later after we check. Or some other variation. (this is shown on the checkout page)
  4. Add a description: Payment can be made by credit card AFTER we check delivery capacity and stock availability. Expect a call from one of our friendly sales staff. (this is also shown on the checkout page)
  5. Instructions: Any instructions appear on the thank you page.
  6. Enable for shipping methods: Add in any shipping methods you want to apply this to

Once setup, the checkout page looks like this.

Or you can remove all other payment methods and just have Pay Later/Pay After Confirmation.

If you need to apply a combination of restrictions, woocommerce offers a Conditional Shipping and Payments plugin.  This means you can apply Pay Later checkout on selected products.  Its a very handy plugin.

The Checkout Button

Out of the box, the payment button in woocommerce says Place Order.  But it’s not really an order is it?  It confuses customers and they become hesitant if they feel they have to pay now.  This is overcome by changing the language on the button.

To change the button text, we need to add a function.  Add this to your child theme functions.php file.

add_filter( 'woocommerce_available_payment_gateways', 'woocommerce_available_payment_gateways' );

function woocommerce_available_payment_gateways( $available_gateways ) {
    if (! is_checkout() ) return $available_gateways;  // stop doing anything if we're not on checkout page.
    if (array_key_exists('cod',$available_gateways)) {
        // Gateway ID for pay after confirmation is COD beacuse it uses a cash on delivery mechanism. 
         $available_gateways['cod']->order_button_text = __( 'Send Enquiry', 'woocommerce' );
    }
    return $available_gateways;
}


 

Send the customer a link to pay

When the customer checks out, an new order will appear in your woocommerce orders dashboard.  From here:

  1. Open/edit the order.
  2. Change the order status from Processing to Pending Payment.
  3. In the order actions, select “Email invoice/order details to customer” and click the action button.  An email will be sent to the customer with a link to make payment.

Change the order status from Processing to Pending payment.

From the Order Actions box, send the customer an email with a payment link.

The customer receives an email with a payment link that redirects them to your website with your payment options.  The customer pays and the order is set back to processing.

Styling the Email

The default payment link in the email isn’t very big.  Customers sometimes overlook it.

To reduce the risk of the sale being abandoned, lets make the payment link easier to see.  This requires editing the woocommerce email templates.  Please ensure you are using a child theme.

Copy the customer-invoice.php and save it to your child theme eg /wp-content/themes/<child-theme-name>/woocommerce/emails/customer-invoice.php

Add the following styles to the customer-invoice.php file at the top of the body tag

<style>
.emailbutton { 
	border:1px solid silver; 
	padding:5px 10px; 
	background-color:#14479e; 
	color:white; 
	margin:10px 0px; 
	width:600px; 
} 

.emailblock {margin-bottom:10px;} 
</style>

Now locate this line in the file


esc_html( get_bloginfo( 'name', 'display' ) ),
'<a href="' . esc_url( $order->get_checkout_payment_url() ) . '">' . esc_html__( 'Pay for this order', 'woocommerce' ) . '</a>'

and change it to


esc_html( get_bloginfo( 'name', 'display' ) ),
'<div class="emailblock"><a class = "emailbutton" ' . esc_url( $order->get_checkout_payment_url() ) . '">' . esc_html__( 'Pay for this order', 'woocommerce' ) . '</a></div>'

Save.

Now the customer email looks like this

Much better!

Conclusion

Is one method better than the other?

It depends on the business and the products it sells.  Some businesses may find a pay later method just won’t work.  And in others its the life blood.  Those businesses that sell big bulky items that require local delivery may find a use case for a pay later method. Those businesses with multiple independent locations that use the same website may find this useful because it serves as a central point for electronic sales.  Sometimes a little phone work is needed to verify stock and delivery capability.  Then the customer can commit once they have certainty.

The backorders function is super handy too.  But sometimes refunds are inevitable because customers either give up waiting or they have sourced the product elsewhere. But when its used well, it works!

Both methods reduce website maintenance by removing the need to constantly update stock.  Backorders imply there is a wait time and Pay Later implies you’re not really sure.  Does this imply customer hesitancy?  Maybe.  Therefore, its critically important you get the language absolutely right on your websites.  Its best to be transparent and up front.  Otherwise you risk reputational damage.

In the end its about happy customers because happy customers are good for business.  They buy again and again… and they tell their friends.

Damon
Damon

Damon is the Principal Full Stack Developer at WPFix and freelance consultant. If you need help implementing anything wordpress related, please reach out to make an appointment.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Recent Posts

  • Setup a Wordpress Child Theme slider
  • Wordpress Better SEO GTMerix and Ligthouse Scores slider
  • Wordpress Instant Search Bar slider
  • woocommerce disable rich text editing for shop managers slider
  • Woocommerce admin multi SKU search slider