Dropshipping Endpoints

Produce print files and let Printess forward them to a fulfillment partner (HP Siteflow, email, Dropbox, FTP and more). Save the recipient address first, then start the dropship production. All endpoints are POST requests with a JSON body to https://api.printess.com. See the Backend API Reference for authentication and how Try It Live works.

Save Dropship Address

POSThttps://api.printess.com/dropshipData/saveowner

Stores the recipient address for a dropship order and returns its id.

Stores the shipping address (and optional delivery details) of your end customer and returns a numeric id. This id is what you pass as dropshipDataId when calling /dropship/produce — always call this endpoint first.

Sending id: 0 (or omitting it) creates a new address record. Sending an existing id that belongs to your account updates it. The address itself is not validated when you save it — errors like an invalid country code only surface later when the dropship order is routed to the fulfillment partner, so double check the address format below.

This endpoint requires an owner-level token (your Service Token works). Note that it is stricter than /dropship/produce: a restricted dropship-producer token can produce, but cannot save addresses.

Step 1 of the dropship flow: save the address here, then pass the returned id to /dropship/produce as dropship.dropshipDataId.

Request Body

PropertyDescription
typerequired
string
The kind of data stored. Always send printess-shipping — it is the only supported value. Anything else is accepted here but makes the dropship order fail later.
jsonrequired
object | string
The recipient address. You can send it as a nested JSON object or as a string containing serialized JSON — both are accepted. Field names are matched case-insensitively.
16 nested properties
firstName
string
First name of the recipient. At least one of firstName / lastName must be set, otherwise the dropship order fails.
lastName
string
Last name of the recipient.
companyName
string
Company name. Currently only included in email dropshipping content.
address1required
string
Street address line 1. Required by all fulfillment partners.
address2
string
Street address line 2.
address3
string
Street address line 3.
cityrequired
string
City.
ziprequired
string
Postal / zip code.
countryrequired
string
Country as ISO 3166 alpha-2 or alpha-3 code (DE, DEU, US, USA). Full country names like Germany are NOT accepted and make the order fail.
countryState
string
State / province code. Only needed for USA and Canada.
phone
string
Phone number of the recipient. Passed to the fulfillment partner as-is (no format requirements).
email
string
Email address of the recipient. Passed to the fulfillment partner as-is.
dispatchNotice
string
Free text, available as the {dropship.dispatchNotice} placeholder in email / FTP / Dropbox dropshipping file names and templates.
deliveryNotice
string
Free text, available as the {dropship.deliveryNotice} placeholder.
deliveryDate
string (date-time)
Requested delivery date, available as the {dropship.deliveryDate} placeholder.
data
map<string, string>
Free-form key/value pairs. Each key becomes a {dropship.<key>} placeholder for email / FTP / Dropbox dropshipping.
id
integer (int64)default: 0
Leave at 0 (or omit) to create a new address. Pass an existing id that belongs to your account to update it.

Try It Live

Requests are sent to https://api.printess.com/dropshipData/save with your Service Token.

Code Example

Ready-to-use code with the minimal payload. Replace YOUR_PRINTESS_SERVICE_TOKEN with your Service Token.

// Stores the recipient address for a dropship order and returns its id.
const response = await fetch("https://api.printess.com/dropshipData/save", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_PRINTESS_SERVICE_TOKEN"
  },
  body: JSON.stringify({
    "type": "printess-shipping",
    "json": {
      "firstName": "Jane",
      "lastName": "Doe",
      "address1": "Finkenkruger Str. 46",
      "city": "Falkensee",
      "zip": "14612",
      "country": "DE"
    }
  })
});

if (!response.ok) {
  throw new Error("Printess API error " + response.status + ": " + await response.text());
}

const result = await response.json();
console.log(result);
curl -X POST "https://api.printess.com/dropshipData/save" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN" \
  -d '{
  "type": "printess-shipping",
  "json": {
    "firstName": "Jane",
    "lastName": "Doe",
    "address1": "Finkenkruger Str. 46",
    "city": "Falkensee",
    "zip": "14612",
    "country": "DE"
  }
}'
// Stores the recipient address for a dropship order and returns its id.
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

