Generate Grouped Invoice by Vendor
curl --request POST \
--url https://staging-api.puppetvendors.com/orders/invoice/grouped \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"vendorIds": [
{}
],
"startDate": "<string>",
"endDate": "<string>"
}
'import requests
url = "https://staging-api.puppetvendors.com/orders/invoice/grouped"
payload = {
"vendorIds": [{}],
"startDate": "<string>",
"endDate": "<string>"
}
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({vendorIds: [{}], startDate: '<string>', endDate: '<string>'})
};
fetch('https://staging-api.puppetvendors.com/orders/invoice/grouped', 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://staging-api.puppetvendors.com/orders/invoice/grouped",
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([
'vendorIds' => [
[
]
],
'startDate' => '<string>',
'endDate' => '<string>'
]),
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://staging-api.puppetvendors.com/orders/invoice/grouped"
payload := strings.NewReader("{\n \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\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://staging-api.puppetvendors.com/orders/invoice/grouped")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging-api.puppetvendors.com/orders/invoice/grouped")
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 \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyDocuments
Generate Grouped Invoice by Vendor
Consolidated invoice PDF for all orders from specific vendors within a date range
POST
/
orders
/
invoice
/
grouped
Generate Grouped Invoice by Vendor
curl --request POST \
--url https://staging-api.puppetvendors.com/orders/invoice/grouped \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"vendorIds": [
{}
],
"startDate": "<string>",
"endDate": "<string>"
}
'import requests
url = "https://staging-api.puppetvendors.com/orders/invoice/grouped"
payload = {
"vendorIds": [{}],
"startDate": "<string>",
"endDate": "<string>"
}
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({vendorIds: [{}], startDate: '<string>', endDate: '<string>'})
};
fetch('https://staging-api.puppetvendors.com/orders/invoice/grouped', 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://staging-api.puppetvendors.com/orders/invoice/grouped",
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([
'vendorIds' => [
[
]
],
'startDate' => '<string>',
'endDate' => '<string>'
]),
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://staging-api.puppetvendors.com/orders/invoice/grouped"
payload := strings.NewReader("{\n \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\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://staging-api.puppetvendors.com/orders/invoice/grouped")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging-api.puppetvendors.com/orders/invoice/grouped")
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 \"vendorIds\": [\n {}\n ],\n \"startDate\": \"<string>\",\n \"endDate\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyV2 Preview — This endpoint is part of the V2 API preview. Breaking changes may occur.
Overview
Generate a consolidated invoice PDF covering all orders from specific vendors within a date range. Useful for monthly or weekly payout summaries. Vendor tokens are automatically scoped to themselves.Request Body
Array of vendor ObjectIds.
Include orders from this date (ISO 8601).
Include orders until this date (ISO 8601).
Response
200
{ "success": true, "data": { "pdfUrl": "https://cdn.puppetvendors.com/pdf/..." } }
Example
curl -X POST "https://staging-api.puppetvendors.com/orders/invoice/grouped" \
-H "x-access-token: YOUR_VENDOR_JWT" \
-H "Content-Type: application/json" \
-d '{
"vendorIds": ["507f1f77bcf86cd799439011"],
"startDate": "2026-03-01T00:00:00Z",
"endDate": "2026-03-31T23:59:59Z"
}'
Was this page helpful?
⌘I