We use the Check Money order payment method as "invoice" payment. We also want to use this payment method for $0 orders.

but now when we select it we get "The requested Payment Method is not available."

Does anyone know a workaround. i've searched a lot but turned up with nothing :(


The code that handles this is in app/code/core/Mage/Payment/Block/Form/Container.php in the getMethods() method.

Look for this part of the method:

foreach ($methods as $key => $method) { if ($this->_canUseMethod($method) && ($total != 0 || $method->getCode() == 'free' || ($quote->hasRecurringItems() && $method->canManageRecurringProfiles()))) { $this->_assignMethod($method); } else { unset($methods[$key]); } }

Look at the if statement. You can update that logic. The easiest (and sloppiest) thing you could do is change part of that if line to something like:

BEFORE: || $method->getCode() == 'free' AFTER: || ($method->getCode() == 'free' || $method->getCode() == 'checkmo')

I'm not sure of your skill level. This way will work and it's the simplest, but you will lose this change if/when you upgrade Magento. It is bad practice to directly update the Magento core code.

See this link for how to properly override this method (it takes more steps): Magento System Overrides and Upgradability

  • Thank u Joa, but i tried it, but its not working :( Still getting "The requested payment method is not available" – Kay Int Veen Mar 27 '15 at 6:44
  • In addition to this answer, do you have a Minimum Order Total set in System > Configuration > Payment Methods > Check/Money Order? – Joseph at SwiftOtter Oct 3 '15 at 22:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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