# Return

## Create Light Return Shipment

> Creates a return shipment after the original order has been delivered.\
> This method allows customers to create a return shipment after delivery — regardless of who handled the last mile (Nova Post or a partner).\
> \
> ℹ️ \*\*Information:\*\* \</br>\
> The return can be created only if the parent shipment has the \*\*Delivered\*\* status and includes the \*\*AllowedLightReturn\*\* service. \</br>\
> The current status of a shipment can be found in the \`"items" → "statusCode"\` field of the \[Find documents]\(<https://api.novapost.com/developers/index.html#get-/shipments>) method.\</br>\
> \*\*AllowedLightReturn\*\* defines the number of days within which the recipient can initiate a return after the delivery.\
> Internally, the system verifies several conditions before allowing a Light Return shipment to be created:\
> \
> \- The parent shipment status must be one of: \`Issued (9, 10, 11, 106)\`.\
> \- The system calculates the allowed return period using the following logic: \</br>\
> &#x20; \`finalDate = toTZ(parentShipment.RecipientDateTime) + returnDays + 1 day\`\</br>\
> &#x20; where returnDays is taken from the AllowedLightReturn service, and toTZ applies the relevant system time zone (e.g., EU region).\
> \- The return can be created only if the current time (nowTZ) is earlier than finalDate.\
> \- The system also checks that no Light Return has already been created for the same parent shipment.\
> \
> If all these conditions are met, the return creation request is accepted; otherwise, the system responds with a validation error indicating why the return is not permitted.\
> \
> \*\*How the Light Return Shipment works\*\*\
> \- The request must include one \*\*required parameter\*\* — \`number\` (the parent shipment number). \*\*All other parameters are optional\*\*.\
> \- The customer may specify a valid branch or address directly for the return.\
> \- If \*\*optional parameters\*\* are not specified, their values are automatically inherited from the parent shipment.\
> \- The method behavior depends on the shipment direction:\
> &#x20; \- For \*\*UA-UA\*\* direction: the method works for parent deliveries to \*\*Postomat, PUDO, or address\*\*.\
> &#x20; \- For \*\*EU-EU\*\* direction: the method works for parent deliveries to \*\*PUDO or address\*\*. It is not supported if the parent shipment was delivered to a \*\*Postomat\*\*.\
> \- If parent delivery was to an address, a pickup is created automatically. \</br>A pickup request is created only if the return wasn’t sent from a branch. \
> \
> When the return is created, the system automatically generates a return waybill.\
> For more information on creating a parent shipment, see \[Create documents]\(<https://api.novapost.com/developers/index.html#post-/shipments)\\></br>\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"title":"API Nova Post","version":"1.0.0"},"tags":[{"name":"Shipments"}],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/shipments/light-return":{"post":{"tags":["Shipments"],"summary":"Create Light Return Shipment","description":"Creates a return shipment after the original order has been delivered.\nThis method allows customers to create a return shipment after delivery — regardless of who handled the last mile (Nova Post or a partner).\n\nℹ️ **Information:** </br>\nThe return can be created only if the parent shipment has the **Delivered** status and includes the **AllowedLightReturn** service. </br>\nThe current status of a shipment can be found in the `\"items\" → \"statusCode\"` field of the [Find documents](https://api.novapost.com/developers/index.html#get-/shipments) method.</br>\n**AllowedLightReturn** defines the number of days within which the recipient can initiate a return after the delivery.\nInternally, the system verifies several conditions before allowing a Light Return shipment to be created:\n\n- The parent shipment status must be one of: `Issued (9, 10, 11, 106)`.\n- The system calculates the allowed return period using the following logic: </br>\n  `finalDate = toTZ(parentShipment.RecipientDateTime) + returnDays + 1 day`</br>\n  where returnDays is taken from the AllowedLightReturn service, and toTZ applies the relevant system time zone (e.g., EU region).\n- The return can be created only if the current time (nowTZ) is earlier than finalDate.\n- The system also checks that no Light Return has already been created for the same parent shipment.\n\nIf all these conditions are met, the return creation request is accepted; otherwise, the system responds with a validation error indicating why the return is not permitted.\n\n**How the Light Return Shipment works**\n- The request must include one **required parameter** — `number` (the parent shipment number). **All other parameters are optional**.\n- The customer may specify a valid branch or address directly for the return.\n- If **optional parameters** are not specified, their values are automatically inherited from the parent shipment.\n- The method behavior depends on the shipment direction:\n  - For **UA-UA** direction: the method works for parent deliveries to **Postomat, PUDO, or address**.\n  - For **EU-EU** direction: the method works for parent deliveries to **PUDO or address**. It is not supported if the parent shipment was delivered to a **Postomat**.\n- If parent delivery was to an address, a pickup is created automatically. </br>A pickup request is created only if the return wasn’t sent from a branch. \n\nWhen the return is created, the system automatically generates a return waybill.\nFor more information on creating a parent shipment, see [Create documents](https://api.novapost.com/developers/index.html#post-/shipments)</br>\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["number"],"properties":{"number":{"type":"string","description":"The number of the **parent shipment** for which the return is initiated.  \nThis parameter is mandatory to create a return.\n"},"divisionId":{"type":"string","description":"Identifier of the division that will process the return.   \n"},"senderPhone":{"type":"string","description":"Phone number of the sender for the return shipment.  \n"},"addressParts":{"type":"object","description":"Structure describing the address for pickup or delivery.  \n","properties":{"city":{"type":"string","description":"City name of the pickup or delivery address."},"region":{"type":"string","description":"Region or administrative area of the address."},"street":{"type":"string","description":"Street name of the address used for pickup or delivery."},"postCode":{"type":"string","description":"Postal code of the address used for pickup or delivery."},"building":{"type":"string","description":"Building number of the address used for pickup or delivery."},"flat":{"type":"string","description":"Apartment or office number at the specified address."},"block":{"type":"string","description":"Block or section information for the address, if applicable."},"note":{"type":"string","description":"Additional details or notes for the address (e.g., entrance, floor, or delivery comment)."}}},"invoice":{"type":"object","description":"This object presents the necessary data for customs authorities to process the consignment efficiently, including the assessment of duties and taxes, and to confirm adherence to import/export regulations. The structured format of the invoice ensures that all pertinent information is easily accessible and clear, facilitating a smoother transit across borders.\n","properties":{"customerNumber":{"type":"string","description":"Unique invoice identifier provided by the client, corresponding to the goods being shipped.","maxLength":50,"nullable":true},"incoterm":{"type":"string","description":"Specifies the trade terms based on Incoterms® (e.g., DAP). Required for cross-border shipments.","enum":["DAP"]},"exportReason":{"type":"string","description":"Reason for export (ForPersonalPurposes, Selling, Repair, Return, Other).","enum":["ForPersonalPurposes","Selling","Repair","Return","Other"]},"cost":{"type":"number","description":"Total declared invoice value in the original currency, which must equal the sum of all invoice items calculated as **(amount × cost)** for each item.","minimum":1,"maximum":9999999.99},"currency":{"type":"string","description":"ISO 4217 currency code of the invoice. All items in the invoice must use the same currency.","pattern":"^[A-Z]{3}$"},"items":{"type":"array","description":"Detailed list of goods being shipped, required for customs declaration.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for each item within the shipment."},"hsCode":{"type":"string","description":"Harmonized System code for each item (8–10 digits)."},"name":{"type":"string","description":"Item name in the local language."},"nameEng":{"type":"string","description":"Item name in English."},"material":{"type":"string","description":"Primary material of the item."},"madeInCountryCode":{"type":"string","description":"Country of manufacture, ISO-3166 alpha-2."},"actualWeight":{"type":"integer","description":"Actual total weight of all units of the item in grams (g)."},"measurementCode":{"type":"string","description":"Unit of measurement (e.g., pcs, kg, m)."},"amount":{"type":"number","description":"The quantity of the item being shipped, necessary for inventory and customs documentation."},"cost":{"type":"number","description":"The value per single unit of the item in the sender's currency, important for insurance and customs valuation."}}}}}},"parcels":{"type":"array","description":"`Parcels` description block.  \nEach object contains information about one parcel in the shipment.\n","items":{"type":"object","properties":{"cargoCategory":{"type":"string","enum":["parcel","documents","pallet"],"description":"Type of shipment (parcel or documents)."},"parcelDescription":{"type":"string","description":"Short description of parcel contents."},"insuranceCost":{"type":"number","format":"float","description":"Declared insurance value of the parcel."},"rowNumber":{"type":"integer","description":"Sequential identifier for each parcel in the shipment."},"width":{"type":"integer","description":"Parcel width in millimeters."},"length":{"type":"integer","description":"Parcel length in millimeters."},"height":{"type":"integer","description":"Parcel height in millimeters."},"actualWeight":{"type":"integer","description":"Actual total weight of all units of the item in grams (g)."}}}}}}}}},"responses":{"200":{"description":"Successfully created Light Return shipment.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized request — invalid or missing authentication token.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","properties":{"errorMessage":{"type":"string"}}}}}}}},"403":{"description":"Parent shipment is missing the AllowedLightReturn parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","properties":{"errorMessage":{"type":"string"}}}}}}}},"404":{"description":"Parent shipment not found or status not allowed.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","properties":{"errorMessage":{"type":"string"}}}}}}}},"422":{"description":"Parent shipment not found or status not allowed.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","properties":{"errorMessage":{"type":"string"}}}}}}}},"503":{"description":"Service unavailable or request timeout.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","properties":{"errorMessage":{"type":"string"}}}}}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://api-portal.novapost.com/metodi-1/methods/shipments/return.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
