curl --request POST \
--url https://production-api.puppetvendors.com/payouts/adjustments \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"vendorId": "507f1f77bcf86cd799439011",
"amount": 25.5,
"comments": "<string>",
"date": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://production-api.puppetvendors.com/payouts/adjustments"
payload = {
"vendorId": "507f1f77bcf86cd799439011",
"amount": 25.5,
"comments": "<string>",
"date": "2023-11-07T05:31:56Z"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
vendorId: '507f1f77bcf86cd799439011',
amount: 25.5,
comments: '<string>',
date: '2023-11-07T05:31:56Z'
})
};
fetch('https://production-api.puppetvendors.com/payouts/adjustments', 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://production-api.puppetvendors.com/payouts/adjustments",
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([
'vendorId' => '507f1f77bcf86cd799439011',
'amount' => 25.5,
'comments' => '<string>',
'date' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://production-api.puppetvendors.com/payouts/adjustments"
payload := strings.NewReader("{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<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.post("https://production-api.puppetvendors.com/payouts/adjustments")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.puppetvendors.com/payouts/adjustments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"_id": "6aa7bfa25133067f0da9c0f1",
"shopId": "<string>",
"vendorId": "<string>",
"vendorName": "<string>",
"amount": -25,
"type": "ADDITION",
"status": "UNPAID",
"batchId": "NA",
"customId": "G6TTITU3S1",
"comments": "<string>",
"customItemDate": "2023-11-07T05:31:56Z",
"ignoreInPayout": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}Create a payout adjustment
Create a manual payout adjustment (addition or deduction) for a vendor.
Merchant scope only, requires the admin:payouts permission.
amount is always positive; the stored sign is derived from type.
status and batchId are owned by the payout engine and cannot be
set by the caller.
This endpoint is not idempotent: every accepted request creates a new adjustment, so a retried or duplicated POST creates a second one. Callers are responsible for not re-posting a request that may already have been applied.
curl --request POST \
--url https://production-api.puppetvendors.com/payouts/adjustments \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"vendorId": "507f1f77bcf86cd799439011",
"amount": 25.5,
"comments": "<string>",
"date": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://production-api.puppetvendors.com/payouts/adjustments"
payload = {
"vendorId": "507f1f77bcf86cd799439011",
"amount": 25.5,
"comments": "<string>",
"date": "2023-11-07T05:31:56Z"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
vendorId: '507f1f77bcf86cd799439011',
amount: 25.5,
comments: '<string>',
date: '2023-11-07T05:31:56Z'
})
};
fetch('https://production-api.puppetvendors.com/payouts/adjustments', 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://production-api.puppetvendors.com/payouts/adjustments",
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([
'vendorId' => '507f1f77bcf86cd799439011',
'amount' => 25.5,
'comments' => '<string>',
'date' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://production-api.puppetvendors.com/payouts/adjustments"
payload := strings.NewReader("{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<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.post("https://production-api.puppetvendors.com/payouts/adjustments")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.puppetvendors.com/payouts/adjustments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"vendorId\": \"507f1f77bcf86cd799439011\",\n \"amount\": 25.5,\n \"comments\": \"<string>\",\n \"date\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"_id": "6aa7bfa25133067f0da9c0f1",
"shopId": "<string>",
"vendorId": "<string>",
"vendorName": "<string>",
"amount": -25,
"type": "ADDITION",
"status": "UNPAID",
"batchId": "NA",
"customId": "G6TTITU3S1",
"comments": "<string>",
"customItemDate": "2023-11-07T05:31:56Z",
"ignoreInPayout": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}{
"success": false,
"error": {
"message": "Resource not found",
"code": "NOT_FOUND",
"errorId": "err_1783365360839_j281w7b",
"details": {}
}
}Authorizations
JWT minted from a merchant API key (mk_live_…) by POST /authenticate. Send the token value directly, with no "Bearer" prefix. Tokens last 14 days and can be renewed at POST /refresh-token; revoking the key refuses the next request made with any token minted from it.
Body
"507f1f77bcf86cd799439011"
Always positive; the sign comes from type.
25.5
ADDITION, DEDUCTION The date this adjustment applies to, which decides the payout period it lands in. Defaults to now when omitted. Returned as customItemDate, the stored field name.
Was this page helpful?