you can do this using magento `event observer,create an event on payment_method_is_active` and depednds on customer group disable and enable payment method: check this link: http://magento.stackexchange.com/questions/24447/implementing-payment-method-per-currency/24502# and you need `do on some change in observer.php` I have trying to example and try to modify according to you public function filterpaymentmethod(Varien_Event_Observer $observer) { /* call get payment method */ $method = $observer->getEvent()->getMethodInstance(); if(Mage::getSingleton('customer/session')->isLoggedIn()) { $roleId = Mage::getSingleton('customer/session')->getCustomerGroupId(); $role = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code'); if($method->getCode()=='purchaseorder'){ $quote = $observer->getEvent()->getQuote(); if($role=$yourcustomergroupid){ $result = $observer->getEvent()->getResult(); $result->isAvailable = true; return; }else{ $result = $observer->getEvent()->getResult(); $result->isAvailable = false; } } if($method->getCode()=='checkmo'){ $quote = $observer->getEvent()->getQuote(); if($role=$yourcustomergroupid){ $result = $observer->getEvent()->getResult(); $result->isAvailable = true; return; }else{ $result = $observer->getEvent()->getResult(); $result->isAvailable = false; } } } } **Note: If you not getting customer group id from session then you need tp load customer by customer id(which is must get from session)** for getting customer group from session try below: http://stackoverflow.com/questions/9242390/showing-which-group-a-customer-belongs-to-in-magento http://xhtmlandcsshelp.blogspot.in/2010/12/get-customer-group-id-in-magento.html