Skip to main content
Manage pay periods for the client companies in your bookkeeper organization. All endpoints require an admin JWT and enforce tenant isolation: you can only touch pay periods whose company belongs to your bookkeeperOrgId.

List pay periods

Query parameters

string
Filter to one company. The company must belong to your organization, or the request returns 403. If omitted, all pay periods within your organization are returned.
string
Filter by status: OPEN, SUBMITTED, APPROVED, PAID, or CLOSED.
integer
default:"1"
integer
default:"20"

Response

Paginated envelope (items, total, page, pageSize, totalPages), ordered by startDate descending. Each item includes its company (id, name) and a _count of timeEntries.

Create a pay period

Request body

string
required
UUID of the client company. Must belong to your organization (403 otherwise, 404 if the company does not exist).
string
required
One of WEEKLY, BI_WEEKLY, SEMI_MONTHLY, MONTHLY.
string
required
ISO-8601 datetime or a YYYY-MM-DD date.
string
ISO-8601 datetime or YYYY-MM-DD. If omitted, it is computed from periodType and startDate.
string
ISO-8601 datetime or YYYY-MM-DD. Optional.
New pay periods are created with status: "OPEN" and locked: false. The server rejects date ranges that overlap an existing pay period for the same company with 400 Overlapping pay period.

Get a pay period

string
required
The pay period’s UUID.
Returns the pay period with its company, all timeEntries (each with a trimmed employee), and a computed totals object summing totalHours, regularHours, and overtimeHours. Returns 404 if not found, 403 if the period belongs to another organization.
Response (200)

Update a pay period

string
required
The pay period’s UUID.
All body fields are optional; only provided fields are applied.
string
One of OPEN, SUBMITTED, APPROVED, PAID, CLOSED.
boolean
Lock or unlock the pay period.
string
ISO-8601 datetime or YYYY-MM-DD.
string
Marks the period as exported; the server also stamps exportedAt with the current time.
string
Filename of the generated QuickBooks IIF export.
Returns 200 with the updated pay period. Returns 404 if not found, 403 for cross-organization access.

Delete a pay period

string
required
The pay period’s UUID.
Permanently deletes the pay period. Returns 400 Cannot delete pay period if it has any associated time entries. Returns 404 if not found, 403 for cross-organization access.
Response (200)