curl --request GET \
--url https://api.example.com/api/v1/employees/{id}/wages \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"hourly_rate": 123,
"weekly_scheduled_hours": 123,
"effective_from": "<string>",
"effective_to": "<string>"
}
'{
"401": {},
"403": {},
"404": {},
"422": {},
"status": 123,
"data": {}
}Manage employee wage history and hourly rates
curl --request GET \
--url https://api.example.com/api/v1/employees/{id}/wages \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"hourly_rate": 123,
"weekly_scheduled_hours": 123,
"effective_from": "<string>",
"effective_to": "<string>"
}
'{
"401": {},
"403": {},
"404": {},
"422": {},
"status": 123,
"data": {}
}GET /api/v1/employees/{id}/wages
"01JKXYZ1234567890ABCDEFGH"effective_from descending (most recent first)Show Wage History Object
125.00 (MXN per hour)48.00 (full-time in Mexico)"2026-01-01"null indicates the current active wage.Format: YYYY-MM-DD or nullExample: "2026-12-31" or nullnull if activecurl -X GET "https://api.sushigo.local/api/v1/employees/01JKXYZ1234567890ABCDEFGH/wages" \
-H "Authorization: Bearer YOUR_TOKEN"
{
"status": 200,
"data": [
{
"id": "01JKXYZABC1234567890DEFGH",
"employee_id": 5,
"hourly_rate": "150.00",
"weekly_scheduled_hours": "48.00",
"effective_from": "2026-03-01",
"effective_to": null,
"created_at": "2026-02-15T10:00:00+00:00",
"updated_at": "2026-02-15T10:00:00+00:00",
"deleted_at": null
},
{
"id": "01JKXYZDEF9876543210ZYXWV",
"employee_id": 5,
"hourly_rate": "125.00",
"weekly_scheduled_hours": "48.00",
"effective_from": "2026-01-01",
"effective_to": "2026-02-28",
"created_at": "2025-12-20T14:30:00+00:00",
"updated_at": "2026-02-15T10:00:00+00:00",
"deleted_at": null
}
]
}
effective_to date.
POST /api/v1/employees/{id}/wages
employees.update"01JKXYZ1234567890ABCDEFGH"150.0048.00"2026-03-01"null for open-ended wages.Format: YYYY-MM-DD or omitValidation: Must be on or after effective_fromExample: "2026-12-31" or omiteffective_to is uncommon.effective_from and effective_to (if provided)effective_from, its effective_to is automatically set to one day before the new record’s effective_fromcurl -X POST "https://api.sushigo.local/api/v1/employees/01JKXYZ1234567890ABCDEFGH/wages" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hourly_rate": 150.00,
"weekly_scheduled_hours": 48.00,
"effective_from": "2026-03-01"
}'
curl -X POST "https://api.sushigo.local/api/v1/employees/01JKXYZ1234567890ABCDEFGH/wages" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hourly_rate": 175.00,
"weekly_scheduled_hours": 48.00,
"effective_from": "2027-01-01"
}'
curl -X POST "https://api.sushigo.local/api/v1/employees/01JKXYZ1234567890ABCDEFGH/wages" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hourly_rate": 120.00,
"weekly_scheduled_hours": 40.00,
"effective_from": "2025-06-01",
"effective_to": "2025-12-31"
}'
curl -X POST "https://api.sushigo.local/api/v1/employees/01JKXYZ1234567890ABCDEFGH/wages" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hourly_rate": 130.00,
"weekly_scheduled_hours": 24.00,
"effective_from": "2026-03-01"
}'
{
"status": 201,
"data": {
"id": "01JKXYZABC1234567890DEFGH",
"employee_id": 5,
"hourly_rate": "150.00",
"weekly_scheduled_hours": "48.00",
"effective_from": "2026-03-01",
"effective_to": null,
"created_at": "2026-02-15T10:00:00+00:00",
"updated_at": "2026-02-15T10:00:00+00:00",
"deleted_at": null
}
}
employees.update permissionhourly_rate must be greater than 0weekly_scheduled_hours must be greater than 0effective_to must be on or after effective_fromminute_rate = hourly_rate / 60
150.00 MXN/hr equals 2.50 MXN/min
This is used for:
FTE = weekly_scheduled_hours / 48
When to create a new wage record
Setting effective dates
effective_to as null for current wagesHandling wage corrections
effective_fromeffective_from and effective_to covering the correction periodPart-time vs. full-time
weekly_scheduled_hours to reflect the employee’s actual schedule:weekly_scheduled_hours to calculate FTE for benefits.