var payload = @"{
  ""type"": ""printess-shipping"",
  ""json"": {
    ""firstName"": ""Jane"",
    ""lastName"": ""Doe"",
    ""address1"": ""Finkenkruger Str. 46"",
    ""city"": ""Falkensee"",
    ""zip"": ""14612"",
    ""country"": ""DE""
  }
}";

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_PRINTESS_SERVICE_TOKEN");

    var content = new StringContent(payload, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("https://api.printess.com/dropshipData/save", content);

    if (!response.IsSuccessStatusCode)
    {
        throw new HttpRequestException("Printess API error " + (int)response.StatusCode + ": " + await response.Content.ReadAsStringAsync());
    }

    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
<?php
// Stores the recipient address for a dropship order and returns its id.
$payload = [
    'type' => 'printess-shipping',
    'json' => [
        'firstName' => 'Jane',
        'lastName' => 'Doe',
        'address1' => 'Finkenkruger Str. 46',
        'city' => 'Falkensee',
        'zip' => '14612',
        'country' => 'DE',
    ],
];

$ch = curl_init('https://api.printess.com/dropshipData/save');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status < 200 || $status >= 300) {
    throw new RuntimeException("Printess API error $status: $response");
}

$result = json_decode($response, true);
print_r($result);

Response

Returns the numeric id of the stored address as a plain JSON number, e.g. 42484. Pass this value as dropship.dropshipDataId to /dropship/produce.

Errors

Status / Code Meaning
406 (c: 100/101) Body missing, or type / json is empty.
401 / 403 Missing token or the token is not owner-level.

Schemas

Copy-ready type definitions for the object types of this endpoint. All their properties are also listed in the tables above.

json request
interface Json {
  firstName?: string;
  lastName?: string;
  companyName?: string;
  address1: string;
  address2?: string;
  address3?: string;
  city: string;
  zip: string;
  country: string;
  countryState?: string;
  phone?: string;
  email?: string;
  dispatchNotice?: string;
  deliveryNotice?: string;
  deliveryDate?: string;
  data?: Record<string, string>;
}
public class Json
{
    [JsonPropertyName("firstName")]
    public string FirstName { get; set; }

    [JsonPropertyName("lastName")]
    public string LastName { get; set; }

    [JsonPropertyName("companyName")]
    public string CompanyName { get; set; }

    [JsonPropertyName("address1")]
    public string Address1 { get; set; }

    [JsonPropertyName("address2")]
    public string Address2 { get; set; }

    [JsonPropertyName("address3")]
    public string Address3 { get; set; }

    [JsonPropertyName("city")]
    public string City { get; set; }

    [JsonPropertyName("zip")]
    public string Zip { get; set; }

    [JsonPropertyName("country")]
    public string Country { get; set; }

    [JsonPropertyName("countryState")]
    public string CountryState { get; set; }

    [JsonPropertyName("phone")]
    public string Phone { get; set; }

    [JsonPropertyName("email")]
    public string Email { get; set; }

    [JsonPropertyName("dispatchNotice")]
    public string DispatchNotice { get; set; }

    [JsonPropertyName("deliveryNotice")]
    public string DeliveryNotice { get; set; }

    [JsonPropertyName("deliveryDate")]
    public DateTime? DeliveryDate { get; set; }

    [JsonPropertyName("data")]
    public Dictionary<string, string> Data { get; set; }
}
<?php

class Json
{
    public ?string $firstName = null;
    public ?string $lastName = null;
    public ?string $companyName = null;
    public string $address1;
    public ?string $address2 = null;
    public ?string $address3 = null;
    public string $city;
    public string $zip;
    public string $country;
    public ?string $countryState = null;
    public ?string $phone = null;
    public ?string $email = null;
    public ?string $dispatchNotice = null;
    public ?string $deliveryNotice = null;
    public ?string $deliveryDate = null;
    /** @var array<string, string>|null */
    public ?array $data = null;
}

