Auto Enrolment

Auto enrolment was made into law as part of the Pensions Act 2008. The principal change brought about by the Act is that all workers will have to opt out of an occupational pension plan of their employer, rather than opt in. This is referred to as automatic enrolment, and moves a significant amount of responsibility onto the employer to ensure that their employees are enrolled in a workplace pension scheme.

A critical part of the Employer's ongoing responsibility for auto enrolment is the continual assessment of all employees every payment period following their staging date. The assessment criteria include the employee's earnings and therefore there is a reliance on payroll data in order to complete the assessment.

Auto Enrolment Objects

The auto enrolment assessment is configured using the Employer Auto Enrolment section. This is accessed as a nested element of the Employer.

In addition it is also necessary to create an auto enrolment compatible pension scheme.

Employer Auto Enrolment

All the employer specific details are stored within the Employer Auto Enrolment data element. This data element is stored within the employer object.

The following example demonstrates setting the details using a [PATCH] request.

curl -X PATCH \
  https://api.test.payrun.io/Employer/ER001 \
  -H 'Accept: application/xml' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/xml' \
  -d '<?xml version="1.0"?>
<Employer xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <EffectiveDate>2018-04-06</EffectiveDate>
    <AutoEnrolment>
        <StagingDate>2018-05-01</StagingDate>
        <PostponementDate>2018-05-15</PostponementDate>
        <PrimaryFirstName>John</PrimaryFirstName>
        <PrimaryLastName>Jones</PrimaryLastName>
        <PrimaryEmail>John.Jones@PayRun.io</PrimaryEmail>
        <PrimaryTelephone>0123456789</PrimaryTelephone>
        <PrimaryJobTitle>Boss</PrimaryJobTitle>
        <SecondaryFirstName>Jane</SecondaryFirstName>
        <SecondaryLastName>Johnson</SecondaryLastName>
        <SecondaryEmail>Jane.Johnson@PayRun.io</SecondaryEmail>
        <SecondaryTelephone>0123456781</SecondaryTelephone>
        <SecondaryJobTitle>Helpdesk</SecondaryJobTitle>
        <Pension href="/Employer/ER001/Pension/PENSCH001" />
    </AutoEnrolment>
</Employer>'
curl -X PATCH \
  https://api.test.payrun.io/Employer/ER001 \
  -H 'Accept: application/json' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/json' \
  -d '{
    "Employer": {
        "EffectiveDate": "2018-04-06",
        "AutoEnrolment": {
            "StagingDate": "2018-05-1",
            "PostponementDate": "2018-05-15",
            "ReEnrolmentDayOffset": 0,
            "ReEnrolmentMonthOffset": 0,
            "PrimaryFirstName": "John",
            "PrimaryLastName": "Jones",
            "PrimaryEmail": "John.Jones@PayRun.io",
            "PrimaryTelephone": "0123456789",
            "PrimaryJobTitle": "Boss",
            "SecondaryFirstName": "Jane",
            "SecondaryLastName": "Johnson",
            "SecondaryEmail": "Jane.Johnson@PayRun.io",
            "SecondaryTelephone": "0123456781",
            "SecondaryJobTitle": "Helpdesk",
            "Pension": {
                "@href": "/Employer/ER001/Pension/PENSCH001",
            }
        }
    }
}'

Staging Date

This date represents the date when the employers auto enrolment responsibility begins. At this date all employees must be assessed to see if they qualify for auto enrolment into the companies auto enrolment pension scheme.

New born companies

Companies who become employers for the first time on or after 1st October 2017 will need to start assessing employees straight away. Employers in this situation should set the Staging Date to the 1st October 2017

Postponement Date

In order to allow employers the flexibility to align auto enrolment with their own internal processes, it is possible to defer the start of the auto enrolment assessment for up to 3 calender months from the staging date. Use the Postponement date property to apply the employer level deferment.

Re-enrolment Offset

The auto enrolment legislation requires that employees (who have not been automatically enrolled) are re-assessed every third anniversary of the employers staging date. However, it is possible to adjust this re-assessment date to within a 6 month window (up to 3 months before or after) of the tri-annual anniversary.

The re-assessment date can be adjusted using the Re-enrolment offset properties. Use negative numbers to offset to before the anniversary and positive to offset until afterwards. Months are applied first followed by days as demonstrated in the following examples.

Negative Offset Example

  • Staging date: 2018-06-01
  • First tri-annual anniversary: 2021-06-01
  • Desired re-assessment date: 2021-04-30
  • ReEnrolmentDayOffset: -1
  • ReEnrolmentMonthOffset: -1
  1. 2021-06-01 subtract 1 calender month = 2021-05-01
  2. 2021-05-01 subtract 1 day = 2021-04-30

