Corrections and Off-Cycle Runs

Pay outside the regular schedule, change or take back a run, leave a worker out, and correct pay that's already been paid.

Most payroll follows the regular cycle: a run per pay period, opened, filled, calculated and approved. This page covers everything else: extra payrolls, changing a run before or after approval, and correcting pay that's already gone out.

Off-cycle runs

An off-cycle run is an extra payroll, such as a bonus run, a commission run, or a final paycheck. Create one with a targetPayDate:

POST /integration/v1/payroll-runs/off-cycle
{ "targetPayDate": "2026-11-25" }

The run starts OPEN, on a pay period of its own, and Everee sends payroll-run.created. From there it works like any other run: add items, calculate, fix blockers, and approve. Its earliest pay date follows the company's funding type for ad hoc payments. See Regular and off-cycle runs.

Changing a run

ToUseWhile the run is
Move the pay dateChange a payroll run's pay dateOPEN, READY, BLOCKED
Add or update payAdd items to a payroll runOPEN, CALCULATING, READY, BLOCKED
Remove payRemove an item from a payroll runOPEN, READY, BLOCKED
Leave a worker outExclude a payment from a payroll runOPEN, CALCULATING, READY, BLOCKED
Take back an approvalReopen a payroll runAPPROVED, before reopenDeadline
Correct pay that's been paidAdd items with correction-authorized=true, to a later runAny run that takes items

Any change to a calculated run sends it back to OPEN. Calculate it again before approving.

Leaving a worker out

When one worker's payment can't be fixed in time, exclude it, optionally with an excludedReason, so the rest of the run can be paid. The payment stays listed with status EXCLUDED, and its items are deleted from the run. To pay that worker later, send the same items, with the same externalIds, to another run: they move to it.

Reopening an approved run

Until the run's reopenDeadline, you can reopen an APPROVED run. Its payments are unapproved and it goes back to OPEN, so you can change it and approve it again. reopenDeadline is set when the run is approved: it's the start of the next window in which Everee sends payments, and at least 15 minutes after approval. After it, money is moving, and changes are corrections.

Correcting pay that's been paid

Pay that's gone out can't be changed in place. Correct it in a later run, open or off-cycle:

  1. Send the item again with the same externalId and what it should have been: the full corrected amount, not the difference.
  2. Send it with correction-authorized=true. Without it, an item that's been paid is rejected with PAYABLE_ALREADY_PAID, so a retry of an old request can't pay anyone twice.

The paid item is kept as it was, for the record. The correction is earned on the new run's earning date, not the original's. Everee takes back what was paid on it and pays the corrected amount, so the worker's payment in the new run carries the difference: more pay when you underpaid, less when you overpaid. Calculate and approve the run as usual.

POST /integration/v1/payroll-runs/4907/items?correction-authorized=true
{
  "items": [
    {
      "externalId": "shift-88213",
      "externalWorkerId": "emp-1042",
      "label": "Regular hours, Nov 3 (corrected)",
      "payCode": "REGULAR_HOURLY",
      "amount": { "amount": "225.00", "currency": "USD" },
      "unitCount": 9,
      "unitRate": { "amount": "25.00", "currency": "USD" }
    }
  ]
}

An item that's on another payment that hasn't been paid yet is rejected with PAYABLE_ON_ANOTHER_PAYMENT: remove it from that payment first. See Adding, updating and correcting items for every case.

Related


Did this page help you?