Produce and Dropship

POSThttps://api.printess.com/dropship/produceuser or dropship-producer

Renders the print files and forwards the finished order to your fulfillment partner.

Works exactly like /production/produce (all its properties are available here as well), plus the required dropship object. After the print files are rendered successfully, Printess automatically submits the order to the fulfillment partner configured in the referenced product definition — HP Siteflow, email dropshipping, Dropbox, FTP and others.

Important: a 200 response means the production job was accepted, NOT that the fulfillment partner accepted the order. Everything after rendering happens asynchronously. Poll /dropship/orders/list to see the fulfillment state, tracking number and any routing errors.

Property names in this request are case-sensitive — send them exactly as documented.

Call /dropshipData/save first to store the recipient address — its returned id goes into dropship.dropshipDataId.

The dropship.productDefinitionId identifies the product AND the fulfillment partner. You manage product definitions in the account portal (Dropshippers section). It can be omitted only if the template or save token already has a product definition assigned.

For orders with multiple personalized items, call this endpoint once per line item with the same linkedOrderLineItemsId (a GUID) and linkedOrderLineItems set to the total count — Printess then waits for all items and submits ONE combined order to the fulfillment partner.

Request Body

PropertyDescription
templateNamerequired
string
The template to produce. Either a template name from your account or a save token (st:...) handed over by the buyer-side editor.
originrequired
string
Free text tag for this production request (e.g. your shop domain). Used to search and filter your orders later.
dropshiprequired
object
The dropshipping configuration for this order.
9 nested properties
dropshipDataIdrequired
integer (int64)
The address id returned by /dropshipData/save. If the id does not exist, the print files are still rendered but the dropship routing fails asynchronously — check /dropship/orders/list.
productDefinitionIdrequired
integer (int64)
The product definition to use. It selects both the physical product (SKUs, components) and the fulfillment partner. Can be omitted only if the template or save token already carries a product definition.
callbackType
integerdefault: 0
How you want to be notified when the order ships: 0 = no callback (poll /dropship/orders/list instead), 1 = Printess POSTs the tracking information to a URL you provide, 2 = Printess automatically fulfills the matching Shopify order incl. tracking number and customer notification.
Values: 0 = None 1 = Url 2 = Shopify
callbackPayload
string | object
Required when callbackType is not 0. Can be sent as a JSON string or as a nested object. For callbackType: 1: {"url": "https://your.shop/shipped", "orderId": 123, "lineItemId": 456} — orderId/lineItemId are your own ids and are echoed back in the callback. For callbackType: 2 (Shopify autofulfill): {"domain": "my-shop.myshopify.com", "orderId": 5123456789012, "lineItemId": 13456789012345, "orderName": "#1042"} with the Shopify order id and line item id. Do not put secrets in here — the value is echoed back by /dropship/orders/list.
linkedOrderLineItems
integerdefault: 0
If the customer order consists of several personalized line items, set this to the total count on every produce call (e.g. 5 line items = 5 calls, each with linkedOrderLineItems: 5). Printess waits until all of them finished and submits one combined dropship order.
linkedOrderLineItemsId
string
Shared id that links the line items of one order together — must be identical on all calls of the order. A GUID is a good value. Must not contain /.
shippingCode
string
Optional shipping code that is mapped to the fulfillment partner's shipping method (mapping is configured per dropshipper in the account portal). Takes priority over shippingTitle.
shippingTitle
string
Optional shipping title, mapped to the partner's shipping method with lower priority than shippingCode.
data
map<string, string>
Partner-specific extras. Supported keys: customerName (overrides the customer name sent to HP Siteflow) and shopOrderId (your shop's human readable order number, shown at the fulfillment partner).
externalOrderId
string
Your shop's order id. Stored with the order, searchable via /orders/list and useful for accounting.
copies
integerdefault: 1
Quantity — how many copies of the product the fulfillment partner should produce.
callbackUrl
string
URL that is called when the RENDERING finished (success or error) — this is separate from the dropship status callback configured via dropship.callbackType. Must be an absolute URL.
callbackHeaders
object
HTTP headers sent with the rendering callback request, as a name to value map, e.g. { "X-Api-Key": "..." }. Only used together with callbackUrl.
outputFiles
OutputFile[]
Which documents of the template to output as separate files, each with its own settings. For HP Siteflow the number of produced documents must match the number of components configured in the product definition.
outputSettings
OutputSettings
Output settings (dpi etc.) used when outputFiles is not specified. See /production/produce for all properties.
printSettingsTemplate
string
Name of a print settings template created in the account portal. The recommended way to configure output — your production team can change print settings without touching the integration code.
outputType
stringdefault: pdf
Output format.
Values: pdf png jpg
orderMetaData
string
Meta data stored with the order (returned by /orders/list). If you pass a serialized JSON object, its keys are also available as {meta.<key>} placeholders in email/FTP/Dropbox dropshipping.
vdp
Vdp
Form field values and variable data. See /production/produce for details.
usePublishedVersion
booleandefault: false
Produce the published version of the template. Only relevant for direct template production — save tokens are not affected.
productType
string
Free text product type, used for searching orders.

Try It Live

Requests are sent to https://api.printess.com/dropship/produce with your Service Token.

Code Example

Ready-to-use code with the minimal payload. Replace YOUR_PRINTESS_SERVICE_TOKEN with your Service Token.

// Renders the print files and forwards the finished order to your fulfillment partner.
const response = await fetch("https://api.printess.com/dropship/produce", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_PRINTESS_SERVICE_TOKEN"
  },
  body: JSON.stringify({
    "templateName": "YOUR_TEMPLATE_OR_SAVETOKEN",
    "origin": "your-shop.com",
    "dropship": {
      "dropshipDataId": 0,
      "productDefinitionId": 0
    }
  })
});

