Calculators

Total hours from a timesheet, and what they pay

Add up a timesheet and turn it into gross pay.

Each day takes a start, a finish and an unpaid break in minutes. Leave days off out of the list rather than sending zeros.

An overnight shift is handled, not rejected: a finish at or before the start is treated as the next day, so 22:00 to 06:00 is eight hours. A break longer than the shift floors the day at zero rather than going negative.

Pay is GROSS. For what is left after PAYE, ACC, KiwiSaver and a student loan, send the hourly rate and hours to /v1/hourly-to-salary.

Does not apply overtime or penal rates, public holiday entitlements, or a minimum wage check.

post/v1/work-hours

Request

  • Base URL: https://api.calculate.co.nz
  • URL: https://api.calculate.co.nz/v1/work-hours
  • Auth: API key in header X-API-Key

Request body

hourly_ratenumber

Gross pay per hour. Zero for hours only.

Example request

{
  "days": [
    {
      "break_minutes": 30,
      "finish": "17:00",
      "label": "Monday",
      "start": "08:30"
    },
    {
      "break_minutes": 30,
      "finish": "17:00",
      "label": "Tuesday",
      "start": "08:30"
    },
    {
      "break_minutes": 30,
      "finish": "17:00",
      "label": "Wednesday",
      "start": "08:30"
    },
    {
      "break_minutes": 45,
      "finish": "19:30",
      "label": "Thursday",
      "start": "08:30"
    },
    {
      "break_minutes": 30,
      "finish": "15:00",
      "label": "Friday",
      "start": "08:30"
    }
  ],
  "hourly_rate": 32.5
}

Response

Hours per day, the total, and gross pay at each frequency.

disclaimerstring required

Scope and limits of this calculation.

Example response

{
  "disclaimer": "Gross hours and pay only. Does not apply overtime or penal rates, public holiday entitlements, or minimum wage checks, and does not deduct tax. Not legal advice.",
  "result": {
    "annual_pay": 68022.5,
    "days": [
      {
        "break_minutes": 30,
        "finish": "17:00",
        "hours": 8,
        "label": "Monday",
        "overnight": false,
        "start": "08:30"
      },
      {
        "break_minutes": 30,
        "finish": "17:00",
        "hours": 8,
        "label": "Tuesday",
        "overnight": false,
        "start": "08:30"
      },
      {
        "break_minutes": 30,
        "finish": "17:00",
        "hours": 8,
        "label": "Wednesday",
        "overnight": false,
        "start": "08:30"
      },
      {
        "break_minutes": 45,
        "finish": "19:30",
        "hours": 10.25,
        "label": "Thursday",
        "overnight": false,
        "start": "08:30"
      },
      {
        "break_minutes": 30,
        "finish": "15:00",
        "hours": 6,
        "label": "Friday",
        "overnight": false,
        "start": "08:30"
      }
    ],
    "days_worked": 5,
    "fortnightly_pay": 2616.25,
    "hourly_rate": 32.5,
    "monthly_pay": 5668.54,
    "total_hours": 40.25,
    "weekly_pay": 1308.13
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.