openapi: 3.1.0 info: title: Parcels version: 2.0.0 description: > At the core of the Sendcloud Shipping API is the Parcels resource. Parcels are data objects which can be announced, and have a shipping method and shipping label assigned to them. You can also think of parcels as **shipments**. You can use this resource to perform a number of activities: * Create a parcel and immediately announce it * Create a parcel and choose not to announce it (no shipping label is created) * Update the details, or create a label, for an unannounced parcel * Cancel an announced parcel > International parcels require more information than domestic parcels. Certain customs documents must be created when shipping to countries outside the EU. For Sendcloud to successfully generate these documents, all the necessary information must be available in your parcel request. Read more in-depth information on [international shipping and its requirements](/docs/shipping/international-shipping/). contact: name: Sendcloud API Support url: https://www.sendcloud.dev email: contact@sendcloud.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://panel.sendcloud.sc/api/v2 description: Sendcloud Production tags: - name: Parcels paths: /parcels: get: summary: Retrieve parcels x-sendcloud-paginated: true x-sendcloud-paginated-discriminator: parcels x-mint: href: /api/v2/parcels/retrieve-parcels content: |- **API v2 is entering maintenance mode.** New users should start with API v3 to access our latest features and improved performance. Already using v2? Don't worry, your current integration remains fully functional. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). tags: - Parcels responses: '200': description: OK content: application/json: schema: description: Retrieve parcels type: object properties: next: type: integer nullable: true previous: type: integer nullable: true parcels: type: array uniqueItems: true minItems: 1 items: $ref: '#/components/schemas/ParcelResponseShort' required: - parcels examples: RetrieveParcels: summary: Retrieve parcels value: next: null previous: null parcels: - id: 3172 name: John Doe company_name: Sendcloud contract: 1 address: Stadhuisplein 10 address_divided: street: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '0612345678' email: test@email.com date_created: 01-01-2018 21:45:30 date_updated: 01-01-2018 21:47:12 date_announced: 01-01-2018 21:47:13 tracking_number: S0M3TR4Ck1NgNumB3r customs_declaration: {} weight: '2.000' label: normal_printer: - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=0&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=1&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=2&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=3&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 label_printer: >- https://panel.sendcloud.sc/api/v2/label/label_printer/3172?hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 status: id: 0 message: Ready to send data: {} country: iso_3: NLD iso_2: NL name: Netherlands shipment: id: 1 name: PostNL Standard 0-23kg carrier: code: postnl colli_uuid: ab3ecb5e-61b6-42b1-8034-7c6befdeaa63 collo_nr: 0 collo_count: 1 reference: some_reference_123 RetrieveParcelsVerbose: summary: >- Get all parcels when `errors` query param is `verbose-carrier` value: next: null previous: null parcels: - id: 3172 name: John Doe company_name: Sendcloud contract: 1 address: Stadhuisplein 10 address_divided: street: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '0612345678' email: test@email.com date_created: 01-01-2018 21:45:30 date_updated: 01-01-2018 21:47:12 date_announced: 01-01-2018 21:47:13 tracking_number: S0M3TR4Ck1NgNumB3r customs_declaration: {} weight: '2.000' label: normal_printer: - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=0&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=1&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=2&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=3&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 label_printer: >- https://panel.sendcloud.sc/api/v2/label/label_printer/3172?hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 status: id: 0 message: Ready to send data: {} country: iso_3: NLD iso_2: NL name: Netherlands shipment: id: 1 name: PostNL Standard 0-23kg carrier: code: postnl colli_uuid: ab3ecb5e-61b6-42b1-8034-7c6befdeaa63 collo_nr: 0 collo_count: 1 reference: some_reference_123 errors: non_field_errors: - >- PostNL service error: The domain for email address johndoe@email.com seems to be invalid. '404': description: Not Found content: application/json: schema: type: object properties: error: type: object properties: code: type: integer request: type: string message: type: string examples: InvalidCursor: summary: Invalid cursor value: error: code: 404 request: api/v2/parcels message: Invalid cursor operationId: sc-public-v2-scp-get-all_parcels security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] description: >- This endpoint allows you to retrieve a list of all the parcels which you have created or imported into your Sendcloud account under your API credentials. You can filter the results based on the query parameters provided below, in order to retrieve a specific parcel or list of parcels which match the defined criteria. parameters: - in: query name: parcel_status description: >- Returns parcels that have the requested status. For a list of possible statuses, see the [Retrieve a list of parcel statuses](/api/v2/parcel-statuses/retrieve-a-list-of-parcel-statuses) endpoint. schema: type: integer - schema: type: string in: query name: tracking_number description: Returns parcels that match a specified tracking number - schema: type: string in: query name: external_reference description: Returns parcels that match a specified external reference - schema: type: string in: query name: order_number description: >- Returns an order that matches a specific `order_number` property from your parcels - schema: type: string example: '2018-02-26T11:01:47.505309+00:00' in: query name: updated_after description: >- Returns all orders which have been updated in our system after a given time. You can use the value of ISO 8601 DateTime string like this - schema: type: string example: '2018-02-26T11:01:47.505309+00:00' in: query name: announced_after description: >- Returns all orders which have been announced to the carrier after the given time. You can use the value of ISO 8601 DateTime string like this - schema: type: string in: query name: ids description: >- Filter results using a list of Parcel IDs. This is a comma separated list of IDs, it may not contain more then 100 IDs. - schema: type: string in: query name: cursor description: >- Next and previous token that is used to paginate. The token is included in the response. - schema: type: string enum: - verbose-carrier in: query name: errors description: >- If you are using this API for development purposes, you might want to use the errors query string in the URL. This allows you to visualize errors from the carrier. post: summary: Create a parcel or parcels tags: - Parcels operationId: sc-public-v2-scp-post-create_parcel security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] x-mint: href: /api/v2/parcels/create-a-parcel-or-parcels content: >- **This endpoint is now in maintenance mode and is closed to new users.** - If your Sendcloud account was created before April 13th 2026, you can continue to use this endpoint as normal. - New users should start with API v3 to access our latest features and improved performance. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). This endpoint **creates a parcel** under your API credentials. - You can choose to **announce the parcel** and create the shipping label at the same time as you create the parcel by providing the parameter `request_label: true`. - When `request_label` is `false`, the parcel will be created, but not announced. - You can then request the shipping label at a later date by changing the `request_label` parameter via the [Update a parcel](/api/v2/parcels/update-a-parcel) endpoint. Make sure you use the correct `sender_address` if you wish to ship this parcel from a location **other than** your **default** sender address. You can find the `sender_address` for each of the addresses you've saved in your Sendcloud account via the [Retrieve a sender address](/api/v2/sender-addresses/get-a-sender-address) endpoint. Also keep in mind that the `sender_address` id will not be saved/reflected in the created order (Incoming Orders view / Pack & Go) if `request_label` is `false`. ## International parcel creation If you want to create a parcel to ship to a destination country outside the EU, it's mandatory to include additional information related to the parcel contents. This allows Sendcloud to automatically generate the required customs documentation based on the international shipping method selected. After the shipping label and associated documents are generated, you can retrieve and download them via the [Retrieve parcel documents](/api/v2/parcel-documents/retrieve-parcel-documents) endpoint. If you have more than one active contracts for a specific carrier, you must fill the `contract` field with your desired contract ID in your request. You can get your contract ID from the [Retrieve a list of contracts](/api/v2/contracts/retrieve-a-list-of-contracts) endpoint. International parcels require more information than domestic parcels. Certain customs documents must be created when shipping to countries outside the EU. For Sendcloud to successfully generate these documents, all the necessary information must be available in your parcel request. You can read more in-depth information on international shipping and its requirements in [our developer guides](/docs/shipping/international-shipping/). ## Multicollo More information on how to create multiple parcels within one shipment can be found in the [Multicollo page](/docs/shipping/multicollo/) of our developer guides. responses: '200': description: OK content: application/json: schema: description: Create a parcel oneOf: - type: object title: Failed to create parcels response properties: failed_parcels: type: array uniqueItems: true items: properties: parcel: $ref: '#/components/schemas/ParcelResponseFull' errors: type: object type: object - type: object title: Single parcel created response properties: parcel: $ref: '#/components/schemas/ParcelResponseFull' - type: object title: Batch of parcels created response properties: parcels: type: array uniqueItems: true items: $ref: '#/components/schemas/ParcelResponseFull' examples: CreateParcel: summary: Parcel created value: parcel: id: 3 name: John Doe company_name: Sendcloud contract: 1 address: Stadhuisplein 10 address_divided: street: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '0612345678' email: '' date_created: 01-01-2018 21:45:30 date_updated: 01-01-2018 21:47:12 date_announced: 01-01-2018 21:47:13 tracking_number: S0M3TR4Ck1NgNumB3r weight: '2.000' label: normal_printer: - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=0&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=1&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=2&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=3&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 label_printer: >- https://panel.sendcloud.sc/api/v2/label/label_printer/3172?hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 documents: - type: label size: a6 link: >- https://panel.sendcloud.sc/api/v2/parcels/3/documents/label status: id: 0 message: Ready to send data: {} country: iso_3: NLD iso_2: NL name: Netherlands shipment: id: 1 name: PostNL Standard 0-23kg carrier: code: postnl is_return: false total_order_value_currency: GBP total_order_value: '11.11' colli_uuid: 88296eff-595c-4c62-9b6f-075112bf54f6 collo_nr: 0 collo_count: 1 awb_tracking_number: null box_number: null length: null width: null height: null shipping_method_checkout_name: DHL Express Domestic reference: some_reference_123 CreateParcels: summary: Create multiple parcels with verbose errors value: failed_parcels: - parcel: id: 5 name: John Doe company_name: Sendcloud address_divided: street: Stadhuisplein 10 house_number: '' city: Eindhoven postal_code: 5611 EM telephone: '+31612345678' email: '' date_created: 01-01-2018 21:45:30 date_updated: 01-01-2018 21:45:30 date_announced: 01-01-2018 21:45:30 tracking_number: S0M3TR4Ck1NgNumB3r weight: '10.000' reference: some_reference_123 errors: house_number: - This field may not be blank. CreateParcelVerboseCarrier: summary: Create single parcel with carrier verbosity value: parcel: address: Stadhuisplein 10 address_2: '' address_divided: house_number: '10' street: Stadhuisplein carrier: code: dhl city: Eindhoven company_name: Sendcloud contract: 1 country: iso_2: NL iso_3: NLD name: Netherlands customs_invoice_nr: '' customs_shipment_type: 2 data: {} date_created: 05-06-2018 11:27:55 date_updated: 05-06-2018 11:27:55 date_announced: 05-06-2018 11:31:16 email: john@doe.com id: 22 insured_value: 0 label: label_printer: >- https://panel.sendcloud.sc/api/v2/labels/label_printer/22 normal_printer: - >- https://panel.sendcloud.sc/api/v2/labels/normal_printer/22?start_from=0 - >- https://panel.sendcloud.sc/api/v2/labels/normal_printer/22?start_from=1 - >- https://panel.sendcloud.sc/api/v2/labels/normal_printer/22?start_from=2 - >- https://panel.sendcloud.sc/api/v2/labels/normal_printer/22?start_from=3 name: John Doe order_number: '' shipment_uuid: 928a46f4-8891-4c09-8889-6d0f7c1dc01c parcel_items: [] postal_code: 5611 EM shipment: id: 8 name: Unstamped letter status: id: 11 message: Delivered documents: - type: cn23-default size: a4 link: >- https://panel.sendcloud.sc/api/v2/parcels/22/documents/cn23-default - type: commercial-invoice size: a6 link: >- https://panel.sendcloud.sc/api/v2/parcels/22/documents/commercial-invoice - type: cp71 size: a6 link: >- https://panel.sendcloud.sc/api/v2/parcels/22/documents/cp71 - type: label size: a6 link: >- https://panel.sendcloud.sc/api/v2/parcels/22/documents/cn23 telephone: '+31626262626' to_service_point: '217165' to_state: CA total_insured_value: 0 total_order_value_currency: GBP total_order_value: '11.11' tracking_number: S0M3TR4Ck1NgNumB3r tracking_url: >- http://localhost:8000/?carrier=dhl&code=S0M3TR4Ck1NgNumB3r&destination=NL&lang=en-us&source=NL&type=parcel&verification=5642CV weight: '1.000' type: parcel colli_uuid: ab3ecb5e-61b6-42b1-8034-7c6befdeaa63 collo_nr: 0 collo_count: 1 awb_tracking_number: null box_number: null length: null width: null height: null shipping_method_checkout_name: '' external_reference: 'null' reference: some_reference_123 errors: non_field_errors: - >- PostNL service error: The domain for email address johndoe@email.com seems to be invalid. '400': description: Carrier returned an error content: application/json: schema: $ref: '#/components/schemas/CreateParcelError' examples: Failed: summary: Failed to create parcel value: error: code: 400 message: >- non_field_errors: 'PostNL service error: The domain for email address johndoe@email.com seems to be invalid' request: api/v2/parcels description: >- Create one or multiple parcels, either to be immediately announced to the carrier, or to be created for later announcement. parameters: - $ref: '#/components/parameters/SendcloudPartnerId' - schema: type: string enum: - verbose-carrier - verbose in: query name: errors description: >- When making an API request, the errors query parameter can be used to determine the type of errors that should be included in the response. If `verbose` is specified, the response will only contain errors that Sendcloud has validated. These errors may include shipment details such as invalid addresses or missing postal codes. On the other hand, if `verbose-carrier` is specified, the response will include errors originating from the carriers side of the shipping process. These errors may result from technical or validation problems, such as connection failures or issues with the carrier`s systems, that prevent the shipment from being processed. More details are described on the page [Handling parcel errors](/docs/shipping/handling-parcel-errors). requestBody: content: application/json: schema: oneOf: - title: Create a single parcel properties: parcel: $ref: '#/components/schemas/ParcelCreation' - title: Create a batch of parcels properties: parcels: type: array items: $ref: '#/components/schemas/ParcelCreation' examples: CreateParcel: summary: Create a single parcel value: parcel: name: John Doe company_name: Sendcloud address: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '+31612345678' request_label: true email: john@doe.com data: {} country: NL shipment: id: 8 weight: '10.000' order_number: '1234567890' insured_value: 0 total_order_value_currency: GBP total_order_value: '11.11' quantity: 1 shipping_method_checkout_name: DHL Express Domestic CreateParcels: summary: Create a batch of parcels value: parcels: - name: John Doe company_name: Sendcloud address: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '+31612345678' request_label: true email: john@doe.com data: {} country: NL shipment: id: 8 weight: '10.000' order_number: '1234567890' insured_value: 0 total_order_value_currency: EUR total_order_value: '11.11' quantity: 1 - name: John Doe company_name: Sendcloud address: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '+31612345678' request_label: true email: john@doe.com data: {} country: NL shipment: id: 1 weight: '8.000' order_number: '1234567891' insured_value: 0 total_order_value_currency: GBP total_order_value: '99.99' quantity: 1 shipping_method_checkout_name: DPD Classic put: tags: - Parcels summary: Update a parcel operationId: sc-public-v2-scp-put-update_a_parcel x-mint: href: /api/v2/parcels/update-a-parcel content: >- **API v2 is entering maintenance mode.** New users should start with API v3 to access our latest features and improved performance. Already using v2? Don't worry, your current integration remains fully functional. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). You'll need to include the `parcel_id` of the parcel you wish to update, which you can retrieve via the [Retrieve all parcels](/api/v2/parcels/retrieve-parcels) endpoint. Note that when updating a parcel with a `quantity` higher than 1 (e.g. a multicollo shipment), setting `request_label=true` is not allowed, since multiple parcels will be returned. Once a parcel is announced and a label is created, it's not possible to make further changes via this endpoint. ## Change address or parcel details If you need to make adjustments to details in the original parcel, such as customer address details, shipping method, etc., you can do so by adding any of the `POST` request parameters listed under the [Create a parcel or parcels](/api/v2/parcels/create-a-parcel-or-parcels) endpoint. These request parameters must be nested under a `parcel` object. ## Create a shipping label for a parcel which is not yet announced Use this endpoint to update the `request_label: false` parameter to `true`for parcels which you chose not to announce at the time of parcel creation, and which now need a shipping label. ```json { "parcel": { "id": 1, "request_label": true } } ``` The shipping label will be announced and can be downloaded via an endpoint in the [Labels API](/api/v2/labels) or [Parcel documents API](/api/v2/parcel-documents). security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] responses: '200': description: OK content: application/json: schema: type: object properties: parcel: type: array items: $ref: '#/components/schemas/ParcelResponseFull' examples: ParcelUpdated: summary: Parcel updated value: parcel: - id: 3 name: Anna Tester company_name: Summer Co address: Stadhuisplein 10 address_divided: street: Stadhuisplein house_number: '10' city: Eindhoven postal_code: 5611 EM telephone: '0612345678' email: test@email.com date_created: 01-01-2018 21:45:30 date_updated: 01-01-2018 21:45:31 date_announced: 01-01-2018 21:45:31 tracking_number: S0M3TR4Ck1NgNumB3r weight: '2.000' label: normal_printer: - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=0&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=1&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=2&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 - >- https://panel.sendcloud.sc/api/v2/label/normal_printer/3172?start_from=3&hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 label_printer: >- https://panel.sendcloud.sc/api/v2/label/label_printer/3172?hash=bbfd669ee9ebb19408b85b33d181a50040fd9bc4 customs_declaration: {} status: id: 0 message: Ready to send data: {} country: iso_2: NL iso_3: NLD name: Netherlands shipment: id: 1 name: PostNL Standard 0-23kg carrier: code: postnl colli_uuid: ab3ecb5e-61b6-42b1-8034-7c6befdeaa63 collo_nr: 0 collo_count: 1 reference: some_reference_123 '404': description: Not Found description: >- Update a parcel which has **not yet been announced**, either to make changes to the original parcel data, or to request a shipping label if one hasn't yet been created. requestBody: content: application/json: schema: type: object properties: parcel: $ref: '#/components/schemas/ParcelCreation' examples: UpdateParcel: summary: Update a single parcel value: parcel: id: 3 name: Sendcloud Userß address: Stadhuisplein 10 postal_code: 5611 EM city: Eindhoven country: NL company_name: Summer Co /parcels/{id}: parameters: - schema: type: integer name: id in: path required: true description: The id of the parcel you want to retrieve get: summary: Retrieve a parcel tags: - Parcels responses: '200': description: OK content: application/json: schema: description: '' type: object properties: parcel: $ref: '#/components/schemas/ParcelResponseFull' '404': description: Not Found operationId: sc-public-v2-scp-get-parcel_by_id security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] x-mint: href: /api/v2/parcels/retrieve-a-parcel content: |- **API v2 is entering maintenance mode.** New users should start with API v3 to access our latest features and improved performance. Already using v2? Don't worry, your current integration remains fully functional. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). description: Retrieve a specific parcel by its `id`. parameters: [] /parcels/{id}/cancel: parameters: - schema: type: string name: id in: path required: true description: ID of the parcel post: tags: - Parcels summary: Cancel a parcel operationId: sc-public-v2-scp-post-cancel_specific security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] x-mint: href: /api/v2/parcels/cancel-a-parcel content: >- **API v2 is entering maintenance mode.** New users should start with API v3 to access our latest features and improved performance. Already using v2? Don't worry, your current integration remains fully functional. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). You can use this endpoint to: 1. **Cancel** an announced parcel; or, 2. **Delete** an unannounced parcel ## Cancelling a parcel When you **cancel** a parcel which has already been announced (has a shipping label attached to it), you will still be able to find it via the `parcel_id` and the [Retrieve a parcel](/api/v2/parcels/retrieve-a-parcel) endpoint. In the Sendcloud platform, it will appear in your **Cancelled labels** overview. **Insurance Notice**: If you proceed to ship a parcel that was initially cancelled, the parcel's insurance coverage will become void, and any insurance claims will not be valid for that shipment. After 42 days, it's no longer possible to cancel a parcel, even if it hasn't been shipped. ### Conditions for label cancellation It's not always possible to cancel a parcel which has already been announced. As a result, cancellation is not guaranteed and may be asynchronous depending on the state of the parcel. When you send a cancellation request via this endpoint, the response will indicate the status of the cancellation request. Each carrier has different cancellation deadlines. Some carriers do not accept cancellation requests regardless of whether or not the label is cancelled within the deadline. You can find more information about cancellation deadlines in our [help center](https://support.sendcloud.com/hc/en-us/articles/360025143991-How-do-I-cancel-my-shipment-). ## Deleting a parcel When you **delete** a parcel which hasn't been announced, the parcel will be removed from the Sendcloud system and you will no longer be able to locate it via the parcel `id`. You will need to create the parcel again if you want to announce it at a later date. responses: '200': description: |- Cancelled - The parcel has been cancelled if all valid conditions apply. content: application/json: schema: $ref: '#/components/schemas/CancelParcelStatus' examples: Cancelled: summary: Successfully Cancelled value: status: cancelled message: Parcel has been cancelled '202': description: >- Parcel cancelation has been queued - The parcel having the status of ready to send (1000) will be watched for 14 days and if nothing nothing has changed to the parcel, it will be cancelled. '400': description: >- Cancellation rejected - When parcel has the status of 2000 which means it is already cancelled. - After period of 42 days of the parcel being announced we cannot cancel it and will let you know about it through a response message. - When parcel has the status ode (11) saying that it’s delivered it will not do anything to the parcel and your request will be rejected. '404': description: Not Found '410': description: >- Deleted - Happens when the parcel announcement has failed, the parcel status contains id of 1002 and you try to cancel it. description: >- Cancel an announced parcel (if supported by the carrier) or delete an unannounced parcel. /parcels/{id}/return_portal_url: parameters: - schema: type: string name: id in: path required: true description: ID of the parcel get: summary: Retrieve a return portal URL tags: - Parcels responses: '200': description: OK content: application/json: schema: description: '' type: object properties: url: type: string minLength: 1 required: - url examples: ReturnPortalURL: summary: Returns portal URL value: url: http://mybrand.returns-portal.com/initiate/ '404': description: Not Found operationId: sc-public-v2-scp-get-return_portal_url security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] x-mint: href: /api/v2/parcels/retrieve-a-return-portal-url content: >- **API v2 is entering maintenance mode.** New users should start with API v3 to access our latest features and improved performance. Already using v2? Don't worry, your current integration remains fully functional. Read more about [maintenance mode](/docs/getting-started/api-version-guide), or check out the [migration guide for API v3](/docs/getting-started/migration-guidelines-for-api-v3). The URL which is retrieved will link directly to the parcel in the Sendcloud Return portal, so a **return parcel** can be created immediately based on the outgoing shipment. If no Return portal is configured, or if no brand is connected to the parcel, this endpoint will return an error response with a 404 status code. description: >- Check which of your branded return portals is associated with a specific parcel using the parcel's `id`. components: securitySchemes: HTTPBasicAuth: type: http description: >- Basic Authentication using API key and secrets is currently the main authentication mechanism. scheme: basic OAuth2ClientCreds: type: oauth2 description: >- OAuth2 is a standardized protocol for authorization that allows users to share their private resources stored on one site with another site without having to provide their credentials. OAuth2 Client Credentials Grant workflow. This workflow is typically used for server-to-server interactions that require authorization to access specific resources. flows: clientCredentials: tokenUrl: https://account.sendcloud.com/oauth2/token/ scopes: api: Default OAuth scope required to access Sendcloud API. schemas: CreateParcelError: description: Error returned during parcel creation type: object title: Parcel Creation Error Object properties: error: type: object properties: code: type: integer description: Error code message: type: string description: Concatenated to one string array of errors request: type: string description: URL of the Sendcloud'd endpoint which returned an error CarrierErrors: description: Errors object for a parcel type: object title: Carrier Errors Object properties: non_field_errors: type: array items: type: string Documents: title: Documents Object type: object properties: type: type: string description: The type of the document. See the list below for available types. enum: - label - cp71 - cn23 - commercial-invoice - cn23-default size: type: string description: 'The paper size of the document, you can expect: a4 and a6.' link: type: string description: >- A link to the document, which allows downloading of the document in PDF, PNG, and ZPL. Learn more about the [endpoint](/api/v2/integrations/retrieve-a-list-of-shipments). Send a GET request to https://panel.sendcloud.sc/api/v2/parcels/{parcelID}/documents/label using your parcel ID. You can pick the resolution in the parameters of the request. The default value is 203 dpi. description: Documents object for a parcel Status: title: Status Object type: object properties: id: type: integer message: type: string description: Status object for a parcel Shipment: title: Shipment Object type: object properties: id: type: integer description: ID of shipping method name: type: string description: Name of shipping method required: - id description: Shipping method object for a parcel Label: title: Label Object type: object description: Label object for a parcel properties: label_printer: type: string normal_printer: type: array items: type: string Country: title: Country Object description: Country object for a parcel type: object properties: iso_2: type: string iso_3: type: string name: type: string AddressDivided: title: Address Divided Object type: object properties: house_number: type: string street: type: string description: Address_divided object for a parcel ParcelCreation: description: Parcel object for a parcel creation type: object title: Parcel Creation Object properties: id: type: integer minimum: 1 description: Identifier of the parcel (ignored when creating) name: type: string description: Name of the recipient company_name: type: string description: Company name of the recipient the parcel will be shipped to contract: type: integer description: >- Id of the contract that you would like to use to create the parcel with. minimum: 1 address: type: string description: Address of the recipient address_2: type: string description: Additional address information, e.g. 2nd level house_number: type: string description: House number of the recipient city: type: string description: City of the recipient postal_code: type: string description: Zip code of the recipient telephone: type: string description: Phone number of the recipient request_label: type: boolean description: > Should the parcel request a label. This property used to be called requestLabel. We kept it backwards compatible by still accepting the previous name. email: type: string minLength: 1 description: E-mail address of the recipient data: type: object description: >- This field previously served to store a `pakjegemak` key; however, the data provided in this field is no longer stored or used anymore. Please use `to_service_point` property to use service points. deprecated: true nullable: true country: type: string minLength: 1 description: Country of the recipient shipment: $ref: '#/components/schemas/Shipment' weight: type: string minLength: 1 description: >- Weight of the parcel in kilograms, if none given the default weight from settings is used. If you provide no weight in your request we’ll use the default weight set in your settings. order_number: type: string description: Order number of your order insured_value: type: integer description: > This field is mutually exclusive with the `total_insured_value`. Amount of Sendcloud Insurance to add. This must be a positive value, larger than 2. If a value between 0 and 2 is sent, it is rounded up to 2. The maximum insurance is 5000. This field does not take the carrier provided shipping method insurance into consideration.

