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
| To | Use | While the run is |
|---|---|---|
| Move the pay date | Change a payroll run's pay date | OPEN, READY, BLOCKED |
| Add or update pay | Add items to a payroll run | OPEN, CALCULATING, READY, BLOCKED |
| Remove pay | Remove an item from a payroll run | OPEN, READY, BLOCKED |
| Leave a worker out | Exclude a payment from a payroll run | OPEN, CALCULATING, READY, BLOCKED |
| Take back an approval | Reopen a payroll run | APPROVED, before reopenDeadline |
| Correct pay that's been paid | Add items with correction-authorized=true, to a later run | Any 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:
- Send the item again with the same
externalIdand what it should have been: the full corrected amount, not the difference. - Send it with
correction-authorized=true. Without it, an item that's been paid is rejected withPAYABLE_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
Updated about 11 hours ago