Address -> Address
Creating a shipping order from one address to another address
Here is the recomended approach to arrange a shipping order from one address to another address:
0 Get Rates You can optionally make a Get Rates request, typically you can make it during the checkout process in a shopping cart when the origin and destination of the parcel, as well as its weight and size, are already known.
- You can specify "address-address" as the delivery type to ensure that only carriers offering this specific type of delivery are returned in response. As you get the responce, you can offer the delivery options to your client with the name of the delivery option, price, and delivery time.
- Additionally you can determine if a carrier supports address to address delivery by examining the Get Rates response. If the carrier has both "collection_target": "address" and "destination_target": "address" listed, it indicates that the carrier can handle shipments from one address to another address.
1 Place Order
To place a shipping order, you need to specify carrier code, along with details like the sender's and receiver's addresses, parcel information, and other data mentioned in the example below.
- The carrier code can be obtained in Get Rates request and stored in your system for future use.
- When arranging a shipment from one address to another address it is typically requires courier parcel pickup from the sender's address.
- To arrange a courier's pickup the pickup time and date can be speciefied. When specifying a pickup time and date in the field pickup_timestamp, you should indicate a future date for when the parcel should be collected by the courier.
- Since each carrier has its own policy regarding collection times, pinpointing the correct time period can be challenging. Therefore, it is recommended to parse the Get Rates response for possible collection options and reuse these values in the Place Order request.
- Once the order is placed, you receive an order reference in the response, which can be used for future purposes such as checking the status of the order.
Here is the full payload to order a shipment order from one address to another address:
-
"carrier_code": "omniva-door-door", Specify the carrier code to order the service. This code can be obtained in the Get Rates request.
-
"from": { Container to specify the sender fields.} ,
-
"firstname": "Inga", Sender's name as it appears in the passport, using only Latin characters.
-
"lastname": "Bārtule", Sender's last name as it appears in the passport, using only Latin characters.
-
"phone": "+37122654321", Sender's phone number with the country code, allowing only the '+' character and numbers.
-
-
"country_iso": "LV", Sender's country in ISO format.
-
"city": "Rīga", Sender's city. Only Latin Extended-A characters allowed.
-
"postcode": "LV-1048", Sender's post code.
-
"address": "Slokas iela 28", Sender's address line 1 without city, postcode and country. Max 30 characters.
-
"address2": "" Optional Sender's address line 2 without city, postcode and country. Max 30 characters.
-
-
"to": { Container to specify the destintation fields.} ,
-
"firstname": "Mikhail", Receiver's name exactly as it is shown in the passport, using only Latin characters.
-
"lastname": "Tal", Receiver's surnam exactly as it is shown in the passport, using only Latin characters.
-
"phone": "+37122654321", Receiver's phone number with the country code, allowing only the '+' character and numbers.
-
-
"country_iso": "LV", Receivers's country in ISO format.
-
"city": "Rīga", Destination city. Only Latin Extended-A characters allowed.
-
"postcode": "LV-1013", Destination post code.
-
"address": "Duntes iela 6", Destination address line 1 without city, post code and country. Max 30 characters.
-
"address2": "" Optional Destination address line 2 without city, post code and country. Max 30 characters.
-
-
"shipment_contents": "Dyson Airwrap 20mm Long Barrel Black Purple (970736-01)", Specify what's inside your package as precisely as possible.
-
"shipment_total_value": "31", Total cost of the items being shipped. Indicates carrier's maximum liability for a package that is lost or damaged.
-
"shipment_total_value_currency": "EUR", Currency for total cost of the items being shipped.
-
"package_type": "1", package type: 1 - Documents. 2 - Box/package. 3 - Pallet.
-
"packages": [ Packages container to specify each box or package individually.] ,
-
{ first package container}
-
"weight": "0.250", Total weight of the package in KG
-
"width": "10", Total width of the package in CM
-
"height": "10", Total height of the package in CM
-
"depth": "5" Total depth of the package in CM
-
-
-
"pickup_timestamp": "1744728512", Required only for pickup shipments, from specified address. We recommend obtaining valid pickup values for each carrier using the Get Rates request. This field not required for shipments from Parcel Locker.
-
"callback_urls": { Container for callback / hooks urls.}
-
"success": "https://webhook.site/e3338662-625f-49e4-84ae-bba06d8d4b36", Our server will send a response to this callback URL once the order has been processed successfully.
-
"fail": "https://webhook.site/e3338662-625f-49e4-84ae-bba06d8d4b36" Our server will send a response to this callback URL if the order processing will be failed.
-
Callback Optionally, you can set up a callback to your server.
- When our team processes the order you will get a POST to your callback URL from our server.
- Some orders are processed almost instantly, while others may take longer (up to 20 minutes).
- If an order cannot be processed for any reason, it will be canceled, and you will receive a callback response indicating that the order placement has failed.
- The Payload of the callback requst is the same as you get in response in Get Order request.
- At present, our system will only send a callback request to your server a single time (whether the order was accepted on not). It will not send any further callbacks regarding updates to the order. If you require updates on your order status, you will need to manually make a Get Order Request. Details are provided below.
2 Get Order If you can't process callbacks or you just want to validate the status of your order, you may need to manually make Get Order request to ensure whether it was accepted or canceled, as well as to obtain a shipping label for your parcel.
- Check for Shipping Labels. Be aware that certain carriers require shipping labels on parcels. You can confirm this through a Get Rates request by checking if a printer is necessary for the carrier. If a printer is required, you must acquire a shipping label in Get Order request and print it. If a printer is not needed, obtaining a shipping label is not necessary.
- Check Status. If your order status is 'processed,' it means your order has been accepted, and you can expect the carrier to pick up your parcel.
- Update Order Status. You can periodically repeat the get order request to update your parcel's shipping status or other information later.
Courier Pickup Scheduling
For shipments that require courier pickup, the pickup date and time must be selected based on the availability returned by the Get Rates endpoint.
When calling:
GET /api/sandbox/v1/rates
the response may include a collection object for services that support courier pickup.
Example:
"collection": {
"available_dates": {
"0": "Hold Courier Pickup",
"1788242400": "Tuesday, 01/09/26, 09:00-13:00",
"1788256800": "Tuesday, 01/09/26, 13:00-17:00",
"1788328800": "Wednesday, 02/09/26, 09:00-13:00",
"1788343200": "Wednesday, 02/09/26, 13:00-17:00"
},
"available_weekdays": [
1,
2,
3,
4,
5
],
"collection_is_today": {
"available": false,
"if_booked_before": "14:00"
}
}Same-day pickup availability
The collection_is_today object indicates whether the courier can still be booked for pickup on the current day.
Example:
"collection_is_today": {
"available": false,
"if_booked_before": "14:00"
}In this example:
available: falsemeans that same-day pickup is no longer available.if_booked_before: "14:00"means that same-day pickup would have been possible if the courier had been booked before 14:00.
If the booking is created after the courier's same-day cut-off time, pickup will be prosponed on the next working day.
For example, if a courier's cut-off time is 14:00 and the shipment is created on Friday after 14:00, the next available pickup may be Monday.
Available pickup dates and time windows
The available_dates object contains the pickup dates and time windows currently available for the selected courier service.
Example:
"available_dates": {
"0": "Hold Courier Pickup",
"1788242400": "Tuesday, 01/09/26, 09:00-13:00",
"1788256800": "Tuesday, 01/09/26, 13:00-17:00"
}The object key represents the timestamp that should be used as the pickup_timestamp when creating the shipment.
For example, to request:
Tuesday, 01/09/26, 09:00-13:00
send:
"pickup_timestamp": 1788242400Important
Courier pickup availability is dynamic.
The values returned in available_dates are valid for the moment when the Get Rates request is made. If the shipment is created later, the available pickup dates or time windows may have changed.
For this reason, the recommended integration flow is:
- Call
Get Rates. - Select the required courier service.
- Read the current
collection.available_dates. - Use one of the returned timestamps as
pickup_timestampwhen creating the shipment.
Do not generate an arbitrary pickup timestamp unless it matches one of the currently available courier pickup options.
Different courier companies have different working days, booking cut-off times and pickup time windows.
Invalid or unavailable pickup dates
If the submitted pickup_timestamp is no longer available or cannot be accepted by the courier, the pickup will be moved automatically to the next available working day and time window.
Applications should therefore use the latest available_dates returned by Get Rates whenever possible.
Pickup time is not a guaranteed arrival time
The selected pickup date and time window represents the requested courier collection window. It should not be treated as an absolute guarantee that the courier will arrive within that exact period.
Operational delays may occasionally occur even when the pickup has been booked correctly.
Courier reliability and pickup practices may also differ between carriers.