Positive Offset Example

  • Staging date: 2018-06-01
  • First tri-annual anniversary: 2021-06-01
  • Desired re-assessment date: 2021-07-15
  • ReEnrolmentDayOffset: 1
  • ReEnrolmentMonthOffset: 14
  1. 2021-06-01 add 1 calender month = 2021-07-01
  2. 2021-07-01 add 14 days = 2021-07-15

Why Use Offsets?

Because tri-annual anniversaries occur every 3 years, the offset (days and months) will be applied each time. Using the (day/month) offset pattern means that you can control the re-assessment dates without having to specify each re-assessment date explicitly.

Auto Enrolment Pension

PayRun.io requires that an auto enrolment compatible pension has been configured. A link to that pension is then included in the employer auto enrolment element.

See Pensions for more information.

Employee Auto Enrolment Settings

In addition to the employer level auto enrolment settings, the employee also has properties that control auto enrolment assessment behaviour.

The following example demonstrates setting employee auto employment values using a [PATCH] request.

curl -X PATCH \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001 \
  -H 'Accept: application/xml' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/xml' \
  -d '<?xml version="1.0"?>
<Employee xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <EffectiveDate>2018-04-06</EffectiveDate>
    <AEAssessmentOverride>OptOut</AEAssessmentOverride>
    <AEAssessmentOverrideDate>2018-04-27</AEAssessmentOverrideDate>
    <AEPostponementDate xsi:nil="true" />
</Employee>'
curl -X PATCH \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001 \
  -H 'Accept: application/json' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/json' \
  -d '{
    "Employee": {
        "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
        "EffectiveDate": "2016-05-06",
        "AEAssessmentOverride": "OptOut",
        "AEAssessmentOverrideDate": "2018-04-27",
        "AEPostponementDate": null
    }
}'

AE Postponement Date

The auto enrolment legislation allows the employer to defer assessment (of an employee) for up to 3 months from their employment start date. This behaviour is controlled using the AEPostponementDate property on the employee data entity.

AE Assessment Override

To control assessment outcomes (at the employee level) you can apply assessment overrides. The override is applied using 2 properties on the employee data object: AEAssessmentOverride and AEAssessmentOverrideDate.

AE Assessment Override Date

Due to the date critical nature of the assessment process, it is important to capture the date when assessment overrides take effect.
This is normally the date when the employer received official notification from the employee that they wish to override the default auto enrolment assessment outcome.

AE Assessment Override Options

  • None
    The [None] override. Indicates that no override has been set.
  • OptOut
    The [Opt Out] override. Indicates that the employee has chosen to opt-out of the auto enrolment process within 1 calendar month of automatic enrolment.
  • OptIn
    The [Opt In] override. Indicates that the employee has chosen to opt-in to the auto enrolment pension.
  • VoluntaryJoiner
    The [Voluntary Joiner] override. Indicates that a normally excluded employee has chosen to join the auto enrolment pension.
  • ContractualPension
    The [Contractual Pension] override. Indicates that an employee is to be enrolled in an AE compatible pension under condition of contract.
  • CeasedMembership
    The [Ceased Membership] override. Indicates that an employee has chosen to leave the auto enrolment pension scheme after 1 calendar month of auto enrolment.
  • Leaver
    The [Leaver] override. Indicates that an auto enrolment employee has left employment.
  • Excluded
    The [Excluded] override. Indicates that an employee is excluded from auto enrolment assessment.

Auto Enrolment Assessment

When the employer auto enrolment details have been configured and a pension scheme has been setup, the system is ready to begin assessing employees.

Employee auto enrolment assessments occur every time the employee is included in a pay run calculation. This results in a single assessment record for each employee in each payment period.

See AE Assessment reference data for more information.

Accessing AE Assessments

The employee's auto enrolment assessments are accessed using the following URL patterns:

  • /Employer/ER001/Employee/EE001/AEAssessments
    Gets the links to all assessments.
  • /Employer/ER001/Employee/EE001/AEAssessment/AE001
    Returns the detail of the assessment.

Get AE Assessment Example

curl -X GET \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001/AEAssessment/AE001 \
  -H 'Accept: application/xml' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/xml' \
curl -X GET \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001/AEAssessment/AE001 \
  -H 'Accept: application/json' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/json' \

Response Example

<?xml version="1.0"?>
<AEAssessment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Age>37</Age>
    <StatePensionAge>68</StatePensionAge>
    <StatePensionDate>2046-08-05</StatePensionDate>
    <AssessmentDate>2016-02-06</AssessmentDate>
    <QualifyingEarnings>1200.0000</QualifyingEarnings>
    <AssessmentCode>EligibleJobHolder</AssessmentCode>
    <AssessmentEvent>OptIn</AssessmentEvent>
    <AssessmentResult>Enrol</AssessmentResult>
    <AssessmentOverride>OptIn</AssessmentOverride>
