# Documents

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:

- **Shipment level (before a label exists).** Register the document with [Register a document for a shipment](#operation/register_shipment_document). Documents registered at the shipment level are forwarded to the carrier automatically.
- **Label level (after a label is generated).** Register the document with [Register a document for a label](#operation/register_label_document), then call [Send label documents](#operation/send_label_documents) to transmit it to the carrier.

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

SS API: You can also suppress a carrier-generated document by setting the `suppress_carrier_generated_documents` [advanced option](/apis/@shipengine/docs/carriers/advanced-options.md) on the shipment. Currently, only the commercial invoice is supported, and only for UPS.

Carrier Document Upload is currently supported for **UPS** and **FedEx** only. Accepted document types and file size vary by carrier — see the [Carrier Document Upload guide](/apis/@shipengine/docs/labels/carrier-document-upload.md) for the full list.

For **step-by-step instructions on uploading documents through the ShipStation API dashboard**, see the [Customs Declarations: Document Upload help article](https://help.shipstation.com/hc/en-us/articles/50888603341211). This is useful for operations teams who need to upload documents manually or as a fallback if API integration issues occur.


