Home
Home
  1. Webhooks
  • Salary Deduction
    • Welcome
    • Getting started
      • Availability and Onboarding
        • Light Availability Check
        • Full Availability Check
        • Onboarding
      • Salary Deduction
        • Deduction Instruction
        • Re-running Payroll
        • Deduction Payments and Reconciliation
        • Changes to Employee Status
    • API Reference
      • Authentication
      • Idempotency
      • Webhooks
        • Webhooks
          POST
      • Salary Deduction
        • Salary Deduction Data Request
        • Salary Deduction Confirmation Submission
    • Schemas
      • Availability Check
        • Light Availability Check Response
        • Light Availability Check Request
        • Full Availability Check Response
        • Full Availability Check Request
      • Core
        • ProblemDetails
      • Deduction Instructions
        • Salary Deduction
        • Confirmation Deduction Response
        • Salary Deduction Enablement Response
        • Employee Deduction Push Response
        • Employee Deduction Push Request
        • Latest Employee Deduction Push Response
      • Payment Account
        • Payment Account
        • Payment Information
      • Payroll
        • Salary Deduction Confirmation Data Submission
        • Salary Deduction Data Response
        • Payroll
        • Employee Payroll
        • Employment
        • Pay Date
        • Salary Deduction Enablement Request
      • Webhooks
        • Employee Update Payload
        • WebHook
  • Payroll Provider API Prototypes
    • Light Availability Check
      POST
    • Full Availability Check
      POST
    • Salary Deduction Enablement
      POST
    • Payroll Information
      GET
    • Salary Deduction Employee Data Push
      POST
    • Latest Salary Deduction Employee Data Push
      GET
  1. Webhooks

Webhooks

POST
/notifications
OperationId:post_webhook
Send Ontime a webhook when something happens on your platform that Ontime needs to know about. Every webhook uses the same envelope: event_type says what happened and payload carries the details.
event_typeWhen to send itpayload fields
employee_leftAn Employee enabled for Salary Deduction has left their Employer. Send it once the leave date has taken effect.payroll_id, employee_id, leave_date
employee_payroll_movedAn Employee enabled for Salary Deduction has moved to another Payroll. Send it once the move has taken effect.payroll_id, employee_id, new_payroll_id, effective_from
A 202 means Ontime has received the webhook.
If a request times out or gets a 5xx, retry it with the same event_id. Ontime ignores an event_id it has already received, so a retry never creates a second event.
Every error body is a problem_details object.

Request

Authorization
API Key
Add parameter in header
x-api-key
Example:
x-api-key: ********************
OAuth 2.0
Client Credentials
Add the parameter
Authorization
to Headers
,whose value is to concatenate the Token after the Bearer.
Example:
Authorization: Bearer ********************
Token URL: https://${userPoolDomain}.auth.${region}.amazoncognito.com/oauth2/token
Scopes:
notifications:write-Can send webhooks to Ontime
or
Body Params application/jsonRequired

Example
{
    "event_id": "5e1c9a7b-2f4d-4b8e-9a61-3c2d1e0f9b8a",
    "event_type": "employee_left",
    "event_timestamp": "2026-10-20T10:15:30Z",
    "payload": {
        "payroll_id": "PAYROLL-001",
        "employee_id": "EMP-001",
        "leave_date": "2026-10-31"
    }
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/notifications' \
--header 'x-api-key: <api-key>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "event_id": "5e1c9a7b-2f4d-4b8e-9a61-3c2d1e0f9b8a",
    "event_type": "employee_left",
    "event_timestamp": "2026-10-20T10:15:30Z",
    "payload": {
        "payroll_id": "PAYROLL-001",
        "employee_id": "EMP-001",
        "leave_date": "2026-10-31"
    }
}'

Responses

🟢202Accepted
Ontime has received the webhook.
This response does not have a body.
🟠400Bad Request
🟠401Unauthorised
🟠403Forbidden
🔴500Internal Server Error
Previous
Idempotency
Next
Salary Deduction Data Request