Payroll Ingestion
Upload BACS Standard 18 files, parse fixed-width records, validate checksums, and track batch processing status. Supports Workday, ADP, Xero, and CSV formats.
/api/v1/payrollEndpoints
POST
/api/v1/payroll/bacs/uploadUpload a BACS Standard 18 file for parsing
GET
/api/v1/payroll/bacs/{batch_id}Get parsing results for a BACS batch
POST
/api/v1/payroll/validateValidate payroll data without processing
GET
/api/v1/payroll/batchesSoonList all payroll batches with status
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | file | Required | BACS Standard 18 file (max 10 MB) |
| employer_id | string | Required | Employer organisation ID |
| pay_date | string | Optional | ISO 8601 date for the pay period |
Example
Request
http
POST /api/v1/payroll/bacs/upload HTTP/1.1
Host: api.tpay365.com
Authorization: Bearer sk_live_abc123
Content-Type: multipart/form-data
[BACS Standard 18 file - 100-char fixed-width records]Response
json
{
"batch_id": "batch_feb2026_001",
"status": "parsed",
"total_records": 247,
"valid_records": 245,
"parse_errors": [
{ "line": 12, "error": "invalid_amount_format" },
{ "line": 89, "error": "record_length_mismatch" }
],
"total_amount_pence": 125750000,
"created_at": "2026-02-10T10:00:00Z"
}