| title | Off-Cycle Payroll (Bonus & Correction) |
|---|---|
| order | 5 |
The Off-Cycle Payroll workflow provides a complete experience for running payrolls outside of a company's regular pay schedule. It supports two off-cycle reasons: Bonus (paying a bonus, gift, or commission) and Correction (running a correction payment). The flow guides users through configuring pay period dates, selecting a reason, choosing employees, setting deduction and tax withholding preferences, and then executing the payroll.
After creation, the flow transitions into the standard Payroll Processing execution experience (configuration, overview, submission, and receipts). All off-cycle payroll types share the same execution steps as regular payrolls — the only difference is how the payroll is created.
import { Payroll } from '@gusto/embedded-react-sdk'
function MyApp() {
return <Payroll.OffCycleFlow companyId="your-company-id" onEvent={() => {}} />
}| Name | Type | Description |
|---|---|---|
| companyId Required | string | The associated company identifier. |
| onEvent Required | function | See events table for each subcomponent to see available events. |
| payrollType | 'bonus' | 'correction' |
Optional pre-selected off-cycle reason. When provided, the creation form starts with this reason selected. |
Events emitted during the creation phase:
| Event type | Description | Data |
|---|---|---|
| OFF_CYCLE_CREATED | Fired when the off-cycle payroll is created | { payrollUuid: string } |
Additional events are available when using the standalone subcomponents (Payroll.OffCycleReasonSelection and Payroll.OffCycleDeductionsSetting) — see their individual event tables below.
Once the payroll is created and the flow transitions to execution, all standard run payroll events are emitted (e.g. RUN_PAYROLL_CALCULATED, RUN_PAYROLL_SUBMITTED, RUN_PAYROLL_PROCESSED).
- Creation: User configures pay period dates, selects a reason (bonus or correction), chooses employees, and sets deduction/withholding preferences
- Execution: The standard payroll execution flow takes over — configure employee compensation, review, submit, and view receipts
The creation form presents two reasons with different defaults:
| Reason | Description | Default Deductions | Default Withholding |
|---|---|---|---|
| Bonus | Pay a bonus, gift, or commission | Skip regular deductions | Supplemental rate |
| Correction | Run a payroll outside of your regular pay schedule | Include regular deductions | Regular rate |
When the user changes the reason, deduction and withholding defaults update automatically.
Off-cycle components can be used to compose your own workflow, or can be rendered in isolation. For guidance on creating a custom workflow, see docs on composition.
After creation, the flow hands off to the shared Payroll.PayrollExecutionFlow for the configuration → overview → submission → receipts steps. If you build your own creation step in front of the standard execution UI, render Payroll.PayrollExecutionFlow directly with the payroll you created.
The main creation form for off-cycle payrolls. Includes reason selection, pay period date configuration, employee selection, deduction settings, and tax withholding configuration.
import { Payroll } from '@gusto/embedded-react-sdk'
function MyComponent() {
return <Payroll.OffCycleCreation companyId="your-company-id" onEvent={() => {}} />
}| Name | Type | Description |
|---|---|---|
| companyId Required | string | The associated company identifier. |
| onEvent Required | function | See events table for available events. |
| payrollType | 'bonus' | 'correction' |
Optional pre-selected payroll type. Defaults to 'bonus'. |
| dictionary | object | Optional translations for component text. |
| Event type | Description | Data |
|---|---|---|
| OFF_CYCLE_CREATED | Fired when the off-cycle payroll is created | { payrollUuid: string } |
- Check-only payroll: Toggle for check-only payments — when enabled, all employees will be paid by check (not direct deposit), the check date can be set to today or any future date, and start/end dates are not required
- Start date: Beginning of the pay period (required unless check-only; cannot be in the future for correction payrolls)
- End date: End of the pay period (required unless check-only; must be on or after start date)
- Payment date (check date): The date employees will be paid (must be at least 2 business days from today for direct deposit, unless check-only)
- Reason: Bonus or Correction payment
- Employee selection: Include all employees or select specific employees
- Deductions and contributions: Include or skip regular deductions (see OffCycleDeductionsSetting)
- Tax withholding rates: Configure withholding pay period and rate type (regular or supplemental)
Presents the reason selection UI for choosing between a bonus and correction payment.
import { Payroll } from '@gusto/embedded-react-sdk'
function MyComponent() {
return <Payroll.OffCycleReasonSelection companyId="your-company-id" onEvent={() => {}} />
}| Name | Type | Description |
|---|---|---|
| companyId Required | string | The associated company identifier. |
| onEvent Required | function | See events table for available events. |
| dictionary | object | Optional translations for component text. |
| Event type | Description | Data |
|---|---|---|
| OFF_CYCLE_SELECT_REASON | Fired when user selects a reason | { reason: 'bonus' | 'correction', defaults: object } |
The defaults object contains { skipDeductions: boolean, withholdingType: 'supplemental' | 'regular' }.
Allows users to choose whether to include or skip regular deductions and contributions for the off-cycle payroll. Taxes are always included regardless of the selection.
import { Payroll } from '@gusto/embedded-react-sdk'
function MyComponent() {
return <Payroll.OffCycleDeductionsSetting skipRegularDeductions={true} onEvent={() => {}} />
}| Name | Type | Description |
|---|---|---|
| skipRegularDeductions Required | boolean | Whether regular deductions are currently being skipped. |
| onEvent Required | function | See events table for available events. |
| dictionary | object | Optional translations for component text. |
| Event type | Description | Data |
|---|---|---|
| OFF_CYCLE_DEDUCTIONS_CHANGE | Fired when deduction preference changes | { skipRegularDeductions: boolean } |
- Include: Make all the regular deductions and contributions
- Skip: Block all deductions and contributions, except 401(k). Taxes will be included.
The off-cycle payroll creation uses the Create an off-cycle payroll endpoint. After creation, the standard payroll execution endpoints apply:
- Calculate payroll:
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/calculate - Submit payroll:
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/submit - Cancel payroll:
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/cancel