Employees as Directors

Directors of a company are classed as employees for payroll purposes but they can be treated slightly differently when it comes to calculating National Insurance. Directors still pay National Insurance on annual income from salary and bonuses above the Lower Earnings Limit (LEL) for the current tax year but their contributions are worked out from their annual earnings rather than from what they earn in each pay period.

There are two distinct calculation methods that can be used:

  • Annual Basis - this method is best suited to directors who are paid irregularly.
  • Alternative Basis - this method is best suited to directors who are paid regularly.

The PayRun.io API supports both calculation methods and will automatically make the correct submission to HMRC in the Full Payment Submssions when an employee's status changes.

Paying an employee as a director

The first step in setting up an employee as a director is to set the DirectorshipAppointmentDate property on the Employee. If your employee already exists then you can issue a PATCH request as below.

When updating an employee you must provide the effective date of the new revision you are creating. This should on or before the DirectorshipAppointmentDate or the directorship status may not be correctly applied.

If you are updating an employee's status retrospectively then you may need to rewind the payroll to correct any mis-calculated periods.

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>2017-04-30</EffectiveDate>
    <DirectorshipAppointmentDate>2017-05-22</DirectorshipAppointmentDate>
</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": {
    "EffectiveDate": "2017-04-30",
	"DirectorshipAppointmentDate": "2017-05-22"
  }
}'

The second step is to create a new NIPayInstruction and set the DirCalculationMethod you wish to use for your director. In this example we'll set the AlternativeBasis for our director. The directorship status has no bearing on the NI letter in use so unless you are explicity advised to do so you should use the same NI letter as before.

curl -X POST \
  'https://api.test.payrun.io/Employer/ER001/Employee/EE001/PayInstructions"' \
  -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"?>
<NIPayInstruction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <StartDate>2017-04-30</StartDate>
  <EndDate xsi:nil="true" />
  <DirCalculationMethod>AlternativeBasis</DirCalculationMethod>
  <NiLetter>A</NiLetter>
</NIPayInstruction>'
curl -X POST \
  'https://api.test.payrun.io/Employer/ER001/Employee/EE001/PayInstructions' \
  -H 'Accept: application/json' \
  -H 'Api-Version: default' \
  -H 'Authorization: {OAuthHeader}' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-type: application/json' \
  -d '{
  "NIPayInstruction": {
    "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
    "StartDate": "2017-04-30",
    "EndDate": null,
    "DirCalculationMethod": "AlternativeBasis",
    "NiLetter": "A"
  }
}'