Skip to main content

July 2026

· 5 min read
Product team

Payroll API route segments moved to kebab-case plural nouns, so client paths change.

Added

  • Penny, an assistant in the Paysense UI, shipped as a first version behind a AiAssistant feature flag that is off by default. Chat runs over a SignalR hub at /chat. The tool catalogue is generated from the payroll OpenAPI specification, so it tracks the API surface, and every tool dispatch is gated on the calling user's scopes. Conversations persist and resume, reads of personal information are audited and rate limited, tax file numbers are not decrypted for assistant reads, and actions that write require an explicit confirmation step. Model requests are served from an Australian Azure AI Foundry endpoint.
  • Opening suggestions for Penny. An empty thread shows scope-filtered suggestion chips drawn from the current page, unreviewed notifications and a cross-business notification scan, capped in number, with a template greeting when the model is unavailable. Follow-up suggestions are offered after a turn.
  • Leave type definitions: group leave types into reusable named templates and tag them onto an employee's pay run settings. CRUD under /api/businesses/{businessId}/leave-type-definitions, with leavetypedefinition:read, leavetypedefinition:write and leavetypedefinition:delete scopes. Business leave type create, update and search accept an optional LeaveTypeDefinitionId, and employee pay run settings read and write it.
  • Business-scoped and employee-scoped notification endpoints: /api/businesses/{businessId}/notifications/search and /api/businesses/{businessId}/employees/{employeeId}/notifications/search, with matching /reviewed and /ignore writes.
  • Employee work patterns.
  • Employee portal self service for bank account and super fund details, at /api/employees/{employeeId}/bank-accounts and /api/employees/{employeeId}/super-funds.
  • Leave request forecast at /api/businesses/{businessId}/employees/{employeeId}/leave-requests/forecast, returning calculated leave units for a leave type and date range.
  • GET /api/configuration/app-version, an anonymous endpoint returning the current and minimum supported mobile app versions. MyPaysense (Beta) blocks below the minimum and offers an update above it.
  • Reports overview page in the Paysense UI, grouping payroll, tax and compliance reports with tab filtering by category.
  • MyPaysense (Beta): Upcoming and Previous tabs on the leave screen, leave balances moved into a bottom sheet, and leave units populated from the forecast endpoint as the leave type and dates are picked.

Changed

  • Payroll API route segments are now kebab-case and plural. Renamed concepts include businesses, employees, pay-runs, pay-event-lodgements, leave-requests, leave-types, leave-type-definitions, pay-types, pay-type-definitions, payslips, public-holidays, super-funds, timesheets, timesheet-records, timesheet-category-mappings, employee-pay-definitions and employee-pay-types. The singleton resources chart-of-accounts and beam-participant are unchanged. Old paths are not aliased.
  • Notification search and update are scoped to the caller's business memberships. Calls that previously returned tenant-wide notifications return only accessible records, TotalCount counts distinct notifications rather than association rows, and fetching an inaccessible notification by id returns 404.
  • Tenant-level scopes are rejected when assigning business-level scopes, and user invites require an explicit non-empty scope list.
  • Pay run type Initial is rejected on pay run create and update. It is set by the system only.
  • Employee portal access can only be granted or reactivated for fully onboarded employees. Employees in Onboarding status are rejected, and portal access responses include EmployeeStatus.
  • Pay type definition endpoints sit behind a PayTypeDefinitions feature flag, off by default. The pay type definition, employee pay definition and apply pay type definition endpoints return 404 when the flag is off. Default pay types are unaffected.
  • Beam participant calls are recorded in the audit log.
  • Owner scopes are immutable, and re-inviting an existing user is rejected.

Fixed

  • The payroll journal did not balance. Post-tax deductions were credited without a matching debit, so credits exceeded debits by the total deduction amount. This also blocked Xero import.
  • Super contribution payments stayed in Sending or Submitted when Beam returned a refund, error, cancelled, dishonoured or missing payment response. Failing payments are matched by clearing house identifier and marked Failed with the returned message, and per-payment status is shown in the payments grid.
  • Super fund sync attempted to delete funds still attached to employees.
  • Member verification notifications rendered an empty severity chip because the payload carried Type where the client expected SeverityCode. Historical notifications have been migrated.
  • The MessageXchange client retried non-idempotent HTTP writes, which could duplicate submissions.
  • Payslips showed an hourly rate label for employees paid an annual rate.
  • Payslips omitted the CASH/CHEQUE payment method for cash payments.
  • Pay run settings, the new employee wizard, opening balances and timesheet category mappings returned 404 on pay type and leave type definition lookups when those feature flags were off.
  • The new employee wizard had no pay type definition selector, and pay type search for the selected definition errored.
  • Advanced search treated quoted strings as operator syntax.
  • The business switcher could drift from the business in the route, leaving the switcher, scopes, breadcrumbs and dashboard reading a stale selection.
  • Timesheet earnings mode was editable on employee pay run settings while the Timesheets feature was disabled, allowing a mode the employee could not use.
  • The chart of accounts add account modal failed to submit.
  • Tenant branding fell back to the Paysense default when the first branding request after a cold start timed out.
  • Deep linking or refreshing directly onto a list page's create or edit modal route redirected to the list without opening the modal.
  • MyPaysense (Beta): submitted timesheet entries appeared on the following day. Timesheet and leave timestamps are stored as wall clock time, but several responses and one mobile form path treated them as UTC.
  • MyPaysense (Beta): leave requests overlapping a Declined request were rejected. Processing, Imported and Finalised requests still block.
  • MyPaysense (Beta): the app crashed on a malformed employee context response. A recovery screen is shown instead.
  • MyPaysense (Beta): the dashboard Log hours action reached the timesheet screen while the Timesheets feature was disabled.