Skip to content

API Technical Guide

    The APS Developer API gives your systems authenticated, on-demand access to your live payroll and HR data in APS OnLine. This guide covers every module in API version 1.1, the inputs each one needs, and what you can build with it. The full interactive reference is published on the API Reference page.

    Baseline
    SpecificationOpenAPI 3.0.4, API version 1.1
    Base URLhttps://api.apspayrollonline.com
    Surface21 endpoints across 9 modules
    Read and write20 GET operations, 1 POST (employee data upload)
    AuthenticationBearer or OAuth2
    PaginationPage (default 1), PageSize (default 100, max 1000)
    Authentication and conventions
    • All operations are served under /v1.1/. OAuth2 bearer tokens are issued from POST /v2/OAuth/Token.
    • The About heartbeat is published without a declared security scheme; send your token with it for consistency.
    • Tokens are organization scoped and reach a fixed list of company codes. A single request never spans more than one company.
    • Dates should use the ISO-8601 standard formats, monetary values are number/double, and identifiers are int32. Enum casing is exact.
    • Response codes are 200, 400, 401, 403, 404, and 502. List endpoints return the PagedList envelope: data, currentPage, nextPage, pageSize, recordCount, and links.
    Module map
    ModuleEndpointsRequired inputsReturns and typical use
    AboutGET /AboutNoneService heartbeat. Wire into your integration health check.
    CompanyGET /Company
    GET /Company/{companyCode}
    + /batches, /customFields, /departments, /employees, /payGroups, /payGroups/{payGroupId}
    companyCode. Optional: sort (Asc, Desc) on batches, historicalPeriods and futurePeriods on payGroups (default 2, max 52)Company profile, departments, custom fields, payroll batch history, paged employee roster, and pay group schedules covering completed and projected periods. The entry point for any sync: discover companies, then walk employees and departments.
    DepartmentGET /Department/{departmentId}departmentIdSingle department record. Resolves the department IDs returned on employee, shift, and general ledger payloads.
    EmployeeGET /Employee/{employeeId}
    + /PayRates, /ScheduledEarnings
    employeeIdFull profile: identity, employment status, hire, rehire and termination dates, title, base department and location, wage type, salary, address, pay group, custom fields, department rates, scheduled earnings, bank account records, current gross earnings, and pay history links. Drives HRIS sync, provisioning, and headcount reporting.
    AttendanceGET /Attendance/{companyCode}
    + /Shifts
    + /Shifts/{shiftId}/Breaks
    + /AdditionalEarnings
    companyCode, plus start and end dates on Shifts and AdditionalEarningsShifts with regular, overtime, and doubletime hours, break detail, and additional earnings across a date range. Feeds labor cost analysis, scheduling tools, and overtime monitoring.
    PayGET /Pay/company/{companyCode}
    GET /Pay/employee/{employeeId}
    companyCode or employeeId, plus datePaystub data: incomes, deductions, taxes, accruals, direct deposits, net pay, and year-to-date net pay. Powers pay statement mirroring and compensation reporting.
    General LedgerGET /GeneralLedger/company/{companyCode}companyCode. Optional: batchId or checkDate, combineBy (None, Department, Memo), postDateOption (CheckDate, PayPeriodEnd), five boolean flagsA payroll journal entry shaped for your accounting system, grouped and posted the way your finance team wants it. The strongest single automation case in the API. Bearer only.
    Time Off RequestsGET /TimeOffRequests/{companyCode}companyCode, Start, End. Optional: employeeIdPaged time off requests by date range and status. Supports absence dashboards and coverage planning.
    EIPPOST /Eip/{companyCode}/UploadcompanyCode. Optional: fileFormat (DailyPay)The one write path in the API. Accepts employee demographic import files. Distinct from the separate APS Enterprise Integration Platform offering, which transmits XML files over SFTP with its own security token — see Enterprise Integration Platform.
    What to design around

    Access is all-or-nothing. A provisioned token exposes every data element the API supports, for every company code on that token’s instance. There is no per-endpoint or per-field gating. Employee records include bankAccounts with accountNumber and routingNumber, and paystubs include direct deposit detail, so build your own handling and storage controls with that in mind.

    • Read only in practice. Every operation is a GET except the employee data upload. Create and update operations across employee, department, company, and time off are on the roadmap and are not available today.
    • One company per request. Multi-company organizations iterate company by company, and large rosters require paging.
    • Plan your volume. Validate high-frequency or bulk pulling during your proof of concept against the demo company before you move to production.
    • Build against the API Reference. The interactive reference on the API Reference page is the authoritative source for paths, parameters, and schemas.