if (!response.ok) {
  throw new Error("Printess API error " + response.status + ": " + await response.text());
}

const result = await response.json();
console.log(result);
curl -X POST "https://api.printess.com/dropship/produce" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN" \
  -d '{
  "templateName": "YOUR_TEMPLATE_OR_SAVETOKEN",
  "origin": "your-shop.com",
  "dropship": {
    "dropshipDataId": 0,
    "productDefinitionId": 0
  }
}'
// Renders the print files and forwards the finished order to your fulfillment partner.
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

var payload = @"{
  ""templateName"": ""YOUR_TEMPLATE_OR_SAVETOKEN"",
  ""origin"": ""your-shop.com"",
  ""dropship"": {
    ""dropshipDataId"": 0,
    ""productDefinitionId"": 0
  }
}";

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_PRINTESS_SERVICE_TOKEN");

    var content = new StringContent(payload, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("https://api.printess.com/dropship/produce", content);

    if (!response.IsSuccessStatusCode)
    {
        throw new HttpRequestException("Printess API error " + (int)response.StatusCode + ": " + await response.Content.ReadAsStringAsync());
    }

    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
<?php
// Renders the print files and forwards the finished order to your fulfillment partner.
$payload = [
    'templateName' => 'YOUR_TEMPLATE_OR_SAVETOKEN',
    'origin' => 'your-shop.com',
    'dropship' => [
        'dropshipDataId' => 0,
        'productDefinitionId' => 0,
    ],
];

$ch = curl_init('https://api.printess.com/dropship/produce');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status < 200 || $status >= 300) {
    throw new RuntimeException("Printess API error $status: $response");
}

$result = json_decode($response, true);
print_r($result);

Complete example: address + dropship order (JavaScript)

The full two-step flow: save the recipient address, then start the dropship production with a save token from the buyer-side editor.

const baseUrl = "https://api.printess.com";
const headers = {
  "Content-Type": "application/json",
  "Authorization": "Bearer YOUR_PRINTESS_SERVICE_TOKEN"
};

