Batch Upload
Upload a CSV or JSON file containing payroll shift data for bulk compliance review.
POST /api/v1/batches/upload
Each row is checked against award minimum rates, overtime rules, and penalty rate requirements.
Request
Send the file as multipart/form-data:
curl -X POST /api/v1/batches/upload \
-H "Authorization: Bearer ak_KEY:sk_SECRET" \
-F "file=@payroll_data.csv"
Supported formats
- CSV (
.csv) - JSON (
.json)
Maximum file size
10 MB (up to 50,000 rows)
Required CSV columns
| Column | Description |
|---|---|
award_code | Modern Award code (e.g. MA000009) |
classification | Classification level (e.g. HI1, RE1, L1Y1) |
emp_type | Employment type: ft, pt, or cas |
date | Work date (YYYY-MM-DD or DD/MM/YYYY) |
start_time | Shift start (HH:MM, 24h) |
end_time | Shift end (HH:MM, 24h) |
Optional CSV columns
| Column | Description |
|---|---|
break_minutes | Unpaid break duration (default: 0) |
employee_ref | Employee identifier for tracking in results |
is_public_holiday | true / false (default: false) |
actual_pay | Actual pay amount for underpayment comparison |
Example CSV
award_code,classification,emp_type,date,start_time,end_time,break_minutes,employee_ref,actual_pay
MA000009,HI1,ft,2026-03-16,09:00,17:00,30,EMP-001,195.00
MA000004,RE1,cas,2026-03-21,06:00,14:30,30,EMP-002,210.00
MA000002,L1Y1,pt,2026-03-16,08:00,13:00,0,EMP-003,120.00
Response
{
"batch_id": "b7a1c2d3-e4f5-6789-abcd-ef0123456789",
"status": "queued",
"total_rows": 3,
"message": "Batch uploaded and queued for processing"
}
Batch processing
Processing happens asynchronously. Use the Batch Results endpoints to check progress and retrieve results.
Errors
| Status | Cause |
|---|---|
400 | Invalid file format, missing required columns, or file too large |
401 | Invalid credentials |
429 | Rate limit exceeded |