Note: this value is an integer. If decimal numbers are sent, these are rounded up to the nearest whole number. Example: sending 72.35 results in a `insured_value` of 73.

Note: For multicollo shipments, where the `quantity` is greater than 1, the specified insurance amount applies per parcel, not to the shipment as a whole. For example, if you ship 5 parcels and set the `insured_value` to 500 EUR/GBP, each parcel will be insured for 500 EUR/GBP. This results in a total shipment coverage of 5 x 500 = 2500 EUR/GBP. total_order_value_currency: type: string description: >- The currency of the total order value. Validated against a format of “XYZ” (ISO 4217). total_order_value: type: string description: >- The value paid by the buyer (via various payment methods supported by the shop(cash on delivery, pre-paid or post-paid), it will also be used for the cash on delivery amount for example “99.99”. quantity: type: integer description: >- Create a multi-collo shipment. Default value: 1. Minimal value: 1. Maximal value: 20. When request_label is true, it is required to use the Create multiple parcels method, since multiple parcels will be returned. When request_label is false, the number of parcels will be set according to this value in the incoming order overview. shipping_method_checkout_name: type: string description: Shipping method name selected by buyer during the checkout to_post_number: type: string description: Code required in case of PO Box or post locker delivery country_state: type: string description: >- Code of the state (e.g. NY for New York) or province (e.g. RM for Rome). Destinations that require this field are USA, Canada, Italy and Australia. Errors related to this field will mention the to_state field. sender_address: type: integer description: > ID of the SenderAddress **Keep in mind that this id will not be saved / reflected in the created order (Incoming Orders View / Pack&Go) in case `request_label` is `false`.** customs_invoice_nr: type: string description: >- Customs invoice number. Deprecated in favor of the `customs_information` object. deprecated: true customs_shipment_type: type: integer enum: - 0 - 1 - 2 - 3 - 4 description: > Customs shipment type. Deprecated in favor of the `customs_information` object. * `0` - Gift * `1` - Documents * `2` - Commercial Goods * `3` - Commercial Sample * `4` - Returned Goods deprecated: true external_reference: type: string nullable: true description: >- A reference to be assigned to this parcel. Must be unique across parcels. This field is used to create idempotence. reference: type: string nullable: true description: >- A reference to be assigned to this parcel. Multiple parcels can have the same reference. default: '0' to_service_point: type: integer description: ID of the selected service point total_insured_value: type: integer description: > This field is mutually exclusive with the `insured_value`. Amount of total insurance to add. This must be a positive value, larger than 2. If a value between 0 and 2 is sent, it is rounded up to 2. The maximum insurance is 5000 plus your shipping method’s insurance depending on the carrier. This field works by automatically calculating how much Sendcloud Insurance you’d need to add plus your shipping method’s insurance so it matches the exact value you’ve given. As an example, DPD insures all their shipments by 520€ by default. If you pass the `total_insured_value`: 5000 your shipment will have a total insurance coverage of 5000€, but you’re only paying for 4480€.

Note: this value is an integer. If decimal numbers are sent, these are rounded up to the nearest whole number. Example: sending 72.35 results in a `total_insured_value` of 73.

Note: For multicollo shipments, where the `quantity` is greater than 1, the specified insurance amount applies per parcel, not to the shipment as a whole. For example, if you ship 5 parcels and set the `insured_value` to 500 EUR/GBP, each parcel will be insured for 500 EUR/GBP. This results in a total shipment coverage of 5 x 500 = 2500 EUR/GBP. shipment_uuid: type: string description: >- Unique identifier that we assign to your shipment within the Sendcloud system. parcel_items: type: array description: >- List of items the order contains. Check the structure of a parcel_item in the “Parcel_items” section (remember, it’s a list of them!). items: $ref: '#/components/schemas/parcel-item' is_return: type: boolean description: Set to true if this parcel is a return length: type: string description: >- Parcel length in centimeters (will be used for volumetric weight calculation) width: type: string description: >- Parcel width in centimeters (will be used for volumetric weight calculation) height: type: string description: >- Parcel height in centimeters (will be used for volumetric weight calculation). Note: You must provide length, width and height all at once for calculating volumetric weight or passing them as-is to carriers that require these properties Parcel height in centimeters (will be used for volumetric weight calculation). Note: You must provide length, width and height all at once for calculating volumetric weight or passing them as-is to carriers that require these properties request_label_async: type: boolean description: >- Makes sure that the label is requested asynchronously. The parcel is returned, but without label. You will need to poll for status changes on the parcel. apply_shipping_rules: type: boolean description: >- When set to True configured shipping rules will be applied before creating the label and announcing the Parcel from_name: type: string description: Name of the sender (when creating a return parcel) from_company_name: type: string description: >- Company name of the sender the parcel will be shipped from (when creating a return parcel) from_address_1: type: string description: Address of the sender (when creating a return parcel) from_address_2: type: string description: >- Additional address information of the sender (when creating a return parcel) from_house_number: type: string description: House number of the sender (when creating a return parcel) from_city: type: string description: City of the sender (when creating a return parcel) from_postal_code: type: string description: Zip code of the sender from_country: type: string description: Country of the sender (when creating a return parcel) from_telephone: type: string description: Phone number of the sender (when creating a return parcel) from_email: type: string description: E-mail address of the sender (when creating a return parcel) from_vat_number: type: string description: >- VAT number of the sender (when creating a return parcel). Deprecated in favor of the `customs_information` object. from_eori_number: type: string description: >- EORI number of the sender (when creating a return parcel). Deprecated in favor of the `customs_information` object. deprecated: true from_inbound_vat_number: type: string description: >- GB VAT number - needed for shipments from Europe to GB (when creating a return parcel). Deprecated in favor of the `customs_information` object. deprecated: true from_inbound_eori_number: type: string description: >- GB EORI number - needed for shipments from Europe to GB (when creating a return parcel). Deprecated in favor of the `customs_information` object. deprecated: true from_ioss_number: type: string description: >- IOSS(Import One-Stop Shop) number of the sender (when creating a return parcel). Deprecated in favor of the `customs_information` object. deprecated: true customs_information: $ref: '#/components/schemas/ParcelCustomsInformation' required: - name - address - city - postal_code - country ParcelResponseShort: description: Parcel object model type: object title: Parcel Object properties: address: type: string address_2: type: string description: > An apartment or floor number that has been extracted from general address input. address_divided: $ref: '#/components/schemas/AddressDivided' carrier: type: object properties: code: $ref: '#/components/schemas/carrier' city: type: string company_name: type: string contract: type: integer minimum: 1 description: Id of the contract that was used to create the parcel. nullable: true country: $ref: '#/components/schemas/Country' customs_invoice_nr: type: string description: Customs invoice number customs_shipment_type: type: integer description: > Customs shipment type. Deprecated in favor of the `customs_information` object. * `0` - Gift * `1` - Documents * `2` - Commercial Goods * `3` - Commercial Sample * `4` - Returned Goods enum: - 0 - 1 - 2 - 3 - 4 nullable: true deprecated: true data: type: object date_created: type: string date_updated: type: string date_announced: type: string email: type: string description: >- An email address of the person this parcel is supposed to be delivered to. id: type: integer insured_value: type: integer label: $ref: '#/components/schemas/Label' name: type: string order_number: type: string shipment_uuid: type: string parcel_items: type: array items: $ref: '#/components/schemas/parcel-item' postal_code: type: string external_reference: type: string nullable: true description: >- A reference to be assigned to this parcel. Must be unique across parcels. This field is used to create idempotence. reference: type: string nullable: true description: >- A reference to be assigned to this parcel. Multiple parcels can have the same reference. default: '0' shipment: $ref: '#/components/schemas/Shipment' status: $ref: '#/components/schemas/Status' documents: type: array uniqueItems: true description: >- An array of documents. A parcel can contain multiple documents, for instance labels and a customs form. This field returns an array of all the available documents for this parcel. items: $ref: '#/components/schemas/Documents' telephone: type: string to_service_point: type: string description: An id of service point to which the shipment is going to be shipped. to_state: type: string description: >- Represents the state or province of a country. Countries that need a state are USA, Canada, Italy and Australia. e.g. America’s city of Los Angeles belongs to the California state: CA. Shipments to Italy need a province. e.g. Italy’s city of Rome belongs to Roma province: RM. total_insured_value: type: integer total_order_value_currency: type: string total_order_value: type: string tracking_number: type: string description: Tracking number of the shipment. tracking_url: type: string description: tracking url of this shipment. weight: type: string type: type: string description: >- Returns either ‘parcel’ or ‘letter’ by which you can determine the type of your shipment. enum: - parcel - letter deprecated: true nullable: true colli_uuid: type: string collo_nr: type: integer description: >- A number indicating the collo number within a shipment. For a non-multi-collo shipment, this value will always be 0. In a multi-collo shipment with 3 collos, this number will range from 0 to 2. collo_count: type: integer description: >- A number indicating the number of collos within a shipment. For non-multi-collo shipments, this value will always be 1. is_return: type: boolean description: Indicates if the parcel correspond to a return. awb_tracking_number: type: string description: >- Deutsche Post Global Mail only. This indicates the air waybill number of this box of Global Mail parcels. This will be only set once Finalize box has been called. nullable: true box_number: type: integer description: >- Deutsche Post Global Mail only. This indicates the box to which this parcel belongs. This will be only set for Global Mail parcels. nullable: true length: type: string description: >- Parcel length in centimeters (will be used for volumetric weight calculation). Examples: “48” or “52.3” nullable: true width: type: string description: >- Parcel width in centimeters (will be used for volumetric weight calculation). Examples: “48” or “52.3” nullable: true height: type: string description: >- Parcel height in centimeters (will be used for volumetric weight calculation). Examples: “48” or “52.3” nullable: true shipping_method_checkout_name: type: string description: Shipping method name selected by buyer during the checkout customs_declaration: type: object deprecated: true description: >- An object with available printers that lists available links to the created customs declaration form. (deprecated in favour of documents). note: type: string description: >- This field can be used to add additional notes regarding an order. The notes will not be displayed on a label, but will be displayed on both the Packing slips & Picking lists which you can use for Pack & Go feature. The value will not be shared with carriers. It may be used for packing instructions, such as "gift" or "do not send before monday". nullable: true errors: $ref: '#/components/schemas/CarrierErrors' required: - id ParcelResponseFull: allOf: - $ref: '#/components/schemas/ParcelResponseShort' - properties: customs_information: $ref: '#/components/schemas/ParcelCustomsInformation' type: object ParcelCustomsInformation: title: ParcelCustomsInformation type: object description: >- Optional customs information that should be provided for international parcels. This information is used for generating customs documents. example: customs_invoice_nr: INV-123 customs_shipment_type: 2 export_type: private invoice_date: '2023-08-24' discount_granted: '14.99' freight_costs: '4.65' insurance_costs: '3.60' other_costs: '1.20' general_notes: >- Compliance: Goods comply with international safety standards (CE certified). additional_declaration_statements: - >- With reference to the above shipment, I understate that the content is not made of leather parts of animal species protected by the Washington Convention. - >- I solemnly declare that the contents of this document represent a true and accurate account of the events as they occurred. I acknowledge my responsibility for the information presented herein and understand that any misrepresentation or falsification may result in legal consequences or other penalties as applicable. importer_of_record: name: John Doe company_name: ImporterCo address_1: Maple Avenue house_number: '123' postal_code: '90210' city: Springfield country_code: US country_state: US-MA telephone: '+15551234567' email: info@importer-of-record-example.com tax_numbers: sender: - name: VAT country_code: NL value: NL123456789B01 - name: EORI country_code: NL value: NL123456789 receiver: - name: EIN country_code: US value: '123456789' importer_of_record: - name: EIN country_code: US value: '987654321' return_data: return_postal_code: 1111 AA outbound_tracking_number: JT1234567890 outbound_shipment_date: '2023-08-14' outbound_carrier_name: UPS properties: customs_invoice_nr: type: string description: Customs invoice number example: INV-123 customs_shipment_type: type: integer description: | Customs shipment type * `0` - Gift * `1` - Documents * `2` - Commercial Goods * `3` - Commercial Sample * `4` - Returned Goods enum: - 0 - 1 - 2 - 3 - 4 example: 2 export_type: type: string description: >- Export type documentation serves to categorize international shipments into three primary classifications: Private exports, intended for personal use; Commercial B2C exports, directed towards individual consumers; and Commercial B2B exports, involving business-to-business transactions. These distinctions facilitate adherence to regulatory requirements and ensure the orderly movement of goods across international boundaries. enum: - private - commercial_b2c - commercial_b2b default: commercial_b2c example: private invoice_date: type: string format: date description: >- The date when the commercial invoice for the goods was issued (ISO 8601). If not provided, the announcement date will be used by default. discount_granted: type: string description: Shipper's granted discount amount to user. example: '14.99' freight_costs: type: string description: >- Charges associated with the transportation of the goods to their destination paid by the receiver. example: '4.65' insurance_costs: type: string description: >- The costs of insurance coverage for the goods during transit paid by the receiver. example: '3.60' other_costs: type: string description: >- Additional costs or charges associated with the shipment that are not covered by freight and insurance paid by the receiver. example: '1.20' general_notes: type: string description: >- Exporter or shipper can include any additional information or special instructions related to the goods being shipped. This section is used to provide details that may not be covered in other parts of the invoice but are relevant for customs clearance. maxLength: 500 example: >- Compliance: Goods comply with international safety standards (CE certified). additional_declaration_statements: type: array description: >- List of additional declaration statements. Each statement may contain specific details about the nature of the goods being shipped, their origin, or any additional information required by customs authorities. The content of an additional declaration statement can vary based on the requirements of the importing and exporting countries, as well as the nature of the goods being transported. maxItems: 100 items: type: string example: >- With reference to the above shipment, I understate that the content is not made of leather parts of animal species protected by the Washington Convention. maxLength: 1024 importer_of_record: type: object description: >- Importer of Record (IOR) information. A customs-connected record importer specializes in importing goods and managing the associated customs documentation. If not provided, the receiver's address will be used instead. properties: name: type: string description: Name of IOR maxLength: 75 company_name: type: string description: IOR company name maxLength: 50 address_1: type: string description: Address of IOR maxLength: 150 address_2: type: string description: Additional address information, e.g. 2nd level maxLength: 150 house_number: type: string description: IOR house number maxLength: 20 city: type: string description: IOR city maxLength: 30 postal_code: type: string description: IOR postal code maxLength: 12 country_code: type: string description: IOR country. ISO 3166-1 alpha-2 code maxLength: 2 country_state: type: string description: >- Code of the state (e.g. NY for New York) or province (e.g. RM for Rome). Destinations that require this field are USA, Canada, Italy and Australia. Format ISO-3166-2. example: IT-RM maxLength: 14 telephone: type: string description: IOR phone number in E.164 format maxLength: 20 email: type: string description: IOR email maxLength: 320 required: - name - address_1 - city - postal_code - country_code tax_numbers: type: object description: >- Identification numbers and codes related to sender, receiver and importer of record provider. properties: sender: type: array description: Sender's list of identification number objects maxItems: 100 items: $ref: '#/components/schemas/TaxNumber' receiver: type: array description: Receiver's list of identification number objects maxItems: 100 items: $ref: '#/components/schemas/TaxNumber' importer_of_record: type: array description: Importer of record's list of identification number objects maxItems: 100 items: $ref: '#/components/schemas/TaxNumber' required: - sender - receiver - importer_of_record return_data: type: object description: Additional information that should be provided for return parcels. properties: return_postal_code: type: string maxLength: 12 description: >- The Postcode of the customer to whom the parcel was originally shipped. outbound_tracking_number: type: string description: Tracking number of outbound shipment example: BE123456789 maxLength: 40 outbound_shipment_date: type: string format: date description: Data of outbound shipment example: '2020-11-27' outbound_carrier_name: type: string description: The name of the carrier used for outbound shipment example: DHL maxLength: 50 required: - customs_invoice_nr - customs_shipment_type CancelParcelStatus: title: Cancel Parcel Status Object type: object properties: status: type: string minLength: 1 message: type: string minLength: 1 required: - status - message carrier: type: string title: Carrier Code enum: - amazon - bol - bpost - brt - budbee - chronopost - cirro - colisprive - colissimo - correos - correos_express - ctt_express - dbschenker - delivengo - dhl - dhl_2_man_handling - dhl_de - dhl_ecommerce - dhl_express - dhl_parcel_gb - dhl_parcel_iberia - dp - dpd - dpd_at - dpd_fr - dpd_gb - dpd_local - evri_international - fadello - fairsenden - fedex - fedexcrossborder - fietskoeriers - geodis - glovo - gls_de - gls_es - gls_eu - gls_it - gls_nl - hermes_at - hermes_c2c_gb - hermes_de - hermes_gb - hived - homerr - hurby - inpost_es - inpost_gb - inpost_it - inpost_pl - lettresuivie - mhi - mondial_relay - mrw - nacex - paack - parcelforce - plx - postat - poste_italiane - poste_it_delivery - postnl - postnl_fulfilment - postnl_large - postnord - rjp - rjpv2 - royal_mail - sandd - sendcloud - seur - skymail - spring - storeshippers - tipsa - tnt_it - transforce - trunkrs - ups - van_straaten - viatim - yodel description: A carrier represented by a Sendcloud code example: postnl dangerous-goods: title: DangerousGoods type: object description: Hazardous materials information for items. properties: chemical_record_identifier: type: string nullable: true description: Chemical record identifier for the dangerous goods regulation_set: type: string enum: - IATA - ADR description: Regulation set governing the dangerous goods packaging_type_quantity: type: string nullable: true description: Quantity of packaging type packaging_type: type: string nullable: true description: Type of packaging used packaging_instruction_code: type: string nullable: true description: Packaging instruction code id_number: type: string nullable: true description: UN identification number class_division_number: type: string nullable: true description: Hazard class and division number quantity: type: string nullable: true description: Quantity of dangerous goods unit_of_measurement: type: string enum: - KG - G - L - ML description: Unit of measurement for dangerous goods quantity proper_shipping_name: type: string nullable: true description: Proper shipping name as defined by regulations commodity_regulated_level_code: type: string enum: - LQ - EQ description: Commodity regulated level code transportation_mode: type: string enum: - Highway - Ground - PAX - CAO description: Mode of transportation emergency_contact_name: type: string nullable: true description: Name of emergency contact person emergency_contact_phone: type: string nullable: true description: Phone number of emergency contact adr_packing_group_letter: type: string enum: - I - II - III description: ADR packing group classification local_proper_shipping_name: type: string nullable: true description: Local proper shipping name transport_category: type: string nullable: true description: Transport category for ADR regulations tunnel_restriction_code: type: string nullable: true description: Tunnel restriction code weight_type: type: string enum: - Net - Gross description: Type of weight measurement parcel-item: title: Parcel Item Object type: object description: The items of a Parcel properties: hs_code: type: string description: >- Harmonized System Code [Wikipedia Link](https://en.wikipedia.org/wiki/Harmonized_System). Providing a complete HS code with more characters increases the delivery rate. maxLength: 12 weight: type: string description: Weight of a single item in kilograms. quantity: type: integer minimum: 1 description: Quantity of items shipped. description: type: string description: Description of the item. maxLength: 255 origin_country: type: - string - 'null' description: >- ISO-2 code of the country where the items were originally produced. [External Link](http://www.nationsonline.org/oneworld/country_code_list.htm). value: type: number description: Value of a single item. example: 10.5 sku: type: string description: The SKU of the product. maxLength: 255 product_id: type: string description: The internal ID of the product. maxLength: 255 properties: type: object description: >- The list of properties of the product. Used as a JSON object with {‘key’: ‘value’}. item_id: type: - string - 'null' maxLength: 255 description: External ID of the item generated by a shop system or similar. return_reason: type: - integer - 'null' description: >- The return reason identifier matching the ones provided from Sendcloud. Only applicable for returns. minimum: 1 return_message: type: - string - 'null' description: >- Optional a message relating to the return. Only applicable for returns. mid_code: type: string description: >- Code to identify the manufacturer of the product. It is required when shipping to the US and is used for generating commercial invoice. maxLength: 15 example: US1234567 material_content: type: string description: Composition of the items. Used for commercial invoice generation. maxLength: 255 example: 100% Cotton intended_use: type: string description: >- Text that identifies the Intended Use of the item. This will be used to classify the item based on the new ICS2 system. Used for commercial invoice generation. maxLength: 255 example: Personal use manufacturer_product_id: type: - string - 'null' description: >- A manufacturer or product supplier's unique code, assigned to an individual product. maxLength: 70 example: ABC-12345 manufacturer_product_id_std: type: - string - 'null' description: >- A standardized manufacturer product identifier assigned by a global industry standard body (e.g. GTIN). Provide only if one exists for the product. maxLength: 70 example: '01234567890128' dangerous_goods: $ref: '#/components/schemas/dangerous-goods' dds_reference: title: DDS Reference type: - string - 'null' description: >- The DDS (Due Diligence Statement) reference number associated with the item, if applicable. See EUDR system for more details. example: 25FIYPEK0A7573 taric_doc_code: title: TARIC document code type: - string - 'null' description: >- TARIC document codes are specific alphanumeric codes used in EU customs declarations (Box 44) to identify required supporting documents, certificates, or conditions for a product, like health certificates (e.g., 3200), origin proofs (e.g., EUR.1), or special authorizations (e.g., C716 for due diligence) for simplified procedures, ensuring compliance with EU trade rules for various goods. example: Y142 required: - hs_code - weight - quantity - description - value TaxNumber: title: Tax Number Object description: >- Identification numbers and codes used in different contexts. These identifiers are used for taxation, customs, business registration, and other purposes, depending on the country and the specific regulatory requirements. Depending on these requirements you may need to pass one or several numbers related to sender, receiver or importer of record provider. These numbers and codes will be included into final Customs documents. type: object properties: name: type: string example: EORI description: | Tax number abbreviation * VAT - Value-Added Tax → VOEC number for Norway should be shared here as advised by the [Norwegian Tax Authorities](https://www.skatteetaten.no/globalassets/bedrift-og-organisasjon/voec/sending-and-marking-goods-through-postal-services-and-transporters.pdf) * EIN - Employer Identification Number * GST - Goods and Service Tax * SSN - Social Security Number * EORI - Economic Operators Registration and Identification for the European Union * DUN - Data Universal Numbering System * FED - Federal Tax ID * STA - State Tax ID * CNP - Brazil CNPJ/CPF Federal Tax * IE - Brazil type IE/RG Federal Tax * INN - Russia bank details section INN * KPP - Russia bank details section KPP * OGR - Russia bank details section OGRN * OKP - Russia bank details section OKPO * IOSS - SDT or Overseas Registered Supplier or Import One-Stop-Shop or GB VAT (foreign) registration or AUSid GST Registration or VAT on E-Commerce * FTZ - Free Trade Zone ID * DAN - Deferment Account Duties Only * TAN - Deferment Account Tax Only * DTF - Deferment Account Duties, Taxes and Fees Only * RGP - EU Registered Exporters Registration ID * DLI - Driver's License * NID - National Identity Card - A PID (Personal Identification Number) should be provided as NID (National Identity Card). * PAS - Passport * MID - Manufacturer ID * UKIMS - UK Internal Market Scheme -> customs clearance for shipping from Great Britain to Northern Ireland under the Windsor Framework, for more information see [Windsor Framework](https://www.gov.uk/government/publications/the-windsor-framework) enum: - VAT - EIN - GST - SSN - EORI - DUN - FED - STA - CNP - IE - INN - KPP - OGR - OKP - IOSS - FTZ - DAN - TAN - DTF - RGP - DLI - NID - PAS - MID - UKIMS country_code: type: string example: NL description: Issuing country code (ISO 3166-1 alpha-2 code) maxLength: 2 value: type: string example: NL123456789B01 description: Tax number itself maxLength: 100 required: - name - country_code - value parameters: SendcloudPartnerId: in: header name: Sendcloud-Partner-Id description: >- If you are an official [Sendcloud Tech Partner](https://www.sendcloud.com/ecosystem/), send your unique Sendcloud Partner UUID as a request header for the system to recognize you. The header is not required but if it is set, the system will check it. An unknown or invalid UUID will cause a 400 error. schema: type: string