I'm going around in circles trying to use Drupal Commerce to make an ecommerce site where some orders cost money and some don't (because some users have coupons that make products free).

I've set up the Checkout process as seen in the screenshot below and have created a rule as such

  • Rules Event: Process checkout pane
  • Rules Conditions: Price comparison (commerce order = $0)
  • Rules Actions:
    • Change pane properties (disable billing information, off-site payment redirect, Payment)
    • Update the order state to (pending/complete)

Checkout settings

With this setup when the user goes through without a coupon it all works fine. When the user uses a coupon to get the price to zero on the Checkout page the user presses the Continue to next step button and goes to an empty Review page (the panes have been set to disabled so there is nothing to see) and they can't progress any further.

Pressing the Continue button on that page just bounces them back to the same page. If they press Cancel and go back to the shopping cart, then on through checkout and press "Continue to next step" again (the coupon has been remembered and the total is still $0) then get sent to the Checkout Complete page and hook_commerce_checkout_complete($order) is called.

I've tried adding extra actions to the rule, to complete the checkout or change the order status, but they have strange side effects like going to the Review page anyway, or calling that hook twice.

Can anyone help me set up the checkout and rules so that a free order goes straight to complete from the checkout page, whilst still maintaining the normal path for orders that require payments?

  • I believe this is a known bug in commerce discount (the integrating part of commerce coupons). Try running the latest development version Dec 8, 2015 at 11:32

1 Answer 1


You would be better to implement a custom payment method that can be active when the order has a 0 balance.

If the order has payment required, use the standard payment method. If the order has no payment required, complete checkout.

e.g: https://drupal.org/project/commerce_no_payment

  • I'm already using that module (actually the Payment module that replaces no_payment) but I don't want the user to have to choose the "No payment" option from a radio button list as that setup directs so I want to skip right over those panes.
    – Craig
    Jan 8, 2014 at 22:24
  • Just make the other payment method not available (in payment method rules configuration) then only one payment method will be active. Jan 8, 2014 at 22:24
  • I have two rules to turn on credit card payments and turn off no_payment according to the order total. But when only one payment method is active the user still has to pick it from the list.
    – Craig
    Jan 8, 2014 at 22:40

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.