Skip to content

Carrier Document Upload

Document Upload lets you submit self-prepared customs paperwork — such as Pro Forma Invoices, USMCA forms (for example, the USMCA Certification of Origin), and other supporting documents — directly to the carrier. Use it whenever a shipment requires supplemental international documentation, helping to prevent customs delays and delivery issues.

Documents can be provided at either the shipment level or the label level — that is, before or after a label is generated:

To enable document upload for a shipment or label, set the pending_documents flag on the shipment's customs object.

For step-by-step instructions on uploading documents through the ShipStation API dashboard, see the Customs Declarations: Document Upload help article. This is useful for operations teams who need to upload documents manually or as a fallback if API integration issues occur.

LIMITED AVAILABILITY

Carrier Document Upload is currently supported for UPS and FedEx only. Accepted document types and file size vary by carrier — expand the lists below for the full set.

FedEx accepted document types
  • usmca_commercial_invoice_certification_of_origin
  • usmca_certification_of_origin
  • pro_forma_invoice
  • other
UPS accepted document types
  • certificate_of_origin
  • usmca_commercial_invoice_certification_of_origin
  • usmca_certification_of_origin
  • other
  • authorization_form
  • export_accompanying_document
  • export_license
  • import_permit
  • power_of_attorney
  • packing_list
  • sed_document
  • shippers_letter_of_instruction
  • declaration
IMPORTANT

Once you have uploaded a document and sent it to the carrier, it cannot be deleted or modified. Please ensure all information is accurate before finalizing.

Requirements

Account setup & prerequisites

  • For standalone UPS accounts, you must have a valid 6-digit UPS shipper number enabled for "Upload Forms Created Offline" to avoid API errors.

UPS document & upload restrictions

LimitDescription
File sizeMaximum 10 MB per file.
Maximum 50 MB total per request.
QuantityMaximum 13 files per request.
Maximum 13 documents total per shipment.

How it works

Uploading a document is a three-step flow:

  1. Register the document. Call the register endpoint with the document type, format, and file_name. The response returns a document_id and an upload target — a pre-signed Amazon S3 url and a set of form fields.
  2. Upload the file to Amazon S3. Send an HTTP POST with multipart/form-data to the returned upload.url, including every key/value pair from upload.fields exactly as returned, followed by a file part containing the document content.
  3. Send to the carrier. Once the file is uploaded, call the send documents endpoint to transmit all of the label's documents to the carrier.

You can register documents against either a shipment or a label. When you register against a label, ShipStation resolves the carrier, tracking number, and transaction details automatically from the label.

Endpoints

MethodEndpointDescription
POST/v2/labels/{label_id}/documentsRegister a document against a label and receive S3 upload URL
GET/v2/labels/{label_id}/documentsList documents for a label
DELETE/v2/labels/{label_id}/documents/{document_id}Delete a document (only before sending to carrier)
POST/v2/labels/{label_id}/documents/sendTransmit all uploaded documents to the carrier
GET/v2/documents/{document_id}/downloadDownload a document file
POST/v2/shipments/{shipment_id}/documentsRegister a document against a shipment and receive S3 upload URL
GET/v2/shipments/{shipment_id}/documentsList documents for a shipment
DELETE/v2/shipments/{shipment_id}/documents/{document_id}Delete a shipment document (only before creating a label)
GET/v2/shipments/{shipment_id}/labelsList shipments and their document statuses

Supported document types

The document types a carrier accepts differ. Use a value from the table below that is supported by the carrier on your label or shipment.

Document typeFedExUPS
certificate_of_origin
usmca_commercial_invoice_certification_of_origin
usmca_certification_of_origin
pro_forma_invoice
other
authorization_form
export_accompanying_document
export_license
import_permit
power_of_attorney
packing_list
sed_document
shippers_letter_of_instruction
declaration

Supported file formats

Documents can be uploaded in the following formats. If you omit format when registering, PDF is used.

  • PDF
  • PNG

Document statuses

After a document is registered, its status reflects where it is in the upload and send flow:

StatusDescription
awaiting_uploadThe document is registered and waiting for the file to be uploaded to the provided upload target.
processingThe uploaded file is being processed.
processing_claimedThe document has been claimed for processing.
invalidThe document failed validation and cannot be used.
uploadedThe file was uploaded successfully and is ready to be sent to the carrier.
queuedThe document is queued to be sent to the carrier.
sentThe document was transmitted to the carrier.
failedSending the document to the carrier failed.

Full API reference

For complete request and response details for all document upload endpoints, see the Documents API reference.