VolunteerHourSettlement
List volunteer hour settlements
GET/api/time/volunteer_hour_settlement
Query parameters
idinteger | |
personstring | Set when the hours are owed per member. |
companystring | Billing account the compensation is charged to. When the hours are owed per account (household), the settlement belongs to the account only and person stays empty. |
statusstring | |
periodStartstring | |
periodEndstring | |
generationDatestring | |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of VolunteerHourSettlement objectsarray<VolunteerHourSettlement>
Show fields (19)
subject_namestringDisplay name of the settled member or billing account.
idintegerPrimary key of the volunteer hour settlement. Internal ID.
personCRMPerson27Set when the hours are owed per member.
Show fields (11)
idintegerPrimary key of the person. Internal ID.
first_namestringFirst name of the person.
last_namestringLast name of the person.
numberintegerMember or customer number of the person.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringMember or customer number as text, including prefix.
genderstringGender of the person.
titlestringAcademic or other title of the person.
nicknamestringNickname of the person.
preferred_color_hexstringPreferred color of the person as hex value.
avatar_tokenstringToken of the avatar image.
companyCRMCompany24Billing account the compensation is charged to. When the hours are owed per account (household), the settlement belongs to the account only and person stays empty.
Show fields (6)
idintegerPrimary key of the company. Internal ID.
short_namestringShort name of the company.
company_namestringLegal name of the company.
numberstringCustomer or supplier number of the company.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringCompany number as text, including prefix.
obligation_scopestringScope of the volunteer obligation, for example year or month.
period_startstring (date-time)Start of the settled period.
period_endstring (date-time)End of the settled period.
required_minutesintegerMinutes the volunteer had to work.
credited_minutesintegerMinutes the volunteer worked and got credited.
carried_in_minutesintegerMinutes carried in from the previous period.
missing_minutesintegerMinutes missing to the obligation.
surplus_minutesintegerMinutes worked above the obligation.
carried_out_minutesintegerSurplus taken into the next period.
compensation_ratenumber (float)Compensation per missing hour in force when the settlement was generated (frozen).
compensation_amountnumber (float)Amount paid as compensation for the missing minutes.
compensation_cappedbooleanThe compensation was reduced to the configured maximum.
statusstringStatus of the settlement, for example open or settled.
notestringNote on the settlement.
generation_datestring (date-time)Time the settlement was generated.
curl --request GET \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/volunteer_hour_settlement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourSettlementController.getAll();
if (result.success) {
print(result.data);
}[
{
"subject_name": "Beispiel",
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"company": {
"id": 42,
"short_name": "Beispiel",
"company_name": "Beispiel",
"number": "string",
"manual_number": 1,
"number_string": "string"
},
"obligation_scope": "string",
"period_start": "2026-10-15T09:30:00+02:00",
"period_end": "2026-10-15T09:30:00+02:00",
"required_minutes": 1,
"credited_minutes": 1,
"carried_in_minutes": 1
}
]Preview the settlement of the period containing `date` (default today) without writing anything: who owes how many hours, what has been credited, the compensation per member.
GET/api/time/volunteer_hour_settlement/preview
person / company restrict it to one member or billing account.
Query parameters
datestring | A date inside the period |
personinteger | Id of a member |
companyinteger | Id of a billing account |
Responses
default
curl --request GET \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/preview"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/volunteer_hour_settlement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourSettlementController.getPreview();
if (result.success) {
print(result.data);
}Create the settlements of the period containing `date`. Already settled members and members without obligation are skipped. `createInvoices` (default: true in the INVOICE mode) invoices the compensation to the billing accounts right away.
POST/api/time/volunteer_hour_settlement/generate
Responses
default
curl --request POST \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/generate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/volunteer_hour_settlement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourSettlementController.postGenerate();
if (result.success) {
print(result.data);
}Get a single volunteer hour settlement
GET/api/time/volunteer_hour_settlement/{id}
Path parameters
idrequiredstring |
Responses
200Returns a single VolunteerHourSettlementVolunteerHourSettlement
Show fields (19)
subject_namestringDisplay name of the settled member or billing account.
idintegerPrimary key of the volunteer hour settlement. Internal ID.
personCRMPerson27Set when the hours are owed per member.
Show fields (11)
idintegerPrimary key of the person. Internal ID.
first_namestringFirst name of the person.
last_namestringLast name of the person.
numberintegerMember or customer number of the person.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringMember or customer number as text, including prefix.
genderstringGender of the person.
titlestringAcademic or other title of the person.
nicknamestringNickname of the person.
preferred_color_hexstringPreferred color of the person as hex value.
avatar_tokenstringToken of the avatar image.
companyCRMCompany24Billing account the compensation is charged to. When the hours are owed per account (household), the settlement belongs to the account only and person stays empty.
Show fields (6)
idintegerPrimary key of the company. Internal ID.
short_namestringShort name of the company.
company_namestringLegal name of the company.
numberstringCustomer or supplier number of the company.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringCompany number as text, including prefix.
obligation_scopestringScope of the volunteer obligation, for example year or month.
period_startstring (date-time)Start of the settled period.
period_endstring (date-time)End of the settled period.
required_minutesintegerMinutes the volunteer had to work.
credited_minutesintegerMinutes the volunteer worked and got credited.
carried_in_minutesintegerMinutes carried in from the previous period.
missing_minutesintegerMinutes missing to the obligation.
surplus_minutesintegerMinutes worked above the obligation.
carried_out_minutesintegerSurplus taken into the next period.
compensation_ratenumber (float)Compensation per missing hour in force when the settlement was generated (frozen).
compensation_amountnumber (float)Amount paid as compensation for the missing minutes.
compensation_cappedbooleanThe compensation was reduced to the configured maximum.
statusstringStatus of the settlement, for example open or settled.
notestringNote on the settlement.
generation_datestring (date-time)Time the settlement was generated.
curl --request GET \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/volunteer_hour_settlement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourSettlementController.get('42');
if (result.success) {
print(result.data);
}{
"subject_name": "Beispiel",
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"company": {
"id": 42,
"short_name": "Beispiel",
"company_name": "Beispiel",
"number": "string",
"manual_number": 1,
"number_string": "string"
},
"obligation_scope": "string",
"period_start": "2026-10-15T09:30:00+02:00",
"period_end": "2026-10-15T09:30:00+02:00",
"required_minutes": 1,
"credited_minutes": 1,
"carried_in_minutes": 1
}Delete a settlement that has no invoice. Its entries become editable again.
DELETE/api/time/volunteer_hour_settlement/{id}
Path parameters
idrequiredstring |
Responses
default
curl --request DELETE \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/volunteer_hour_settlement_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await VolunteerHourSettlementController.delete('42');
if (result.success) {
print(result.data);
}Invoice the compensation of a settlement to its billing account
POST/api/time/volunteer_hour_settlement/{id}/invoice
Path parameters
idrequiredstring |
Responses
200Invoice the compensation of a VolunteerHourSettlementVolunteerHourSettlement
Show fields (19)
subject_namestringDisplay name of the settled member or billing account.
idintegerPrimary key of the volunteer hour settlement. Internal ID.
personCRMPerson27Set when the hours are owed per member.
Show fields (11)
idintegerPrimary key of the person. Internal ID.
first_namestringFirst name of the person.
last_namestringLast name of the person.
numberintegerMember or customer number of the person.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringMember or customer number as text, including prefix.
genderstringGender of the person.
titlestringAcademic or other title of the person.
nicknamestringNickname of the person.
preferred_color_hexstringPreferred color of the person as hex value.
avatar_tokenstringToken of the avatar image.
companyCRMCompany24Billing account the compensation is charged to. When the hours are owed per account (household), the settlement belongs to the account only and person stays empty.
Show fields (6)
idintegerPrimary key of the company. Internal ID.
short_namestringShort name of the company.
company_namestringLegal name of the company.
numberstringCustomer or supplier number of the company.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringCompany number as text, including prefix.
obligation_scopestringScope of the volunteer obligation, for example year or month.
period_startstring (date-time)Start of the settled period.
period_endstring (date-time)End of the settled period.
required_minutesintegerMinutes the volunteer had to work.
credited_minutesintegerMinutes the volunteer worked and got credited.
carried_in_minutesintegerMinutes carried in from the previous period.
missing_minutesintegerMinutes missing to the obligation.
surplus_minutesintegerMinutes worked above the obligation.
carried_out_minutesintegerSurplus taken into the next period.
compensation_ratenumber (float)Compensation per missing hour in force when the settlement was generated (frozen).
compensation_amountnumber (float)Amount paid as compensation for the missing minutes.
compensation_cappedbooleanThe compensation was reduced to the configured maximum.
statusstringStatus of the settlement, for example open or settled.
notestringNote on the settlement.
generation_datestring (date-time)Time the settlement was generated.
curl --request POST \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/invoice'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"subject_name": "Beispiel",
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"company": {
"id": 42,
"short_name": "Beispiel",
"company_name": "Beispiel",
"number": "string",
"manual_number": 1,
"number_string": "string"
},
"obligation_scope": "string",
"period_start": "2026-10-15T09:30:00+02:00",
"period_end": "2026-10-15T09:30:00+02:00",
"required_minutes": 1,
"credited_minutes": 1,
"carried_in_minutes": 1
}Waive the compensation of a settlement (Erlass), with an optional `note`
POST/api/time/volunteer_hour_settlement/{id}/waive
Path parameters
idrequiredstring |
Responses
200Waive the compensation of a VolunteerHourSettlementVolunteerHourSettlement
Show fields (19)
subject_namestringDisplay name of the settled member or billing account.
idintegerPrimary key of the volunteer hour settlement. Internal ID.
personCRMPerson27Set when the hours are owed per member.
Show fields (11)
idintegerPrimary key of the person. Internal ID.
first_namestringFirst name of the person.
last_namestringLast name of the person.
numberintegerMember or customer number of the person.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringMember or customer number as text, including prefix.
genderstringGender of the person.
titlestringAcademic or other title of the person.
nicknamestringNickname of the person.
preferred_color_hexstringPreferred color of the person as hex value.
avatar_tokenstringToken of the avatar image.
companyCRMCompany24Billing account the compensation is charged to. When the hours are owed per account (household), the settlement belongs to the account only and person stays empty.
Show fields (6)
idintegerPrimary key of the company. Internal ID.
short_namestringShort name of the company.
company_namestringLegal name of the company.
numberstringCustomer or supplier number of the company.
manual_numberintegerNumber set manually instead of the automatic number.
number_stringstringCompany number as text, including prefix.
obligation_scopestringScope of the volunteer obligation, for example year or month.
period_startstring (date-time)Start of the settled period.
period_endstring (date-time)End of the settled period.
required_minutesintegerMinutes the volunteer had to work.
credited_minutesintegerMinutes the volunteer worked and got credited.
carried_in_minutesintegerMinutes carried in from the previous period.
missing_minutesintegerMinutes missing to the obligation.
surplus_minutesintegerMinutes worked above the obligation.
carried_out_minutesintegerSurplus taken into the next period.
compensation_ratenumber (float)Compensation per missing hour in force when the settlement was generated (frozen).
compensation_amountnumber (float)Amount paid as compensation for the missing minutes.
compensation_cappedbooleanThe compensation was reduced to the configured maximum.
statusstringStatus of the settlement, for example open or settled.
notestringNote on the settlement.
generation_datestring (date-time)Time the settlement was generated.
curl --request POST \
--url https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://your-instance.iw-erp.de/api/time/volunteer_hour_settlement/42/waive'),
headers: {'x-iw-jwt-token': '<TOKEN>'},
);
print(response.body);{
"subject_name": "Beispiel",
"id": 42,
"person": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"number": 1,
"manual_number": 1,
"number_string": "string",
"gender": "string",
"nickname": "string",
"preferred_color_hex": "string"
},
"company": {
"id": 42,
"short_name": "Beispiel",
"company_name": "Beispiel",
"number": "string",
"manual_number": 1,
"number_string": "string"
},
"obligation_scope": "string",
"period_start": "2026-10-15T09:30:00+02:00",
"period_end": "2026-10-15T09:30:00+02:00",
"required_minutes": 1,
"credited_minutes": 1,
"carried_in_minutes": 1
}