// Step 1: store the recipient address
const addressResponse = await fetch(baseUrl + "/dropshipData/save", {
  method: "POST",
  headers,
  body: JSON.stringify({
    type: "printess-shipping",
    json: {
      firstName: "Jane",
      lastName: "Doe",
      address1: "Finkenkruger Str. 46",
      city: "Falkensee",
      zip: "14612",
      country: "DE"        // ISO alpha-2 or alpha-3 code
    }
  })
});
const dropshipDataId = await addressResponse.json(); // a plain number

// Step 2: produce and dropship
const produceResponse = await fetch(baseUrl + "/dropship/produce", {
  method: "POST",
  headers,
  body: JSON.stringify({
    templateName: "st:...",            // save token from the buyer side editor
    origin: "your-shop.com",
    externalOrderId: "#1042",          // your shop's order number
    copies: 1,
    dropship: {
      dropshipDataId,
      productDefinitionId: 2874        // from your account portal
    }
  })
});
const { jobId, orderId } = await produceResponse.json();

// Track fulfillment state via POST /dropship/orders/list

Shopify autofulfillment example

With callbackType: 2 Printess automatically sets the Shopify order to fulfilled (including tracking number and customer notification) as soon as the fulfillment partner ships. For orders with several personalized items, link them so Shopify receives one fulfillment covering all line items.

await fetch("https://api.printess.com/dropship/produce", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_PRINTESS_SERVICE_TOKEN"
  },
  body: JSON.stringify({
    templateName: "st:...",
    origin: "my-shop.myshopify.com",
    externalOrderId: "#1042",
    dropship: {
      dropshipDataId: 42484,
      productDefinitionId: 2874,
      callbackType: 2,                       // Shopify autofulfill
      callbackPayload: {
        domain: "my-shop.myshopify.com",
        orderId: 5123456789012,              // Shopify order id
        lineItemId: 13456789012345,          // Shopify line item id
        orderName: "#1042"
      },
      // only for orders with more than one personalized line item:
      linkedOrderLineItems: 3,
      linkedOrderLineItemsId: "0f0a2c8e-6f6e-4c4f-9d3b-2c31f4a1b111"
    }
  })
});

Response

The job was accepted for rendering.

PropertyDescription
jobId
string
Id of the enqueued render job. Use it with /production/status/get.
orderId
string
Id of the created order. Use it with /orders/list or /order/retry.

Callback

With callbackType: 1, Printess POSTs the following JSON to your URL as soon as the fulfillment partner reports the shipment. Respond with a 2xx status code. orderId, lineItemId and state are echoed from your callbackPayload.

{
  "printessDropshipId": 55123,
  "printessOrderId": "9f3c...",
  "orderId": 123456789,
  "lineItemId": 987654321,
  "trackingId": "00340434...",
  "trackingPayload": "https://tracking-url...",
  "trackingType": 1,
  "eventName": "shipped",
  "state": null
}

Errors

Status / Code Meaning
406 (c: 100) Body missing, dropship property missing, or / used in linkedOrderLineItemsId.
406 (c: 101) templateName missing.
406 (c: 102) Invalid callbackUrl, or dropshipDataId / productDefinitionId missing.
406 (c: 202) The save token is already expired.
406 (c: 601/602/603) Save token / template / published version not found.

Schemas

Copy-ready type definitions for the object types of this endpoint. All their properties are also listed in the tables above.

dropship request
interface Dropship {
  dropshipDataId: number;
  productDefinitionId: number;
  callbackType?: "0 = None" | "1 = Url" | "2 = Shopify";
  callbackPayload?: string | object;
  linkedOrderLineItems?: number;
  linkedOrderLineItemsId?: string;
  shippingCode?: string;
  shippingTitle?: string;
  data?: Record<string, string>;
}
public class Dropship
{
    [JsonPropertyName("dropshipDataId")]
    public long DropshipDataId { get; set; }

