Special Pay Request Upsert Many V1 Ep
POST/v1/payroll/special_pay_request/upsert_many
Bulk Upsert Special Pay Requests
Add special pay line items to driver payroll reports in bulk. Special pay configurations must already exist in Gravitate.
Accepts multiple special pay requests in a single call. Validates each request individually and returns successful count + failed requests with error messages. Triggers automatic payroll recalculation for impacted drivers.
Request
id: str | None = None
Update existing special pay request, or create new if not provided.
driver_id: str (required) Driver identifier.
date: datetime (required) Date when the special pay was earned.
pay_type_id: str (required) Special pay configuration ID.
quantity: float (required) Quantity or amount for the special pay item.
start_date: datetime | None = None
Payroll period start date for recalculation.
driver_schedule_id: str | None = None
Associate with specific shift, or leave null for shiftless special pay.
order_number: int | None = None
Associate with specific order.
site_ids: list[str] | None = None
Associated site/location IDs.
accessorial_total: float | None = None
Used for percent of accessorial calculations.
market: str | None = None
Market identifier.
note: str | None = None
Optional note or description.
Response
success: int Number of special pay requests successfully processed.
errors: list Failed requests with original data + error message.
Responses
- 200
- 422
Successful Response
- application/json
- Example (from schema)
{
"success": 0,
"errors": [
{
"id": "string",
"start_date": "2025-12-17T21:49:50.718Z",
"driver_id": "string",
"date": "2025-12-17T21:49:50.718Z",
"pay_type_id": "string",
"quantity": 0,
"driver_schedule_id": "string",
"market": "string",
"note": "string",
"order_number": 0,
"site_ids": [
"string"
],
"accessorial_total": 0,
"error": "string"
}
]
}
Validation Error
- application/json
- Example (from schema)
{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}
]
}