Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/applicant.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/applicant.py	(revision 15948)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/applicant.py	(revision 15950)
@@ -26,5 +26,6 @@
 from waeup.aaue.applicants.interfaces import(
     ICustomApplicant, ICustomUGApplicantEdit, ICustomPGApplicantEdit,
-    IPUTMEApplicantEdit, ITranscriptApplicant, ICertificateRequest)
+    IPUTMEApplicantEdit, ITranscriptApplicant, ICertificateRequest,
+    IFedexRequest)
 
 @grok.subscribe(ICustomApplicant, grok.IObjectRemovedEvent)
@@ -41,5 +42,6 @@
     grok.implements(ICustomApplicant, ICustomUGApplicantEdit,
         ICustomPGApplicantEdit, IPUTMEApplicantEdit,
-        ITranscriptApplicant, ICertificateRequest)
+        ITranscriptApplicant, ICertificateRequest,
+        IFedexRequest)
     grok.provides(ICustomApplicant)
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py	(revision 15948)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py	(revision 15950)
@@ -54,5 +54,6 @@
     ICustomApplicant,
     IVerificationRequest,
-    ISendByEmailRequest
+    ISendByEmailRequest,
+    IFedexRequest
     )
 
@@ -246,4 +247,9 @@
             form_fields['body_address'].custom_widget = BytesDisplayWidget
             return form_fields
+        if self.target is not None and self.target == 'fedex':
+            form_fields = grok.AutoFields(IFedexRequest).omit(
+                'locked', 'suspended')
+            form_fields['dispatch_address'].custom_widget = BytesDisplayWidget
+            return form_fields
         if self.target is not None and self.target == 'send':
             form_fields = grok.AutoFields(ISendByEmailRequest).omit(
@@ -415,4 +421,8 @@
             form_fields['applicant_id'].for_display = True
             return form_fields
+        if self.target is not None and self.target == 'fedex':
+            form_fields = grok.AutoFields(IFedexRequest)
+            form_fields['applicant_id'].for_display = True
+            return form_fields
         # AAUE is using the same interface for all regular applications.
         form_fields = grok.AutoFields(ICustomUGApplicant)
@@ -532,4 +542,9 @@
         if self.target is not None and self.target == 'send':
             form_fields = grok.AutoFields(ISendByEmailRequest).omit(
+                'locked', 'suspended')
+            form_fields['applicant_id'].for_display = True
+            return form_fields
+        if self.target is not None and self.target == 'fedex':
+            form_fields = grok.AutoFields(IFedexRequest).omit(
                 'locked', 'suspended')
             form_fields['applicant_id'].for_display = True
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 15948)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 15950)
@@ -899,4 +899,77 @@
         )
 
+class IFedexRequest(IKofaObject):
+    """A applicant requests payment for courier.
+    """
+
+    suspended = schema.Bool(
+        title = _(u'Account suspended'),
+        default = False,
+        required = False,
+        )
+
+    locked = schema.Bool(
+        title = _(u'Form locked'),
+        default = False,
+        required = False,
+        )
+
+    applicant_id = schema.TextLine(
+        title = _(u'Applicant Id'),
+        required = False,
+        readonly = False,
+        )
+
+    #reg_number = TextLineChoice(
+    #    title = _(u'Kofa Registration Number'),
+    #    readonly = False,
+    #    required = True,
+    #    source = contextual_reg_num_source,
+    #    )
+
+    firstname = schema.TextLine(
+        title = _(u'First Name'),
+        required = True,
+        )
+
+    middlename = schema.TextLine(
+        title = _(u'Middle Name'),
+        required = False,
+        )
+
+    lastname = schema.TextLine(
+        title = _(u'Last Name (Surname)'),
+        required = True,
+        )
+
+    sex = schema.Choice(
+        title = _(u'Gender'),
+        source = GenderSource(),
+        required = True,
+        )
+
+    email = schema.ASCIILine(
+        title = _(u'Email Address'),
+        required = True,
+        constraint=validate_email,
+        )
+
+    phone = PhoneNumber(
+        title = _(u'Phone'),
+        description = u'',
+        required = False,
+        )
+
+    matric_number = schema.TextLine(
+        title = _(u'WES Reference Number (where applicable)'),
+        readonly = False,
+        required = False,
+        )
+
+    dispatch_address = schema.Text(
+        title = _(u'Dispatch Address'),
+        required = True,
+        )
+
 class ISendByEmailRequest(IKofaObject):
     """A applicant asking for sending an email.
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 15948)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 15950)
@@ -47,4 +47,5 @@
         'ver': ['Verification Request', 'VR'],
         'send': ['Send-By-Email Request', 'SE'],
+        'fedex': ['Payment for Courier (Fedex)', 'FED'],
         }
 
