curl --request GET \
--url https://panel.sendcloud.sc/api/v3/invoice-items \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://panel.sendcloud.sc/api/v3/invoice-items"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://panel.sendcloud.sc/api/v3/invoice-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://panel.sendcloud.sc/api/v3/invoice-items",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://panel.sendcloud.sc/api/v3/invoice-items"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://panel.sendcloud.sc/api/v3/invoice-items")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://panel.sendcloud.sc/api/v3/invoice-items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 1042,
"type": "shipment",
"description": "Parcel 99887766 — NL → DE",
"created_at": "2026-05-14T08:21:00Z",
"updated_at": "2026-05-14T08:21:00Z",
"price": {
"value": "5.4200",
"currency": "EUR"
},
"tax": {
"value": "1.1382",
"currency": "EUR"
},
"tax_rate": "0.21",
"vat_code": "NL_STANDARD",
"reference": "99887766",
"parcel_id": 99887766,
"pickup_id": null,
"carrier_id": 17,
"from_country": "NL",
"invoice_id": 5501
},
{
"id": 1043,
"type": "parcel_fee",
"description": "Parcel 99887767 — NL → BE (pending invoice)",
"created_at": "2026-06-02T14:05:00Z",
"updated_at": null,
"price": {
"value": "4.1000",
"currency": "EUR"
},
"tax": null,
"tax_rate": null,
"vat_code": null,
"reference": "99887767",
"parcel_id": 99887767,
"pickup_id": null,
"carrier_id": 17,
"from_country": "NL",
"invoice_id": null
}
]
}{
"errors": [
{
"detail": "Unknown invoice item type `foo`.",
"status": "400",
"code": "invalid",
"source": {
"parameter": "type"
}
}
]
}{
"errors": [
{
"detail": "Authentication credentials were not provided.",
"status": "401",
"code": "not_authenticated"
}
]
}Retrieve a list of invoice items
Retrieve a paginated list of invoice items for your organization.
The response includes both invoiced items (where invoice_id is set) and pending items that have been billed but not yet consolidated onto an invoice (where invoice_id is null and tax / tax_rate are null). Use the date filters to scope the result set; the cursor in the Link response header to page through results.
This endpoint uses cursor-based pagination via Link headers. See Pagination for details.
Pending invoice items (where invoice_id is null) are not final. Amounts and types can still change, and Sendcloud may remove items, up until they are consolidated onto an invoice. Treat pending items as a preview, not a guarantee.
curl --request GET \
--url https://panel.sendcloud.sc/api/v3/invoice-items \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://panel.sendcloud.sc/api/v3/invoice-items"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://panel.sendcloud.sc/api/v3/invoice-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://panel.sendcloud.sc/api/v3/invoice-items",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://panel.sendcloud.sc/api/v3/invoice-items"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://panel.sendcloud.sc/api/v3/invoice-items")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://panel.sendcloud.sc/api/v3/invoice-items")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 1042,
"type": "shipment",
"description": "Parcel 99887766 — NL → DE",
"created_at": "2026-05-14T08:21:00Z",
"updated_at": "2026-05-14T08:21:00Z",
"price": {
"value": "5.4200",
"currency": "EUR"
},
"tax": {
"value": "1.1382",
"currency": "EUR"
},
"tax_rate": "0.21",
"vat_code": "NL_STANDARD",
"reference": "99887766",
"parcel_id": 99887766,
"pickup_id": null,
"carrier_id": 17,
"from_country": "NL",
"invoice_id": 5501
},
{
"id": 1043,
"type": "parcel_fee",
"description": "Parcel 99887767 — NL → BE (pending invoice)",
"created_at": "2026-06-02T14:05:00Z",
"updated_at": null,
"price": {
"value": "4.1000",
"currency": "EUR"
},
"tax": null,
"tax_rate": null,
"vat_code": null,
"reference": "99887767",
"parcel_id": 99887767,
"pickup_id": null,
"carrier_id": 17,
"from_country": "NL",
"invoice_id": null
}
]
}{
"errors": [
{
"detail": "Unknown invoice item type `foo`.",
"status": "400",
"code": "invalid",
"source": {
"parameter": "type"
}
}
]
}{
"errors": [
{
"detail": "Authentication credentials were not provided.",
"status": "401",
"code": "not_authenticated"
}
]
}Authorizations
Basic Authentication using API key and secrets is currently the main authentication mechanism.
Query Parameters
Return invoice items dated on or after this timestamp (inclusive). ISO 8601 with timezone.
Return invoice items dated on or before this timestamp (inclusive). ISO 8601 with timezone.
Return only invoice items linked to this parcel id.
Return only invoice items belonging to this invoice id.
Return only invoice items of this type. Returns 400 if the value is not a recognized public type.
addon, addon_refund, carrier_impl_fee, carrier_parcel_fee, claim, coulance, customer_impl_fee, earned_credit, fuel_refund, fuel_surcharge, import_adm_fee, import_duties, import_vat, insurance, insurance_refund, invoice_check_fee, invoice_check_fee_refund, notification, overcharge_fee, parcel_cancelled, parcel_fee, parcel_fee_refund, pickup, pickup_cancelled, pickup_subscription, refund, shipment, subscription, subscription_refund, surcharge, surcharge_refund, unblock, validation The cursor query string is used as the pivot value to filter results. If no value is provided, the first page of results will be returned. To get this value, you must encode the offset, reverse and position into a base64 string.
There are 3 possible parameters to encode:
o: Offsetr: Reversep: Position
For example, r=1&p=300 encoded as a base64 string would be cj0xJnA9MzAw. The query string would then be cursor=cj0xJnA9MzAw.
"cj0xJnA9MzAw"
The size of the page to fetch. Defaults to 100, max 500.
1 <= x <= 500Response
OK
Retrieve invoice items
Show child attributes
Show child attributes