    [JsonPropertyName("productDefinitionId")]
    public long ProductDefinitionId { get; set; }

    [JsonPropertyName("callbackType")]
    public int? CallbackType { get; set; }

    [JsonPropertyName("callbackPayload")]
    public object CallbackPayload { get; set; }

    [JsonPropertyName("linkedOrderLineItems")]
    public int? LinkedOrderLineItems { get; set; }

    [JsonPropertyName("linkedOrderLineItemsId")]
    public string LinkedOrderLineItemsId { get; set; }

    [JsonPropertyName("shippingCode")]
    public string ShippingCode { get; set; }

    [JsonPropertyName("shippingTitle")]
    public string ShippingTitle { get; set; }

    [JsonPropertyName("data")]
    public Dictionary<string, string> Data { get; set; }
}
<?php

class Dropship
{
    public int $dropshipDataId;
    public int $productDefinitionId;
    /** @var '0 = None'|'1 = Url'|'2 = Shopify'|null */
    public ?int $callbackType = null;
    /** @var string|object|null */
    public mixed $callbackPayload = null;
    public ?int $linkedOrderLineItems = null;
    public ?string $linkedOrderLineItemsId = null;
    public ?string $shippingCode = null;
    public ?string $shippingTitle = null;
    /** @var array<string, string>|null */
    public ?array $data = null;
}

List Dropship Orders

POSThttps://api.printess.com/dropship/orders/listuser

Query the fulfillment state and tracking information of your dropship orders.

Returns your dropship orders — one entry per submission to a fulfillment partner — including the current state, tracking number and tracking URL. This is the endpoint to poll if you do not use callbacks.

The state property: 0 = created/submitted, 1 = shipped (tracking available), 10 = received by the fulfillment partner, 11 = print-ready, 98 = cancelled, 99 = error (see errorMessage). Some partners report additional partner-specific status codes, so always interpret state together with the partner type.

Note: the externalOrderId filter here matches the FULFILLMENT PARTNER’s order id (e.g. the HP Siteflow order id, as returned in externalOrderId of this list) — not your shop’s order id. To find orders by your own id, use /orders/list with externalOrderId and match the orderId here against it. When externalOrderId is set, the date filters are ignored.

Request Body

PropertyDescription
externalOrderId
string
Exact match on the fulfillment partner's order id. When set, startDate / endDate are ignored.
startDate
string (date-time)
Only orders created on or after this date.
endDate
string (date-time)
Only orders created on or before this date.
take
integerdefault: 100
Page size, maximum 500.
skip
integerdefault: 0
Number of entries to skip (paging). Results are ordered by creation date, newest first.
userId
string
Admin only — ignored for regular accounts.

Try It Live

Requests are sent to https://api.printess.com/dropship/orders/list with your Service Token.

Code Example

Ready-to-use code with the minimal payload. Replace YOUR_PRINTESS_SERVICE_TOKEN with your Service Token.

// Query the fulfillment state and tracking information of your dropship orders.
const response = await fetch("https://api.printess.com/dropship/orders/list", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_PRINTESS_SERVICE_TOKEN"
  },
  body: JSON.stringify({})
});

if (!response.ok) {
  throw new Error("Printess API error " + response.status + ": " + await response.text());
}

const result = await response.json();
console.log(result);
curl -X POST "https://api.printess.com/dropship/orders/list" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN" \
  -d '{}'
// Query the fulfillment state and tracking information of your dropship orders.
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

var payload = @"{}";

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_PRINTESS_SERVICE_TOKEN");

    var content = new StringContent(payload, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("https://api.printess.com/dropship/orders/list", content);

    if (!response.IsSuccessStatusCode)
    {
        throw new HttpRequestException("Printess API error " + (int)response.StatusCode + ": " + await response.Content.ReadAsStringAsync());
    }

    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
<?php
// Query the fulfillment state and tracking information of your dropship orders.
$payload = (object) [];

$ch = curl_init('https://api.printess.com/dropship/orders/list');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_PRINTESS_SERVICE_TOKEN',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status < 200 || $status >= 300) {
    throw new RuntimeException("Printess API error $status: $response");
}