</AEAssessment>
{
    "AEAssessment": {
        "Age": "37",
        "StatePensionAge": "68",
        "StatePensionDate": "2046-08-05",
        "AssessmentDate": "2016-02-06",
        "QualifyingEarnings": "1200.0000",
        "AssessmentCode": "EligibleJobHolder",
        "AssessmentEvent": "OptIn",
        "AssessmentResult": "Enrol",
        "AssessmentOverride": "OptIn"
    }
}

Understanding the Assessment

The AE Assessment object includes several properties that describe the assessment result.

AssessmentCode
This value indicates the type of worker identified. The worker types are:

  • Excluded - Indicates the employee is excluded from assessment.
  • EligibleJobHolder - Indicates that the employee is eligible for auto enrolment.
  • NonEligibleJobHolder - Indicates the employee is either outside the eligible age bracket or has insufficient qualifying earnings.
  • EntitledWorker - Indicates the employee may join the scheme voluntarily but is not obligated to do so under auto enrolment rules.

AEAssessmentEvent
This value describes the triggering event of the assessment result.

  • NonEnrolmentEvent - Indicates the result is not an auto enrolment.
  • AutomaticEnrolment - Indicates the result is an auto enrolment.
  • OptIn - Indicates the employee has chosen to opt-into the auto enrolment pension scheme.
  • VoluntaryJoiner - Indicates the employee has joined the scheme voluntarily when not obliged to do so.
  • ContractualEnrolment - Indicates that the employee has join the scheme due to a contractual obligation.

AEAssessmentResult The value of this property describes the actions taken as a result of the assessment.

  • Inconclusive - Indicates the assessment could not be made.
  • NoChange - Indicates that no actions are required. The employee is already in the correct state.
  • Enrol - Indicates that the employee should be added to the auto enrolment pension scheme.
  • Exit - Indicates that the employee should be removed from the auto enrolment pension scheme.

Applying The Assessment Result

By default PayRun.io will create the necessary objects to apply the assessment outcome automatically as part of the pay run calculation process. This means that there is no further action required after an assessment has been made.

The implementation of the assessment result is controlled by a single pre-calculation rule: AutoEnrolmentStatusChangeRule

Disable Assessment Actions

Disabling the AutoEnrolmentStatusChangeRule rule (as described here) stops the automatic implementation of the assessment.

An Enrol Result

When an enrol result is detected, a new Pension Pay Instruction is created. The instruction adds the employee to the auto enrolment pension scheme starting from the assessment date.

An Exit Result

In the event of an exit assessment result, the employee's Pension Pay Instruction is ended on the day before the assessment date.

Opt-Out Refunds

If the assessment indicates an exit result triggered by an employee opt-out override, any previous auto enrolment pension contributions are credited back to the employee.

Adding Auto Enrolment History

When modelling a payroll that includes historical auto enrolment assessments, you will need to enter the assessment history of the employees. This is accomplished using the Insert Auto Enrolment Assessment API end points.

Why Is Auto Enrolment History Importanit?

The auto enrolment legislation dictates that an employee is entitled to full pension contribution refund if they choose to leave the auto enrolment pension scheme within one calendar month of automatic enrolment.

PayRun.io automatically handles the refund calculation, but needs to know the first date when the employee was assessed as an Eligible Job Holder.

Inserting Historical Assessment

The following example demonstrates the addition of auto enrolment assessment history using the [POST] method. In this case; the employee was assessed as an Eligible Job Holder in May 2017.

curl -X POST \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001/AEAssessments \
  -H 'Accept: application/xml' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/xml' \
  -d '<?xml version="1.0"?>
<AEAssessment>
    <AssessmentDate>2017-05-01</AssessmentDate>
    <AssessmentCode>EligibleJobHolder</AssessmentCode>
    <AssessmentEvent>AutomaticEnrolment</AssessmentEvent>
    <AssessmentResult>Enrol</AssessmentResult>
    <AssessmentOverride>None</AssessmentOverride>
</AEAssessment>'
curl -X POST \
  https://api.test.payrun.io/Employer/ER001/Employee/EE001/AEAssessments \
  -H 'Accept: application/json' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/json' \
  -d '{
{
  "AEAssessment": {
    "AssessmentDate": "2017-05-01",
    "AssessmentCode": "EligibleJobHolder",
    "AssessmentEvent": "AutomaticEnrolment",
    "AssessmentResult": "Enrol",
    "AssessmentOverride": "None"
  }
}'

Deleting History

Only manually inserted assessments can be deleted (using the [DELETE] end point). If you want to deleted generated assessments, the owning pay run will need to be deleted.