Update Payment Item
Update fields on an existing payment item by paymentItemID.
curl --request PATCH \
--url https://api.zeal.com/payment-items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"companyID": "<string>",
"paymentItemID": "<string>",
"contractorPaymentID": "<string>",
"work_info": {
"work_description": "<string>",
"service_date": "<string>"
},
"quantity": 123,
"rate": 123,
"bill_rate": 123,
"gross_amount": 123,
"bill_amount": "<string>",
"metadata": {}
}
'import requests
url = "https://api.zeal.com/payment-items"
payload = {
"companyID": "<string>",
"paymentItemID": "<string>",
"contractorPaymentID": "<string>",
"work_info": {
"work_description": "<string>",
"service_date": "<string>"
},
"quantity": 123,
"rate": 123,
"bill_rate": 123,
"gross_amount": 123,
"bill_amount": "<string>",
"metadata": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companyID: '<string>',
paymentItemID: '<string>',
contractorPaymentID: '<string>',
work_info: {work_description: '<string>', service_date: '<string>'},
quantity: 123,
rate: 123,
bill_rate: 123,
gross_amount: 123,
bill_amount: '<string>',
metadata: {}
})
};
fetch('https://api.zeal.com/payment-items', 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.zeal.com/payment-items",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'companyID' => '<string>',
'paymentItemID' => '<string>',
'contractorPaymentID' => '<string>',
'work_info' => [
'work_description' => '<string>',
'service_date' => '<string>'
],
'quantity' => 123,
'rate' => 123,
'bill_rate' => 123,
'gross_amount' => 123,
'bill_amount' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.zeal.com/payment-items"
payload := strings.NewReader("{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.patch("https://api.zeal.com/payment-items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeal.com/payment-items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"paymentItemID": "0083fb3bae9d4915adc133c6d6548f89",
"companyID": "fc235f012bae46aa8a082f357715bcfa",
"contractorID": "669fe6216d9eff8ca4c9f0de",
"contractorPaymentID": "68ffb95239326ca8713eadb1",
"work_info": {
"work_description": "Construction development work",
"service_date": "2025-10-15T00:00:00.000Z"
},
"payment_type": "hourly",
"quantity": 25,
"rate": 100,
"bill_rate": 175,
"metadata": {
"jobID": "19834673",
"description": "Piecework pay"
}
},
"testMode": false
}earning_type cannot be changed from rate-based to fixed amount or vice versa.Authorizations
Body
ID of company
ID of payment item
ID of contractor payment that this payment item will be added to
Show child attributes
Show child attributes
Note: earning_type cannot be changed from rate-based to fixed amount or vice versa.
hourly, per_unit, flat_fee, expense_reimbursement, bonus Only required if earning_type is hourly or per_unit
Only required if earning_type is hourly or per_unit
Only applicable if earning_type is hourly or per_unit
Only required if earning_type is flat_fee, expense_reimbursement, or bonus
Only applicable if earning_type is flat_fee, expense_reimbursement, or bonus
Custom object you can attach to the payment item. Useful for storing additional information in a custom, structured format. Zeal does not use this object. Do not store sensitive information. Posting metadata replaces the whole object.
curl --request PATCH \
--url https://api.zeal.com/payment-items \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"companyID": "<string>",
"paymentItemID": "<string>",
"contractorPaymentID": "<string>",
"work_info": {
"work_description": "<string>",
"service_date": "<string>"
},
"quantity": 123,
"rate": 123,
"bill_rate": 123,
"gross_amount": 123,
"bill_amount": "<string>",
"metadata": {}
}
'import requests
url = "https://api.zeal.com/payment-items"
payload = {
"companyID": "<string>",
"paymentItemID": "<string>",
"contractorPaymentID": "<string>",
"work_info": {
"work_description": "<string>",
"service_date": "<string>"
},
"quantity": 123,
"rate": 123,
"bill_rate": 123,
"gross_amount": 123,
"bill_amount": "<string>",
"metadata": {}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companyID: '<string>',
paymentItemID: '<string>',
contractorPaymentID: '<string>',
work_info: {work_description: '<string>', service_date: '<string>'},
quantity: 123,
rate: 123,
bill_rate: 123,
gross_amount: 123,
bill_amount: '<string>',
metadata: {}
})
};
fetch('https://api.zeal.com/payment-items', 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.zeal.com/payment-items",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'companyID' => '<string>',
'paymentItemID' => '<string>',
'contractorPaymentID' => '<string>',
'work_info' => [
'work_description' => '<string>',
'service_date' => '<string>'
],
'quantity' => 123,
'rate' => 123,
'bill_rate' => 123,
'gross_amount' => 123,
'bill_amount' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.zeal.com/payment-items"
payload := strings.NewReader("{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.patch("https://api.zeal.com/payment-items")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeal.com/payment-items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyID\": \"<string>\",\n \"paymentItemID\": \"<string>\",\n \"contractorPaymentID\": \"<string>\",\n \"work_info\": {\n \"work_description\": \"<string>\",\n \"service_date\": \"<string>\"\n },\n \"quantity\": 123,\n \"rate\": 123,\n \"bill_rate\": 123,\n \"gross_amount\": 123,\n \"bill_amount\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"paymentItemID": "0083fb3bae9d4915adc133c6d6548f89",
"companyID": "fc235f012bae46aa8a082f357715bcfa",
"contractorID": "669fe6216d9eff8ca4c9f0de",
"contractorPaymentID": "68ffb95239326ca8713eadb1",
"work_info": {
"work_description": "Construction development work",
"service_date": "2025-10-15T00:00:00.000Z"
},
"payment_type": "hourly",
"quantity": 25,
"rate": 100,
"bill_rate": 175,
"metadata": {
"jobID": "19834673",
"description": "Piecework pay"
}
},
"testMode": false
}