We have a client that we've set up a store for B2B sales to their wholesale customers. Since they have a specific customer list that they allow to make purchases on their site, they would like to invoice them for the purchase for them to make payment offline (send a check, etc). So basically a Purchase Order. No CC needed. Complete order and then they'll invoice them.

But they also will be freight shipping since most things are large packages. They don't want to try and calculate shipping real-time at this time, but rather follow up with the customer with their final Invoice that includes the ACTUAL shipping charge once they ship out.

So... I'm trying to figure out the best way to:

  1. Allow the customer to not have a shipping charge as part of their steps on checkout. Right now, I have Free Shipping, but renamed it to basically explain that Shipping will be calculated with the final invoice sent with products.
  2. Allow the customer to not have to use a credit card as part of the steps during checkout. Right now, I have it as a Check/Money Order (mainly because Purchase Order doesn't seem to work... doesn't go to the next step). Same thing here, I update the text of the Check payment method to state "we'll send you a final invoice or charge any card we have on file for your account."
  3. IN the Admin, would like to be able to modify/add a charge for the final shipping fees, along with providing the tracking info, so the customer gets an email follow up when they ship the order, and can see their final invoice to be paid. THIS, I'm not sure how to accomplish.

Items 1 and 2 sort of work, but shows the modified text on emails/invoices. Maybe there's a better way, like bypass the payment and shipping steps altogether, and the text is just displayed somewhere statically on the checkout page.

How would you try to accomplish this?

1 Answer 1


Interesting problem. The first solution that comes to mind for me is to use the workflow that you have at the moment, This is providing the first part of the requirements where offline payments are taken and no extra charges are being displayed.

The change that I would look to make is to introduce wither a observer so that when the order changes its status ( If you are using the order status ) as an example a new status could be payment_complete. Alternative would be time based system but the following steps are still the same. When this criteria is met I would programatically create a temporally order and calculate the shipping rates. For this you would need to have a new shipping method that has the correct pricing but is hidden from selection via the website.

This is relatively straight forward to achieve. You have access to the items that have been ordered as part of the order. Iterate over these and add to basket in effect creating a quote item. Then call calculate shipping rates passing the chargeable shipping method. You now have the shipping price based on the items order so you can update the real order object with shipping price and shipping information ( Tracking link date etc etc ).

This is the first idea that came to mind to achieve this. There will be many more alternatives such as creation of a new payment method and as part of that payment method in the checkout another shipping cost is created and saved.

  • Makes somewhat sense. Would you think that the shipping method that I would need to use/hide, would be capable of manually setting the cost? Not sure if there's a standard ship method, where an admin can just insert whatever charge they'd like for the shipping charge. And just to recap what you're saying: 1) Purchase is made with no payment method, no shipping method. 2) Order automatically creates a new order from the existing. 3) Admin sets the shipping cost, and completes the order. 4) Sends confirmation to customer with full amount. Commented Feb 2, 2015 at 21:29
  • Yes then you call collectTotals on the quote object then the shipping price will be applied. You can set a different algorithm on the shipping method. Percentage or Fixed and this can then be applied to the shipping total that the quote / order has Commented Feb 2, 2015 at 21:34
  • Ok.. so I sort of kept with that flow. But I did find a simple/free extension that allows a custom shipping method/price to be applied to new orders. It doesn't show to the customer as a method. So, they place the order with no shipping fee, no payment method. The admin will EDIT the order (cancels order, creates new from existing order). I can then add my shipping charge, Invoice, and Ship order (with tracking). It informs the customer of their order (same order number with "-1" added to the end), which includes the ship method and total cost. Commented Feb 3, 2015 at 0:49
  • Oh and the extension is Zero-1 Custom Shipping Rate. Commented Feb 3, 2015 at 0:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.