Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/interswitch/tests.py
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/interswitch/tests.py	(revision 16702)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/interswitch/tests.py	(revision 16704)
@@ -80,5 +80,29 @@
             self.browser.contents)
         self.assertTrue(
-            'item_name="School Fee" item_amt="4000000" bank_id="00" acct_num="00000000"' in
+            'item_name="School Fee (total amount)" item_amt="4000000" bank_id="00" acct_num="00000000"' in
+            self.browser.contents)
+        self.browser.open(self.payments_path + '/addop')
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...',
+                           self.browser.contents)
+        self.browser.open(self.payments_path)
+        ctrl = self.browser.getControl(name='val_id')
+        self.value = ctrl.options[1]
+        self.browser.getLink(self.value).click()
+        self.assertMatches('...Amount Authorized...',
+                           self.browser.contents)
+        self.assertTrue(
+            '<span>24000.0</span>' in self.browser.contents)
+        self.payment_url = self.browser.url
+        self.browser.getLink("Pay via Interswitch CollegePAY", index=0).click()
+        self.assertMatches('...<input type="hidden" name="pay_item_id" value="Default_Payable_MX26002" />...',
+                           self.browser.contents)
+        self.assertEqual(self.student.current_mode, 'ug_ft')
+        self.assertTrue(
+            '<input type="hidden" name="amount" value="2430000" />' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="School Fee (60% - 1st instalment)" item_amt="2400000" bank_id="00" acct_num="00000000"' in
             self.browser.contents)
 
@@ -87,5 +111,5 @@
         acc_payment = createObject('waeup.StudentOnlinePayment')
         acc_payment.p_state = 'unpaid'
-        acc_payment.p_category = 'clearance'
+        acc_payment.p_category = 'schoolfee'
         acc_payment.p_id = 'xyz'
         acc_payment.pay_item_id = '123'
Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 16702)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 16704)
@@ -9,6 +9,23 @@
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: en\n"
+"X-Generator: Poedit 1.6.5\n"
 
 msgid "Academics"
 msgstr "Institutions"
 
+#: waeup/kofa/university/interfaces.py:286
+msgid "Initial School Fee"
+msgstr "School Fee"
+
+#: waeup/kofa/university/interfaces.py:292
+msgid "Returning School Fee"
+msgstr "Returning School Fee (not used)"
+
+#: waeup/kofa/university/interfaces.py:298
+msgid "Foreigner Initial School Fee"
+msgstr "Foreigner Initial School Fee (not used)"
+
+#: waeup/kofa/university/interfaces.py:304
+msgid "Foreigner Returning School Fee"
+msgstr "Foreigner Returning School Fee (not used)"
Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/students/utils.py
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/students/utils.py	(revision 16702)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/students/utils.py	(revision 16704)
@@ -70,34 +70,36 @@
                 # workflow states.  Fresh students are excluded by the
                 # update method of the PreviousPaymentAddFormPage.
-                if previous_level == 100:
-                    amount = getattr(certificate, 'school_fee_1', 0.0)
+                amount = getattr(certificate, 'school_fee_1', 0.0)
+            else:
+                if category == 'secondinstal':
+                    amount = 0.4 * getattr(certificate, 'school_fee_1', 0.0)
                 else:
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
-            else:
-                if student.state == CLEARED:
-                    amount = getattr(certificate, 'school_fee_1', 0.0)
-                elif student.state == RETURNING:
-                    # In case of returning school fee payment the
-                    # payment session and level contain the values of
-                    # the session the student has paid for. Payment
-                    # session is always next session.
-                    p_session, p_level = self.getReturningData(student)
-                    academic_session = self._getSessionConfiguration(p_session)
-                    if academic_session == None:
-                        return _(
-                            u'Session configuration object is not available.'
-                            ), None
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
-                elif student.is_postgrad and student.state == PAID:
-                    # Returning postgraduate students also pay for the
-                    # next session but their level always remains the
-                    # same.
-                    p_session += 1
-                    academic_session = self._getSessionConfiguration(p_session)
-                    if academic_session == None:
-                        return _(
-                            u'Session configuration object is not available.'
-                            ), None
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
+                    if student.state == CLEARED:
+                        amount = getattr(certificate, 'school_fee_1', 0.0)
+                    elif student.state == RETURNING:
+                        # In case of returning school fee payment the
+                        # payment session and level contain the values of
+                        # the session the student has paid for. Payment
+                        # session is always next session.
+                        p_session, p_level = self.getReturningData(student)
+                        academic_session = self._getSessionConfiguration(p_session)
+                        if academic_session == None:
+                            return _(
+                                u'Session configuration object is not available.'
+                                ), None
+                        amount = getattr(certificate, 'school_fee_1', 0.0)
+                    elif student.is_postgrad and student.state == PAID:
+                        # Returning postgraduate students also pay for the
+                        # next session but their level always remains the
+                        # same.
+                        p_session += 1
+                        academic_session = self._getSessionConfiguration(p_session)
+                        if academic_session == None:
+                            return _(
+                                u'Session configuration object is not available.'
+                                ), None
+                        amount = getattr(certificate, 'school_fee_1', 0.0)
+                    if category == 'schoolfee_1':
+                        amount *= 0.6
         elif category == 'clearance':
             try:
Index: main/kofacustom.edocons/trunk/src/kofacustom/edocons/utils/utils.py
===================================================================
--- main/kofacustom.edocons/trunk/src/kofacustom/edocons/utils/utils.py	(revision 16702)
+++ main/kofacustom.edocons/trunk/src/kofacustom/edocons/utils/utils.py	(revision 16704)
@@ -25,11 +25,13 @@
 
     PAYMENT_CATEGORIES = {
-        'schoolfee': 'School Fee',
-        'clearance': 'Acceptance Fee',
+        'schoolfee': 'School Fee (total amount)',
+        'schoolfee_1': 'School Fee (60% - 1st instalment)',
+        'secondinstal': 'School Fee (40% - 2nd instalment)',
+        'clearance': 'Acceptance Fee (not applicable)',
         #'bed_allocation': 'Bed Allocation Fee',
         #'hostel_maintenance': 'Hostel Maintenance Fee',
         #'transfer': 'Transfer Fee',
         #'gown': 'Gown Hire Fee',
-        'application': 'Application Fee',
+        'application': 'Application Fee (not applicable)',
         #'app_balance': 'Application Fee Balance',
         #'transcript': 'Transcript Fee',
@@ -38,7 +40,7 @@
         }
 
-    #SELECTABLE_PAYMENT_CATEGORIES = {
-    #    }
-
-    def selectable_payment_categories(self, student):
-        return self.PAYMENT_CATEGORIES
+    SELECTABLE_PAYMENT_CATEGORIES = {
+        'schoolfee': 'School Fee (total amount)',
+        'schoolfee_1': 'School Fee (60% - 1st instalment)',
+        'secondinstal': 'School Fee (40% - 2nd instalment)',
+        }
