Skip to main content
POST
/
api
/
v1
/
payrollContract
/
{contractId}
/
variable-payments
cURL
curl --request POST \
  --url https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments \
  --header 'Content-Type: application/json' \
  --data '
{
  "correctionPeriod": "<string>",
  "compensationComponentId": "<string>",
  "amount": 123,
  "hours": 123,
  "days": 123,
  "hourlyFactor": 123,
  "percentage": 123
}
'
import requests

url = "https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments"

payload = {
"correctionPeriod": "<string>",
"compensationComponentId": "<string>",
"amount": 123,
"hours": 123,
"days": 123,
"hourlyFactor": 123,
"percentage": 123
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
correctionPeriod: '<string>',
compensationComponentId: '<string>',
amount: 123,
hours: 123,
days: 123,
hourlyFactor: 123,
percentage: 123
})
};

fetch('https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'correctionPeriod' => '<string>',
'compensationComponentId' => '<string>',
'amount' => 123,
'hours' => 123,
'days' => 123,
'hourlyFactor' => 123,
'percentage' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments"

payload := strings.NewReader("{\n \"correctionPeriod\": \"<string>\",\n \"compensationComponentId\": \"<string>\",\n \"amount\": 123,\n \"hours\": 123,\n \"days\": 123,\n \"hourlyFactor\": 123,\n \"percentage\": 123\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments")
.header("Content-Type", "application/json")
.body("{\n \"correctionPeriod\": \"<string>\",\n \"compensationComponentId\": \"<string>\",\n \"amount\": 123,\n \"hours\": 123,\n \"days\": 123,\n \"hourlyFactor\": 123,\n \"percentage\": 123\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.example.com/api/v1/payrollContract/{contractId}/variable-payments")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"correctionPeriod\": \"<string>\",\n \"compensationComponentId\": \"<string>\",\n \"amount\": 123,\n \"hours\": 123,\n \"days\": 123,\n \"hourlyFactor\": 123,\n \"percentage\": 123\n}"

response = http.request(request)
puts response.read_body
{
  "payrollContractId": "<string>",
  "billingPeriod": "<string>",
  "correctionPeriod": "<string>",
  "compensationComponentId": "<string>",
  "amount": 123,
  "hours": 123,
  "days": 123,
  "hourlyFactor": 123,
  "percentage": 123
}
Variable payments are not directly written to the employees payslip. Instead, they are submitted to the payroll administrator for approval.This is also why you can’t instantly see the variable payments in the GET endpoint. Once the variable payments have been approved, they will be included in the response.

Path Parameters

contractId
string
required

Query Parameters

billingPeriod
string<year-month>
required

Targeted billing period for this variable payment.

Pattern: ^\d{4}-\d{2}$
Example:

"2026-05"

Body

application/json

New variable payments are automatically allocated to the employee's master cost center.

correctionPeriod
string<year-month>

Month this payment affects. Defaults to the billingPeriod

Pattern: ^\d{4}-\d{2}$
Example:

"2026-04"

compensationComponentId
string

Compensation component that this payment is

amount
number<double>

Fixed amount to be taken into account

hours
number<double>
days
number<double>
hourlyFactor
number<double>
percentage
number<double>

Response

200 - application/json

OK

payrollContractId
string

Identifier of the payroll contract this payment belongs to

billingPeriod
string<year-month>

Billing period of this variable payment

Pattern: ^\d{4}-\d{2}$
Example:

"2026-05"

correctionPeriod
string<year-month>

Month this payment affects. Defaults to the billingPeriod

Pattern: ^\d{4}-\d{2}$
Example:

"2026-04"

compensationComponentId
string

Compensation component that this payment is

amount
number<double>

Fixed amount to be taken into account

hours
number<double>
days
number<double>
hourlyFactor
number<double>
percentage
number<double>