We need to often create orders in the backend via the admin panel. Currently three payment methods are available, credit/debit card, bank transfer and purchase order. I however need more than that, others are activated in the config>system but are still not visible in admin order creation.

Could any one please advise?

I would be grateful, thanks

2 Answers 2


Each payment method model supports a member called $_canUseInternal. This decides if the payment method can be used in the backend.
So you need to add this in the payment method model

protected $_canUseInternal = true; 

But chances are you will need more than that, depending on the payment method. You may need to create a block and/or a template for admin use.
Some of the payment method might not be designed to work on the backend.

If you need a method just to appear on the invoice and no actions behind it then you can create your own. Here is a nice tutorial for creating one.
Just make sure you set to it

protected $_canUseInternal = true;
protected $_canUseCheckout = false;
protected $_canUseForMultishipping = false; 

so you can use it only for frontend.

  • I only need it to be visible on the invoice in a text format, i.e 'cash' it doens tneed to capture any information or do anything else. so I would edit app > code > core >Mage > payment > model > method ? May 20, 2015 at 9:06
  • @DanielTyas. See my edit.
    – Marius
    May 20, 2015 at 9:11

In magento every payment method extend Mage_Payment_Model_Method_Abstract and has the below member variables

protected $_canUseInternal              = true; //This can use in admin
protected $_canUseCheckout              = true; //This can use in onepage checkout
protected $_canUseForMultishipping      = true; //This can use in multishipping

By default all are true

If you wanna use method for admin only then just use below code

protected $_canUseInternal              = true; //This can use in admin
protected $_canUseCheckout              = false; //This can use in onepage checkout
protected $_canUseForMultishipping      = false; //This can use in multishipping

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.