Skip to main content
No Status

api for printing packing slips

Related products:Printing & Documents
  • August 8, 2018
  • 13 replies
  • 7 views

Add Packing Slip functionality thru API Would love the ability to generate packing slips through your API. currently that is not supported. really hoping you will add that functionality soon.

13 replies

  • August 11, 2020
Bringing this back up. Currently, the testLabel flag on createLabel will print the entire packing slip, but turning this flag to false prints only the label. This "functionality" has led to wasted manhours developing label automation. The functionality is there, it needs to be opened up.

  • February 5, 2021
I would really love seeing that, we're now shipping all orders via API, but that comes to a cost of not having a packing slip technically it could use the same settings as in the UI in document option Not sure if related, as of now there is no option to retrieve Label Data (and packing slip) of an order already shipped in shipstation, would love to see that as well

  • May 30, 2021
This is an excellent endpoint to add to the API. Please!!! If we can't use Webhooks to POST to the private Shipstation API (because of ReCaptcha), please make the documents api endpoint accessible to everyone. It would help so many accounts.

  • July 14, 2021
Simply being able to retrieve the packing slip (and also the shipping label) data (base64 encoded) would suffice. I prefer to print the document myself anyways :) The label is retrievable when shipping the order, but not after. Not a huge deal, but the Packing slip doesn't seem to EVER be retrievable.

SuperMgr-Sarah
No text available

  • February 11, 2022

@SuperMgr-Sarah  No status? How about changing this to "Planned"?

 

Quite frustrating to see basic things like this requested but never implemented for almost 4 years.

To echo @ryan5 , this endpoint is needed thanks to the ReCaptcha being re-added to shipstation login.

 

Surely a GET endpoint like /packingslip/<orderId>?packingSlipTemplateId=#

can't be that hard to add...


  • January 14, 2024

It is 2024 and we still don’t have a create packing slip API? Seriously?


  • February 13, 2024

Since Shipstation is not providing additional documents such as Packing List etc for international shipment, did anyone implement custom packing list via programming. If so, what value did you put in the barcode. When we inspected the ShipStation Packing List, the barcode had a wired value

@jonathan1 

@SuperMgr-Sarah 

@lenny1 

@RevComp 

@SuperMgr-Sarah 

 

 


  • April 10, 2024

Adding here because I randomly finally had a feeling turned out right. @SH11_2 

 

The barcode is the order id encoded to hexadecimal with ^#^ in the beginning and ^ at the end.  Lookup up decimal to hexadecimal converter for an example.

 

so an id of 11234567 in the api would be a value of AB6D07. So the barcode would be ^#^AB6D07^.  


  • April 10, 2024

@peter5 

 

thank you.


  • December 30, 2024

Adding my vote to get packing slips via the API.  At the very least, please make the pdf similar with or without the testLabel flag.  It's so incredibly frustrating to develop against test labels, only to find out that I now need to engineer a different solution for production labels.


so ran into same issues making a custom php sctrip to make a packing slip here is some of the code you can do it by using a Decimal to Hex here is the php function and demo code. you just need to feed the function the shipstation order ID: {"orders":[{"orderId":000000000

//Convert Dec to Hex
function dec2hex($number)
{
$hexvalues = array('0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F');
$hexval = '';
while($number != '0')
{
$hexval = $hexvalues[bcmod($number,'16')].$hexval;
$number = bcdiv($number,'16',0);
}
return $hexval;
}

 

//Convert Order ID into Hex
$getBarcodeHex = '^#^'.dec2hex($sh_orderId).'^';

 

@peter5 thanks for this thought was able to figure it out. whish they also told you about it in the api docs but nothing i could find.


  • January 13, 2025

@SH11_2 @pniadminlogin Your welcome (new user name due to weird login issues)

I currently use this to create a qrcode in my app that can be scanned on the orders page to bring up the order and ship in shipstation.  Will do the shipping inside my app in the future but this was the quick and easy option at the moment.

Here is some PHP and Javascript code I should have added to my previous post

PHP:

$orderId = 11234567;
$barcode = '^#^' . strtoupper(dechex($orderId)) . '^';

And reverse barcode to order ID:

$fromBarcode = '^#^AB6D07^';
if (preg_match('/\^#\^[a-fA-F0-9]*\^/', $fromBarcode) === 1) {
$fromOrderId = hexdec(substr($fromBarcode, 3, -1));
}

Javascript&colon;

const orderId = 11234567

const barcode = `^#^${orderId.toString(16).toUpperCase()}^`;
const barcodeLegacy = '^#^' & orderId.toString(16).toUpperCase() & '^';
 
And Reverse
const fromBarcode = '^#^AB6D07^'
let fromOrderId = null
if (/\^#\^[a-fA-F0-9]*\^/.test(fromBarcode)) {
fromOrderId = parseInt(fromBarcode.slice(3,-1), 16)
}