BetaYou're exploring an early version of tPay365. Features and content may change as we refine the experience.

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/payroll

Endpoints

POST
/api/v1/payroll/bacs/upload

Upload 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/validate

Validate payroll data without processing

GET
/api/v1/payroll/batchesSoon

List all payroll batches with status

Parameters

ParameterTypeRequiredDescription
filefileRequiredBACS Standard 18 file (max 10 MB)
employer_idstringRequiredEmployer organisation ID
pay_datestringOptionalISO 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"
}