Step 1: Maintain the "Employer eMPF ID"
The "Employer eMPF ID" is the ID code obtained and viewed by the employer on the eMPF platform after registering an eMPF account. It will be used in Workstem to link the eMPF platform to facilitate the sending of contribution data to the eMPF platform through the API.
Step 2: Connect to the eMPF Platform
In "System"-"Integration", click on "Settings" of eMPF, and in the pop-up window click on "Start Using", which will be associated to the employer's eMPF platform according to the "eMPF Employer ID" in step 1.
Step 3: Maintain key information of employees according to the requirements of eMPF
According to the requirements of eMPF, it is necessary to maintain basic employee information, employment information and benefit file information.
Please refer to the appendix and link at the bottom of this article to learn about eMPF's requirements for filling in employee information and the value logic of each information in the system.
Maintain basic information and employment information of employees
Maintaining information for employees' benefit files
Maintains the Payroll Policy ID for an employee's Payroll Policy
Set the Payroll Policy ID for each Payroll Policy in [Payroll] - [Settings] - [Payroll Policy] in the system.
"Payroll Policy ID" corresponds to the "Payroll Group ID" in the eMPF Requirement field. It is a required field. Please be sure to be consistent with the name of the "Payroll Group ID" defined in the eMPF platform.
Where to view "Payroll Group ID" in the eMPF platform:
Step 4: Maintain Benefit Scheme (i.e. MPF Scheme) information
In the [Settings] of [Benefits], "Name of Scheme" and "Scheme Registration No." need to be filled in according to the name and scheme registration number required in eMPF after the MPF scheme has been transferred to the eMPF platform (eMPF official template file description is provided, Workstem is also built-in, and you can select directly)
In addition, if you have started using eMPF to submit contributions, the original "Employer Participation Number" location in system now needs to be filled in the "eMPF Employer Account No." instead of the "Employer Participation Number".
Where to view "Employer Account No." in eMPF account:
Step 5: Calculate salary and generate contribution data
In "Payroll"-"Pay Run", calculate the payroll results and contribution data.
Step 6: View contribution record data and contribution overview data
In [Benefits] - [Benefit File] - [View] to check employees' calculated contribution results on the "Contribution Record" page. Amendments can be made if necessary.
View Remittance Overview under each MPF scheme in [Benefits] - [Overview].
Step 7: Click "Generate" to generate the preparatory file for submitting contribution data
Since the system not only supports the submission of contributions using CSV files, but also the submission of contribution data using APIs, it is necessary to have the system generate a preparation file containing the fields and data specified by eMPF, called a "message", before selecting the final submission method. It will take the value in the system according to the set logic when it is generated, and you can use it to check the generated eMPF data in advance.
Click [Generate] in [Benefit] - [Overview]:
In the pop-up window, select the Name of scheme, Cycle and Contribution Day that needs to generate a "message":
After the message is successfully generated, a green "√" will be displayed on the "Message Generation Status" on the right side of the corresponding benefit scheme and the corresponding period:
Step 8: Check if the eMPF contribution data is correct
In [Benefits] - [Overview], click the [Message] on the right side of the MPF scheme and cycle record you want to check to download the message file (json format) and check whether the fields and data in it are correct.
You can also click [View] on the right side of the MPF scheme and cycle record you want to check to check the contribution results of each employee. On the [eMPF Records] page, you can view the contribution data of the fields sorted according to the eMPF regulations and check whether the data meets the expected results.
Step 9: Select the submission method and submit the contribution data
If the Message has been generated and the contribution data is checked to be correct, on the [Benefit] - [Overview] page, click [Submit] on the right side of the Overview record, and you can select the contribution submission method on the pop-up page. You can select CSV or API:
If you select the "CSV" submission method, an upload file in CSV format containing eMPF contribution data will be generated based on the information in the Message file. You can directly use this file to upload to the eMPF platform to submit contributions.
Select the submission method of "API", and the progress window of API submission of contribution data will pop up, and the result of successful or failed upload will be displayed.
If the top of the interface prompts "Contribution data has been submitted" when submitting a contribution through the API, it means that the data of the current message has been submitted through the API. When this happens, or the employee's contribution data and employee information have changed, You need to click [Delete] on the right side of the current MPF scheme and cycle record to delete the currently generated Message, and then click [Generate] to generate new messages and eMPF contribution data.
Step 10: View submission records and submission results
After each successful initiation of the API contribution submission process, regardless of success or failure, the submission time, success or failure, and the submission result returned by eMPF through the interface will be recorded. You can view it on the [Submit Record] page after clicking [View]:
Click [View Result] to see the detailed results returned by eMPF, including the specific reasons for submission failure:
If the submission fails, after readjusting the relevant data and information, you need to click "Delete" on the right side of the current MPF scheme and cycle record in [Benefit] - [Overview] to delete the currently generated message, and then click [Generate] to generate a new Message file and eMPF contribution data, and then try to submit again.
The above ten steps can complete the entire process of eMPF-related information maintenance and contribution submission.
Appendix 1: eMPF specified fields and value logic in the system
Part I General Information
General information is the part that must be completed for each contribution, regardless of whether the "Member's Status" is "N" (New, New employee), "E" (Exist, active employee), or "T" (Termination, Terminated employee).
Field Name | Format Requirements in Reports | condition | Definition | In-system value logic | example |
Scheme Registration No. | String (10) | Required | The unique registration number assigned by the eMPF platform to each trustee scheme. | [Benefits] - [Settings] - [Scheme Registration No.] | MT12345 |
Employer Account No. | Numeric (15, 0) when used as the "eMPF Employer Account Number", not more than 15 digits | Required | The employer's unique account number on the eMPF platform must be consistent with the submitted contribution record. | [Benefit] - Renamed field "eMPF Employer Account No. (Employer Participation No.)" in Settings | 3777463656273 |
Payroll Group ID | String (20 Can be in English or numbers only | Condition Required (if there are multiple pay groups) | Identification used by employers to classify employees (e.g. department, contribution frequency). If there are more than one pay group, it must be filled in. | Payroll Policy ID in [Payroll] - [Settings] of [People] - [Employment & Payroll Information] | MLY |
Department Code | String (50 Only in English and numbers | optional | The department code of the employee is for employer reference only and does not affect the calculation of contributions. | [People] - [Employment & Payroll Information] - [Department] corresponding "code" in [Company]-[Department] | HRD |
Payroll Contribution Period Start Date | YYYYMMDD | Required | The start date of the payroll contribution period. | First day of the "period" month selected when generating the Message file | 20221201 |
Payroll Contribution Period End Date | YYYYMMDD | Required | The end date of the payroll contribution cycle. | End date of the "period" month selected when generating the Message file | 20221231 |
Contribution Day | YYYYMMDD | Condition Required (temporary workers in industry plan only) | Contribution date for temporary workers in the industry plan (if "next working day" is selected to contribute). | When [Benefit] - [File] -[Account Type] is "CEE", fill in the "Contribution Date" selected when generating Message file | 20230110 |
Employee Account Type | String (3) | Required | Employee Type: CEE: Temporary workers REE: Regular employees | [Benefits] - [File] - [Account Type] | REE |
ID Type | String (20) | Required | Identification Type: -KID: Hong Kong Identity Card -PASSPORT: PASSPORT (used when there is no Hong Kong Identity Card) | In the previous information field of [People] - [Basic Information] - [ID Card/Passport No.], fill in "HKID" if it is "ID Card", fill in "PASSPORT" if it is "PASSPORT" | HKID |
ID No. | String (50) | Required | Hong Kong identity card number (including check digits, no brackets) or passport number. | The latter information column in [People] - [Basic Information] - [ID Card/Passport No.] | E3649125 |
Date of Employment | YYYYMMDD | Required | Employee entry date. | [People] - [Employment & Payroll Information] - "Join Date" | 20121231 |
Member's Status Member Status | String (1) | Required | Member Status: N: New, New employees E: Exist, Existing employees T: Termination Resigned employees | Fill in "N" for all records in the report of the employee's first contribution, that is, the contribution cycle month of less than 60 days of employment and the month of first 60 days of employment.
Fill in "E" in the second month after the employee has been employed for 60 days (after the first contribution is completed, and in the subsequent contribution cycle month without Termination Date.
Fill in "T" if the employee has a Termination Date, and the contribution period is within the month of the Termination Date. | E |
PART II: MEMBERS' CONTRIBUTION
The member contribution information section is the part that employees must fill in according to the conditions when they need to submit contribution data.
Field Name | Format | condition | Definition | In-system value logic | example |
Member Account No. | Numeric (15, 0) | Condition Required (when there are multiple active accounts under the same employer/pay group) | The employee's unique account number on the eMPF platform. If there are no multiple accounts, you can leave them blank and the platform will be identified by the ID number. | Leave blank | 22983883092 |
Staff No. | String (20) | optional | The employer's internal employee number is for reference only and does not affect the calculation of contributions. | [People] - [Basic Information] - "Staff ID" | AG55446576 |
Member Contribution Period Start Date | YYYYMMDD | Conditions Required (with contributions or surcharges) | The start date of the contribution cycle (if multiple payments need to be made, they need to be filled in separately). | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] -Start date of the "Period" in which the current contribution data is located | 20220201 |
Member Contribution Period End Date | YYYYMMDD | Conditions Required (with contributions or surcharges) | The end date of the contribution cycle. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - End date of the "Period" in which the current contribution data is located | 20220228 |
No. of Working Days | Numeric (3, 0) | Condition Required (temporary workers in industry plan only) | The number of days worked by temporary workers in the contribution cycle of the industry plan. | When [Benefit] - [Benefit File] - "Account Type" is "CEE", fill in the sum of "MPF Working Days" of compensation projects in the "Period" where the current contribution data is located.
When the result is 0, leave the report blank | 3 |
Working Period Start Date | YYYYMMDD | Condition Required (temporary workers in industry plan only) | The start date of the work cycle of the temporary worker. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - start date of the "Period" in which the current contribution data is located | 20121201 |
Working Period End Date | YYYYMMDD | Condition Required (temporary workers in industry plan only) | The end date of the work cycle of the temporary worker. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - end date of the "Period" in which the current contribution data is located | 20121231 |
Relevant Income | Numeric (18, 2) | Conditions Required (except for temporary workers in specific industries, when contributions are available) | Calculate all monetary income of MPF (including salaries, bonuses, etc.). | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Relevant Income" in the "Period" where the current contribution data is located.
When the result is 0, leave the report blank | 23000.5 |
Basic Salary | Numeric (18, 2) | optional | Basic salary (required if voluntary contributions are calculated based on basic salary). | [People] - [Employment & Payroll Information] - "Basic Salary" | 23000.5 |
Employer's Mandatory Contribution | Numeric (18, 2) | Conditions Required (when the employer needs to pay) | Employer mandatory contribution amount. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employer Mandatory Contributions" for the "Period" where the current contribution data is located.
When the result is 0, leave the report blank | 1150.03 |
Employee's Mandatory Contribution | Numeric (18, 2) | Conditions Required (when employees need to pay) | Employee mandatory contribution amount. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employee Mandatory Contributions" for the "Period" where the current contribution data is located.
Leave blank when result is 0. | 1150.03 |
Employer's Voluntary Contribution | Numeric (18, 2) | optional | Amount of employer voluntary contributions. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employer Voluntary Contributions" for the "Period" where the current contribution data is located.
When the result is 0, leave the report blank | 1200 |
Employer's Voluntary Contribution 2 | Numeric (18, 2) | optional | Employer Second Voluntary Contribution Account Amount (applicable to multi-voluntary schemes). | Leave blank | 1200 |
Employee's Voluntary Contribution | Numeric (18, 2) | optional | Employee voluntary contribution amount. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employee Voluntary Contributions" for the "Period" in which the current contribution data is located.
When the result is 0, leave the report blank | 1000 |
Employer's Surcharge | Numeric (18, 2) | optional | Employer surcharge (costs incurred for late contributions). | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employer Surcharge" for the "Period" where the current contribution data is located (see Requirement Contents 1).
When the result is 0, leave the report blank | 57.75 |
Employee's Surcharge | Numeric (18, 2) | optional | Employee surcharge. | [Benefit] - [Benefit File] - [View] Details - [Contribution Record] - "Employee Surcharge" in the "Cycle" where the current contribution data is located (see Requirement Content 1).
When the result is 0, leave the report blank | 57.75 |
Total Amount | Numeric (18, 2) | Conditions Required (with contributions or surcharges) | Total amount (mandatory + voluntary contributions + surcharges). | Sum of the previous "Employer Mandatory Contribution" + "Employee Mandatory Contribution" + "Employer Voluntary Contribution" + "Employee Voluntary Contribution" + "Employer Surcharge" + "Employee Surcharge".
When the result is 0, leave blank in the report. | 6415.56 |
Part III: New Members Data
When the employee's "Member Status" is "N", the "New Members Data" section needs to be filled in according to the conditions of the field.
(1) In particular, when the employee has not been employed for 60 days in the current contribution period, it does not need to appear in the [Remittance Overview] and [Remittance Details] of the current period. In the contribution cycle month that has just been employed for 60 days, you need to make contributions at the same time as the contribution cycle that has not been employed for 60 days (that is, the current rules are used). The "member status" of these records needs to be filled in as "N", and you need to fill in the information in the "New Members Data" section.
(2) When "Member Status" is not "N", the information in "New Members Data" section needs to be left blank.
Field Name | Format | condition | Definition | In-system value logic | example |
Gender | String (1) | Required (when Member's Status is "N") | Gender identification: -M: male -F: female -U: neutral -O: No information | [People] - [Basic Information] - "Gender".
When "gender" is "Male", fill in "M";
When "gender" is "Female", fill in "F";
When it is blank, fill in "O". | M |
Surname (English) | String (100) | Required (when Member's Status is "N" and there is no Chinese name) | English surnames, symbols (such as "-", ",") are allowed. | [People] - [Basic Information] - "Surname(ID card)" | Lee |
Given Name (English) | String (100) | Required (when Member's Status is "N" and there is no Chinese name) | English name, if there is only one word, fill in the last name, leave the first name blank. | [People] - [Basic Information] - "Given Name(ID card)" | Chee Hynn Aiden |
Surname (Chinese) | String (50) | Required (when Member's Status is "N" and there is no English name) | Chinese surname, symbols (such as "-", ",") are allowed. | Leave blank | Li |
Given Name (Chinese) | String (50) | Required (when Member's Status is "N" and there is no English name) | Chinese name, if there is only one word, fill in the last name, leave the first name blank. | Leave blank | Zixuan |
Date of Joining the Scheme | YYYYMMDD | Required (when Member's Status is "N") | The date on which the employee joins the MPF scheme. | [Benefit] - [Benefit File] - [View] Details - "Scheme Start Date" | 20121231 |
Date of Birth | YYYYMMDD/YYYYMM/YYYY | Required (when Member's Status is "N") | Date of birth, fill in according to ID card/passport: -Full Date (YYYYMMDD) -Year Month (YYYYMM) -Year (YYYY) | [People] - [Basic Information] - "Birthday" | 19710212 or 197102 or 1971 |
Member Class | String (50) | Conditions Required (when new employees join voluntary contributions) | Membership category, used to define the Vesting Scale of voluntary contributions. | New field "Member Class" added in [Benefit] - [Benefit File] - [View] Details | Manager |
Commencement Date for Vesting Entitlement/ Effective date of vesting interests | YYYYMMDD | Required (when a member joins voluntary contributions and service definition is determined by the employer) | The start date on which the voluntary contributions vest in interest (e.g., the date of employment or a specific date). | New field "Commencement Date for Vesting Entitlement" added in [Benefit] - [Benefit File] - [View] Details | 20121231 |
Employee Type | String (11) | Required (when Member's Status is "N") | New Employee Type: -NEW New employees INTRA _ GROUP: Intra-group transfers EXEMPT: Exempted persons EXPATRIATE: Foreign employees | [People] - [Basic Information] - "ID Card/Passport No." is Passport, fill in "EXPATRIATE" (foreign employee);
Open [Benefit] - [Benefit File] - [View] Details, fill in "EXEMPT" (Exempted Person);
In other cases, fill in "NEW";
Priority: "EXEMPT" → "EXPATRIATE" → "NEW" | NEW |
Previous Date of Employment | YYYYMMDD | Condition Required (when employee type is INTRA _ GROUP) | Date of previous employment. | Leave blank | 20121231 |
Visa Issue Date | YYYYMMDD | Condition required (when employee type is EXPATRIATE) | Foreign employee visa issuance date. | Required when "Employee Type" is "EXPATRIATE".
"Employee"-"Profile"-Newly added field "Visa Issue Date" | 20121231 |
Email Address | String (100) | Required (when Member's Status is "N" and there is no mobile phone number) | Employee email address. | [People] - [Basic Information] - "Email Address" | |
Mobile No. (Country Code) | String (10) | Condition Required (when Member's Status is "N" and no mailbox) | Mobile number (country code) | Area code in the column before [People] - [Basic Information] - "Phone Number" | 852 |
Mobile No. | Numeric (15, 0) | Condition Required (when Member's Status is "N" and no mailbox) | Mobile Number | The number in the column after [People] - [Basic Information] - "Phone Number" | 29180102 |
Part IV Termination Data
When the employee's "Member Status" is "T", the "Termination Data" section needs to be completed according to the conditions of the field. When the "Member Status" changes from "T" to "N" in the next contribution, the information in the "Employment Termination Information" section needs to be left blank.
Field Name | Format | condition | Definition | In-system value logic | example |
Last Date of Employment | YYYYMMDD | Condition required (when the membership status is "T") | Employee's last working date. | [People] - [Employment & Payroll Information] - "Termination Date" | 20121231 |
Reason of Termination | String (15) | Condition required (when the membership status is "T") | You must follow the following separation reason code: 1. RESIGN: Resign 2. RETIRE: Retirement 3.EARLY _ RETIRE: Early retirement 4. DEATH: Death 5.ILL _ HEALTH: Health reasons 6. TOTAL _ INCAP: Total incapacity 7. REDUNDANCY: Layoffs 8. LAID _ OFF: Severance 9. DISMIS: Dismissal 10.SUM _ DISMISS: Immediate Dismissal 11. WRONG _ ENROL: Error registration 12.INTRA _ GROUP _ TRF: Intra-group transfer 13.CONTRACT _ END: Contract expiration | [People] - [Employment & Payroll Information] - "Termination Reason" | RESIGN |
Long Service Payment/Severance Payment Long service payment/severance payment | String (1) | Required condition (when the membership status is "T" and the employer applies for deduction) | Application Type: -L: Long service payment (subject to ≥ 5 years of service and DEATH: DEATH, DISMIS: dismissal, CONTRACT _ END: contract expiration, ILL _ HEALTH: health reasons or RETIRE: retirement) -S: severance pay (subject to ≥ 2 years of service and the reason for resignation is REDUNDANCY: layoff or LAID _ OFF: severance) | If the Termination reason is "Death", "Dismissal" (new), "End of Contract" (new), "Ill-Health" (new), or "Resignation" (new), and the "Long Service Payment" in the [Benefit] - [Benefit File] - [View] Details - [Contribution Record] of the month in which the Termination Date is located is not 0, then fill in "L";
If the Termination Reason is "Redundancy" (new) or "Lay off", and the "Severance Payment" in the [Benefit] - [Benefit File] - [View] Details - [Contribution Record] of the month where the Termination Date is located is not 0, then fill in "S";
Special case: If neither the Pay Items "Long Service Payment" nor "Severance Payment" are 0, then the judgment is made based on the "Termination Reason".
If both the Pay Items "Long Service Payment" and "Severance Payment" are 0, leave them blank | L |
Appendix II MPF report generation rules under special Scenarios
| Scenario 1: The employee just turns 18 or 65 on a date of the month |
Processing Rules | When the employer submits contributions, Relevant Income, EE/ER MC/VC submits data based on the amount of the whole month, and the eMPF platform will process it proportionally. Therefore, when generating eMPF contribution records, the Relevant Income, EE/ER MC/VC of employees who have just reached the age of 18 or 65 will not be calculated pro-rata. |
| Scenario 2: Employee employed for less than 60 days |
Processing Rules | Generally, there is no need to make immediate contributions and do not need to appear in the current month's contribution report and contribution details |
Example | Employees enrolled on June 12, 2024. In the contribution reports and contribution breakdowns for June and July, no immediate contributions are required because the employee has not been employed for 60 days. |
| Scenario 3: The employee has just been employed for 60 days in the current month |
Processing Rules | Contribution data for the current month and contribution data for previous months with less than 60 days of employment are submitted in different record lines in the same report. "Member Status/Member Status" is N, and you need to fill in the information section of "New Employee Information". |
Example | Employee Chan Ka Cheung joined the company on 2024-12-07, and the related income of the new employee's salary operation is 24193.55; Not joining VC (voluntary contribution). The basic salary is 30,000.
Before 2025-01-10, the employer is not required to make immediate contributions to the employee, but is required to submit the contributions for the month in which the employee has been employed for 60 days together with the previous month that has not been employed for 60 days |
| Scenario 4: Employees leave and re-join within the same month |
Processing Rules | The current month's contributions only contain the contribution record data for which the "member status" is "T" in [Benefit] - [Benefit File] - [View] Details - [Contribution Record]. Contribution data after re-employment is submitted during the 60-day contribution cycle month of new employment. Therefore, the separation contribution portion during this month and the reentry contribution portion are submitted separately.
In order to realize this submission method, it is recommended that when an employee is rehired, if it is not necessary to record the historical data of the employee's last employment period, a new information file should be set up for the employee in the system to separate the two contributions of the same month. |
Example | Employee Chan Ka Cheung terminated on 2024-11-10. There is no long service payment/severance pay. The relevant income in the resignation salary is 9000, EE MC, ER MC = 450; Not joined VC. When leaving the job, the basic salary is 27,000. This Final Payment generates contribution record data for the period with "Member Status" of "T" in November 2024 in [Benefit] - [Benefit File] - [View] Details - [Contribution Record].
Then Chan Ka Cheung re-joined the company on November 21, 2024 in the same month, and the relevant income in the new employee's salary was 10,000; Not joined VC. The basic salary is changed to 30,000. This payroll additionally generates regular contribution record data in November 2024 for periods with empty "Member Status" in [Benefit] - [Benefit File] - [View] Details - [Contribution Record].
When submitting contribution data for November, the termination month, only submit contribution data whose "Member Status" cycle is November 2024 is "T", that is, Relevant Income = 9000; EE MC, ER MC = 450
After re-employment on November 21, 2024, contributions between November 21 and November 30 need to be submitted as "New" employee status in the January contribution record just 60 days after employment, which belongs to another employment period begins. |
Appendix 3 eMPF official template file, including a description of the meaning of each field, filling requirements and filling examples: