Did you ever purchased a subscription for a magazine?
A subscription is a purchase that is charged to you every month, week, year, custom interval, to receive a service or a product regularly.
A magazine is a perfect example. You sign-up to receive the magazine every month directly at your home and the shop charges your credit card automatically for the magazine and its shipping costs.
To do this with WooCommerce, you will need to use WooCommerce Subscriptions.
If you want to charge regularly both the product and the shipping costs, then there’s no problem. Just follow the documentation to learn how to set up the plugin.
But what if you want to charge the shipping cost only at the moment of the sign-up and then never on a renewal?
WooCommerce Subscriptions does not really support this by default, but there’s a workaround.
Some shops charge you more on the first sign-up, while for the other renewals you pay less. This difference between the sign-up price and the renewals price is called sign-up fee.
Since WooCommerce Subscriptions does not have a way to charge the payment only for the first payment at the moment of the sign-up, you can use the sign-up fee to charge the shipping too.
Edit the subscription product on your store, and add the shipping costs to the sign-up fee. If you are already using the sign-up fee, just add the shipping cost to the amount you already have.
There’s a problem though. The customer will not know that he is paying for the shipping since the price will show like “$ XX.XX / month and a $ XX.XX sign-up fee” and the cart and checkout pages will not show a line for the shipping.
To go around this problem, you can change the subscription price string.
I know, this is not a solution that would work for everyone. It works perfectly if you have a fixed shipping cost for everyone.
Since the shipping cost will not be calculated automatically by the system, you can’t use this workaround if you need a different shipping cost based on the customer address, product weight/size or the quantity purchased.
For that, the only workaround is to still charge the shipping costs by the normal way you do with all product, ad after the customer signs-up, edit manually his subscription to remove the shipping costs he already paid.