My client's business and website is primarily online purchases. However, there are instances when special customers or referrals come into their office and buy the product by cash or check.

My client wants those purchases to be recorded in the same database as online orders, along with the same captured contact information.

Is there a way to implement the checkout process so that certain employees with designated privileges can enter orders through the online store, but no request for payment information is required. Or for those and only those privileged people an additional cash / check option is shown? (And the check option may also ask for additional info, such as the bank name and check number.)

1 Answer 1


You can do this by adding an additional payment gateway.

  1. Add a role, Pay with Cash or whatever you want to call it.
  2. Add a new payment gateway (at /admin/commerce/config/payment-gateways/add).

    • Name: Cash or Check
    • Plugin: Manual
    • Customer: Limit by Role: Pay with Cash role

The "Manual" gateway does not ask for any payment information, so orders with the manual payment selected (which only users with the Pay with Cash role will be able to select) will automatically be processed as completed when this payment method is selected.

If you want to record bank info for checks, you can make two separate gateways, one cash and one checks, and then customize the check gateway with additional fields.

  • 2
    Indeed. You can read more about where it was added to core for the RC1 release in the blog post: drupalcommerce.org/blog/113132/… Commented Nov 25, 2017 at 4:51
  • 1
    Thank you Patrick and Ryan. I only have one "problem" with this. The employee who sits at the front desk and who will process the walk-in orders is the one that has a userid/password defined and is assigned to that special role. So any orders will be "credited" to their email address, instead of being able to capture the email address of the customer. In addition, once the payment information (name, address) is filled in for that customer, it is assigned to the employee and will always be used. How to allow separate name/address for each customer? (cont)
    – marrer
    Commented Nov 30, 2017 at 18:16
  • 1
    (cont) Obviously I don't want the front desk person to create new userids for each customer and assign them permanent "pay with cash" roles. (Note: please re-read original comment above. I hit "enter" before I was anywhere near ready to send it. It has been edited/corrected to make more sense.)
    – marrer
    Commented Nov 30, 2017 at 18:21
  • 1
    @marrer Your original question was, "Can you give checks and cash by permission in Commerce 2?" This is a fairly complex set of additional requirements. Consider opening a new question. (Hint: if you can't fit your comment into the amount of space the site provides, it's a new question, not a comment.) Commented Nov 30, 2017 at 18:28
  • 1
    I just experimented on a test site and it appears that in manual mode each new order asks for the customer's name and address. So it is not saved against the logged in user's account. So that's a good thing. (Hopefully it will do the same on the live site.) So it appears that figuring out how change the recorded email address would indeed be a separate question as you indicated. Thank you again for your assistance, Patrick!
    – marrer
    Commented Nov 30, 2017 at 18:43

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.