Index: main/waeup.fceokene/trunk/src/waeup/fceokene/interswitch/tests.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/interswitch/tests.py	(revision 13614)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/interswitch/tests.py	(revision 13616)
@@ -167,5 +167,5 @@
                            self.browser.contents)
         self.assertTrue(
-            '<span>4150.0</span>' in self.browser.contents)
+            '<span>1026.0</span>' in self.browser.contents)
         # p_item is not unveiled
         self.assertFalse('Hall 1, Block A, Room 101, Bed A'
@@ -188,8 +188,8 @@
                            self.browser.contents)
         self.assertTrue(
-            '<input type="hidden" name="amount" value="415000" />'
-            in self.browser.contents)
-        self.assertTrue(
-            'item_name="Hostel Maintenance Fee" item_amt="400000" bank_id="117" acct_num="1013780934"'
+            '<input type="hidden" name="amount" value="102600" />'
+            in self.browser.contents)
+        self.assertTrue(
+            'item_name="Hostel Maintenance Fee" item_amt="87600" bank_id="117" acct_num="1013780934"'
             in self.browser.contents)
         # BT does nor charge a fee for maintenance fee
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 13614)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 13616)
@@ -275,5 +275,5 @@
         error, payment = utils.setPaymentDetails('hostel_maintenance',self.student)
         self.assertEqual(payment, None)
-        self.assertEqual(error, 'You have not yet booked accommodation.')
+        self.assertEqual(error, 'No bed space allocated.')
         self.student['studycourse'].current_session = 2004
 
@@ -281,5 +281,5 @@
         self.assertEqual(payment.p_level, 100)
         self.assertEqual(payment.p_session, 2004)
-        self.assertEqual(payment.amount_auth, 4150.0)
+        self.assertEqual(payment.amount_auth, 1026.0)
         self.assertEqual(payment.p_item, u'My bed coordinates')
         self.assertEqual(error, None)
@@ -296,5 +296,5 @@
         self.assertEqual(payment.p_level, 100)
         self.assertEqual(payment.p_session, 2004)
-        self.assertEqual(payment.amount_auth, 2650.0)
+        self.assertEqual(payment.amount_auth, 697.5)  # 62.5% * 876 + 150
         self.assertEqual(payment.p_item, u'My bed coordinates')
         self.assertEqual(error, None)
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 13614)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 13616)
@@ -100,13 +100,11 @@
             if bedticket is not None and bedticket.bed is not None:
                 p_item = bedticket.bed_coordinates
+                if bedticket.bed.__parent__.maint_fee > 0:
+                    amount = bedticket.bed.__parent__.maint_fee
             else:
-                return _(u'You have not yet booked accommodation.'), None
-            acc_details = self.getAccommodationDetails(student)
-            if current_session != acc_details['booking_session']:
-                return _(u'Current session does not match accommodation session.'), None
-            if student.current_mode.endswith('_sw') or student.current_mode == 'pd_ft':
-                amount = 2500.0 #removed interswitch fee
-            else:
-                amount = 4000.0 #removed interswitch fee
+                return _(u'No bed space allocated.'), None
+            if student.current_mode.endswith('_sw') \
+                or student.current_mode == 'pd_ft':
+                amount *= 0.625
         elif category == 'clearance':
             amount = academic_session.clearance_fee
