Added support for parallel payroll updates on large rosters
Partners can now split a payroll update across up to 10 concurrent requests to the same payroll, each covering up to 100 employees.
Why this matters
For partners running payroll on behalf of companies with large rosters, sequential per-employee updates have been the dominant bottleneck on end-to-end runtime—a risk that scales with roster size. Running those pages in parallel brings a 1,000-employee update down to roughly the length of a single request, with no change to the endpoint, request shape, or retry behavior.
Key functionality
- Send up to 10 PUT /v1/companies/{company_id}/payrolls requests to the same payroll concurrently, each covering up to 100 employees.
- Each request must cover a disjoint set of employees. Overlapping
employee_uuidvalues across concurrent requests fail with a422 invalid_attribute_valueon the version token. - Retry logic is safe. Because the endpoint sets absolute values rather than increments, a
409lock-contention response can be retried with the same request body unchanged.
Keep payroll-level fields (
selected_funding_method_uuid,withholding_pay_period,skip_regular_deductions,fixed_withholding_rate) out of concurrent requests. Changing any of them acquires a broader lock that serializes every request in the batch.
Read more in the Parallelize payroll updates guide.