Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 16968)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 17057)
@@ -179,5 +179,5 @@
         cpt_value = ctrl.options[0]
         # School fee payment ticket can be added ...
-        self.student['studycourse'].certificate.school_fee_1 = 6666.0
+        self.student['studycourse'].certificate.school_fee_3 = 6666.0
         self.student.nationality = u'NG'
         self.browser.open(self.payments_path + '/addop')
@@ -233,5 +233,5 @@
         self.app['configuration'].addSessionConfiguration(configuration_1)
         self.student['studycourse'].certificate.study_mode = 'ug_pt'
-        self.student['studycourse'].certificate.school_fee_1 = 6666.0
+        self.student['studycourse'].certificate.school_fee_2 = 6666.0
         self.app['configuration']['2015'].union_fee = 1250.0
         self.app['configuration']['2015'].welfare_fee = 750.0
@@ -329,5 +329,5 @@
 
     def test_manage_payments_bypass_ac_creation(self):
-        self.student['studycourse'].certificate.school_fee_1 = 6666.0
+        self.student['studycourse'].certificate.school_fee_3 = 6666.0
         self.student.nationality = u'NG'
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
@@ -563,4 +563,5 @@
 
     def test_payment_disabled(self):
+        self.student['studycourse'].certificate.school_fee_3 = 6666.0
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
         self.browser.open(self.payments_path)
@@ -648,5 +649,5 @@
         self.student['studycourse'].current_session = 2018
         self.student['studycourse'].entry_mode = 'ug_ft'
-        self.student['studycourse'].certificate.school_fee_1 = 50200.0
+        self.student['studycourse'].certificate.school_fee_2 = 50200.0
         self.app['configuration']['2018'].union_fee = 1200.0
         self.app['configuration']['2018'].welfare_fee = 700.0
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py	(revision 16968)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py	(revision 17057)
@@ -74,5 +74,5 @@
         self.assertEqual(payment.p_level, 100)
         self.assertEqual(payment.p_session, 2004)
-        self.assertEqual(payment.amount_auth, 26666.0)
+        self.assertEqual(payment.amount_auth, 28888.0)
         self.assertEqual(payment.p_item, u'CERT1')
         self.assertEqual(error, None)
@@ -84,5 +84,5 @@
         self.student.lga = 'edo_afuze'
         error, payment = utils.setPaymentDetails('schoolfee',self.student)
-        self.assertEqual(payment.amount_auth, 6765.0)
+        self.assertEqual(payment.amount_auth, 8987.0)
         IWorkflowState(self.student).setState('returning')
         error, payment = utils.setPaymentDetails('schoolfee',self.student)
@@ -164,5 +164,5 @@
         self.assertEqual(payment.p_level, 100)
         self.assertEqual(payment.p_session, 2004)
-        self.assertEqual(payment.amount_auth, 6666.0)
+        self.assertEqual(payment.amount_auth, 8888.0)
         self.assertEqual(payment.p_item, u'CERT1')
         self.assertEqual(error, None)
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 16968)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 17057)
@@ -400,24 +400,19 @@
                     return _("You are not allowed "
                              "to pay by instalments."), None
+            # We determine the base amount first
+            if student.entry_session < 2015:
+                amount = getattr(certificate, 'school_fee_3', 0.0)
+            elif student.entry_session < 2020:
+                amount = getattr(certificate, 'school_fee_2', 0.0)
+            else:
+                amount = getattr(certificate, 'school_fee_1', 0.0)
             if previous_session:
                 # Students can pay for previous sessions in all
                 # 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)
-                else:
-                    if student.entry_session in (2015, 2016):
-                        amount = getattr(certificate, 'school_fee_2', 0.0)
-                    else:
-                        amount = getattr(certificate, 'school_fee_3', 0.0)
-            elif student.state == CLEARED and category != 'schoolfee_2':
-                amount = getattr(certificate, 'school_fee_1', 0.0)
+                pass
+            elif student.state == CLEARED:
                 # Cut school fee by 50%
-                if category == 'schoolfee_1' and amount:
-                    amount = gateway_net_amt(amount) / 2 + GATEWAY_AMT
-            elif student.is_fresh and category == 'schoolfee_2':
-                amount = getattr(certificate, 'school_fee_1', 0.0)
-                # Cut school fee by 50%
-                if amount:
+                if category in ('schoolfee_1', 'schoolfee_2') and amount:
                     amount = gateway_net_amt(amount) / 2 + GATEWAY_AMT
             elif student.state == RETURNING and category != 'schoolfee_2':
@@ -433,16 +428,9 @@
                 except KeyError:
                     return _(u'Session configuration object is not available.'), None
-                if student.entry_session >= 2015:
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
-                else:
-                    amount = getattr(certificate, 'school_fee_3', 0.0)
                 # Cut school fee by 50%
                 if category == 'schoolfee_1' and amount:
                     amount = gateway_net_amt(amount) / 2 + GATEWAY_AMT
-            elif category == 'schoolfee_2':
-                amount = getattr(certificate, 'school_fee_2', 0.0)
-                # Cut school fee by 50%
-                if amount:
-                    amount = gateway_net_amt(amount) / 2 + GATEWAY_AMT
+            elif category == 'schoolfee_2' and amount:
+                amount = gateway_net_amt(amount) / 2 + GATEWAY_AMT
             else:
                 return _('Wrong state.'), None