$result = json_decode($response, true);
print_r($result);

Response

Returns the matching orders plus lookup tables for the referenced product definitions.

PropertyDescription
orders
DropshipOrder[]
The dropship orders, newest first.
13 nested properties
id
integer (int64)
Id of this dropship order.
createdOn
string (date-time)
When the order was submitted to the fulfillment partner.
externalOrderId
string
The order id at the fulfillment partner. Empty if the submission failed.
orderId
string
The Printess order id (matches /orders/list), or linked/<linkedOrderLineItemsId> for combined multi-item orders.
dropshipperType
string
Which fulfillment channel was used, e.g. siteflow, sendgrid (email), dropbox, ftp.
productDefinitionId
integer (int64)
The product definition used. 0 for combined multi-item orders.
dropshipDataId
integer (int64)
The address id used.
quantity
integer
Ordered quantity (the copies of the produce call, summed for linked orders).
state
integer
Fulfillment state: 0 submitted, 1 shipped, 10 received, 11 print-ready, 98 cancelled, 99 error.
trackingId
string
Carrier tracking number once shipped. partial when only part of a combined order has shipped so far.
trackingPayload
string
Tracking URL once shipped.
callbackType
integer
The callback type you sent in the produce call.
errorMessage
string
Error details when state is 99 (e.g. invalid address, product definition mismatch).
productDefinitions
map<id, {display, dropshipperId}>
Lookup table: product definition id to display name for your own product definitions.
saasProductDefinitions
map<id, {display, dropshipperId}>
Lookup table for product definitions provided by Printess.
count
integer
Total number of matching orders (ignoring paging).

Errors

Status / Code Meaning
401 Missing or invalid token.

Schemas

Copy-ready type definitions for the object types of this endpoint. All their properties are also listed in the tables above.

DropshipOrder response
interface DropshipOrder {
  id?: number;
  createdOn?: string;
  externalOrderId?: string;
  orderId?: string;
  dropshipperType?: string;
  productDefinitionId?: number;
  dropshipDataId?: number;
  quantity?: number;
  state?: number;
  trackingId?: string;
  trackingPayload?: string;
  callbackType?: number;
  errorMessage?: string;
}
public class DropshipOrder
{
    [JsonPropertyName("id")]
    public long? Id { get; set; }

    [JsonPropertyName("createdOn")]
    public DateTime? CreatedOn { get; set; }

    [JsonPropertyName("externalOrderId")]
    public string ExternalOrderId { get; set; }

    [JsonPropertyName("orderId")]
    public string OrderId { get; set; }

    [JsonPropertyName("dropshipperType")]
    public string DropshipperType { get; set; }

    [JsonPropertyName("productDefinitionId")]
    public long? ProductDefinitionId { get; set; }

    [JsonPropertyName("dropshipDataId")]
    public long? DropshipDataId { get; set; }

    [JsonPropertyName("quantity")]
    public int? Quantity { get; set; }

    [JsonPropertyName("state")]
    public int? State { get; set; }

    [JsonPropertyName("trackingId")]
    public string TrackingId { get; set; }

    [JsonPropertyName("trackingPayload")]
    public string TrackingPayload { get; set; }

    [JsonPropertyName("callbackType")]
    public int? CallbackType { get; set; }

    [JsonPropertyName("errorMessage")]
    public string ErrorMessage { get; set; }
}
<?php

class DropshipOrder
{
    public ?int $id = null;
    public ?string $createdOn = null;
    public ?string $externalOrderId = null;
    public ?string $orderId = null;
    public ?string $dropshipperType = null;
    public ?int $productDefinitionId = null;
    public ?int $dropshipDataId = null;
    public ?int $quantity = null;
    public ?int $state = null;
    public ?string $trackingId = null;
    public ?string $trackingPayload = null;
    public ?int $callbackType = null;
    public ?string $errorMessage = null;
}