Home
Home
  1. Salary Deduction
  • 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
      • Salary Deduction
        • Salary Deduction Data Request
          GET
        • Salary Deduction Confirmation Submission
          POST
    • 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. Salary Deduction

Salary Deduction Confirmation Submission

POST
/confirmations/{payroll_id}/upload/{batch_id}
Call this endpoint to tell Ontime what you deducted for a batch. Send the confirmation as JSON (Content-Type: application/json) or as CSV (Content-Type: text/csv). Any other content type is rejected. Parameters such as ; charset=utf-8 are ignored.
A 200 means Ontime has received the confirmation. Ontime checks it afterwards, and rejects it if:
batch_id or payroll_id does not match the path;
total_amount is not the sum of confirmed_deduction_amount, or employee_count is not the number of entries;
an entry has no confirmed_deduction_amount, or an unknown deduction_amount_reason;
an employee in the batch is missing or appears more than once;
an employee's confirmed amount, or the total, is more than was requested.
You can send a confirmation again for the same batch, for example after a rejection; it replaces the one before it. Once a confirmation has been fully processed, another one for the same batch is refused.
In CSV, the pay date is DD/MM/YYYY and the deductions section must be the last:
batch_id,payroll_id,total_amount,employee_count,pay_date,currency
261020101530123456,PAYROLL-001,2000,2,31/10/2026,GBP

employee_id,requested_deduction_amount,confirmed_deduction_amount,deduction_amount_reason
EMP-001,4509,2000,insufficient_funds
EMP-002,0,0,
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:
deduction_data_confirmation:submit-Can submit Confirmation Deduction data
or
Path Params

Header Params

Body Params application/jsonRequired

Example
{
    "deduction_data_confirmation": {
        "batch_id": "261020101530123456",
        "payroll_id": "PAYROLL-001",
        "total_amount": 2000,
        "employee_count": 2,
        "pay_date": "2026-10-31",
        "currency": "GBP",
        "deduction_data": [
            {
                "salary_deduction": {
                    "employee_id": "EMP-001",
                    "requested_deduction_amount": 4509,
                    "confirmed_deduction_amount": 2000,
                    "deduction_amount_reason": "insufficient_funds"
                }
            },
            {
                "salary_deduction": {
                    "employee_id": "EMP-002",
                    "requested_deduction_amount": 0,
                    "confirmed_deduction_amount": 0
                }
            }
        ]
    }
}

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 '/confirmations/PAYROLL-001/upload/261020101530123456' \
--header 'Idempotency-Key: 8f14e45f-ceea-467a-9575-9d1e6f0b3c2a' \
--header 'x-api-key: <api-key>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "deduction_data_confirmation": {
        "batch_id": "261020101530123456",
        "payroll_id": "PAYROLL-001",
        "total_amount": 2000,
        "employee_count": 2,
        "pay_date": "2026-10-31",
        "currency": "GBP",
        "deduction_data": [
            {
                "salary_deduction": {
                    "employee_id": "EMP-001",
                    "requested_deduction_amount": 4509,
                    "confirmed_deduction_amount": 2000,
                    "deduction_amount_reason": "insufficient_funds"
                }
            },
            {
                "salary_deduction": {
                    "employee_id": "EMP-002",
                    "requested_deduction_amount": 0,
                    "confirmed_deduction_amount": 0
                }
            }
        ]
    }
}'

Responses

🟢200Success
application/json
Ontime has received the confirmation and will check it.
Bodyapplication/json

Example
{
    "message": "string"
}
🟠400Bad Request
🟠401Unauthorised
🟠403Forbidden
🟠409Conflict
🔴500Internal Server Error
Previous
Salary Deduction Data Request
Next
Light Availability Check Response