Schedule offboarding
curl --request POST \
--url https://api.cadanapay.com/v1/persons/{personId}/offboard \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"exitDate": "2025-06-30",
"reason": "Voluntary resignation",
"compensation": {
"type": "net",
"frequency": "monthly",
"employmentModel": "eor"
},
"includeInRegularPayroll": true
}
'import requests
url = "https://api.cadanapay.com/v1/persons/{personId}/offboard"
payload = {
"exitDate": "2025-06-30",
"reason": "Voluntary resignation",
"compensation": {
"type": "net",
"frequency": "monthly",
"employmentModel": "eor"
},
"includeInRegularPayroll": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
exitDate: '2025-06-30',
reason: 'Voluntary resignation',
compensation: {type: 'net', frequency: 'monthly', employmentModel: 'eor'},
includeInRegularPayroll: true
})
};
fetch('https://api.cadanapay.com/v1/persons/{personId}/offboard', 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.cadanapay.com/v1/persons/{personId}/offboard",
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([
'exitDate' => '2025-06-30',
'reason' => 'Voluntary resignation',
'compensation' => [
'type' => 'net',
'frequency' => 'monthly',
'employmentModel' => 'eor'
],
'includeInRegularPayroll' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.cadanapay.com/v1/persons/{personId}/offboard"
payload := strings.NewReader("{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cadanapay.com/v1/persons/{personId}/offboard")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cadanapay.com/v1/persons/{personId}/offboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}"
response = http.request(request)
puts response.read_body{
"code": "invalid_request_body",
"message": "The request body provided is not valid",
"params": {
"field": "Value is invalid."
}
}{
"code": "resource_not_found",
"message": "Requested resource could not be found."
}{
"code": "internal_error",
"message": "An unexpected error occurred. Please try again later."
}Persons
Schedule offboarding
Schedule a person for offboarding on a given exit date
POST
/
v1
/
persons
/
{personId}
/
offboard
Schedule offboarding
curl --request POST \
--url https://api.cadanapay.com/v1/persons/{personId}/offboard \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"exitDate": "2025-06-30",
"reason": "Voluntary resignation",
"compensation": {
"type": "net",
"frequency": "monthly",
"employmentModel": "eor"
},
"includeInRegularPayroll": true
}
'import requests
url = "https://api.cadanapay.com/v1/persons/{personId}/offboard"
payload = {
"exitDate": "2025-06-30",
"reason": "Voluntary resignation",
"compensation": {
"type": "net",
"frequency": "monthly",
"employmentModel": "eor"
},
"includeInRegularPayroll": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
exitDate: '2025-06-30',
reason: 'Voluntary resignation',
compensation: {type: 'net', frequency: 'monthly', employmentModel: 'eor'},
includeInRegularPayroll: true
})
};
fetch('https://api.cadanapay.com/v1/persons/{personId}/offboard', 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.cadanapay.com/v1/persons/{personId}/offboard",
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([
'exitDate' => '2025-06-30',
'reason' => 'Voluntary resignation',
'compensation' => [
'type' => 'net',
'frequency' => 'monthly',
'employmentModel' => 'eor'
],
'includeInRegularPayroll' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.cadanapay.com/v1/persons/{personId}/offboard"
payload := strings.NewReader("{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cadanapay.com/v1/persons/{personId}/offboard")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cadanapay.com/v1/persons/{personId}/offboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exitDate\": \"2025-06-30\",\n \"reason\": \"Voluntary resignation\",\n \"compensation\": {\n \"type\": \"net\",\n \"frequency\": \"monthly\",\n \"employmentModel\": \"eor\"\n },\n \"includeInRegularPayroll\": true\n}"
response = http.request(request)
puts response.read_body{
"code": "invalid_request_body",
"message": "The request body provided is not valid",
"params": {
"field": "Value is invalid."
}
}{
"code": "resource_not_found",
"message": "Requested resource could not be found."
}{
"code": "internal_error",
"message": "An unexpected error occurred. Please try again later."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Required when using a Platform API token. The tenant key identifying which business to operate on.
Path Parameters
The unique identifier for the person
Body
application/json
The date the person will exit the organization
Example:
"2025-06-30"
The reason for offboarding
Example:
"Voluntary resignation"
Person's compensation information, how much will they get paid, currency and frequency
Show child attributes
Show child attributes
Whether to include the person in the regular payroll run for their exit period
Example:
true
Response
Offboarding scheduled successfully
⌘I