inPost.it • Public Developers Documentation (1.0.0)

Download OpenAPI specification:Download

Glossary

Point is the name used in our API to identify an Automated Parcel Locker (APM) and/or a PUDO (Pick-Up/Drop-Off InPost Point)

APM identify an Automated Parcel Locker.

PUDO identify a Pick-Up/Drop-Off InPost point

API Introduction

This API specification is documented in OpenAPI format and defines the processes and steps that are commonly used from our customers.

Points

The Points API is a REST public API that can be used to obtain a list of InPost points (both PUDO and APM).

If you don't want to use API, you can use Geowidget.

Environments

Env Description URL
Staging Test environment. Not aligned with production environment. https://stage-api-shipx-it.easypack24.net
Production - https://api-shipx-it.easypack24.net

Auth

The Point API is public. You don't need any kind of authentication to use this endpoint.

Points

Get the complete list of available points.

Request
query Parameters
name
string

Searches for points by name.

case-sensitive: parameter in capital letters.

Example: name=ITMIL00001P OR ITMIL00001P,ITMIL00005P,...
type
Array of strings (type)

Searches for points by type.

Items Enum: "parcel_locker" "pok" "pop"
Example: type=pop OR parcel_locker,pop,...
functions
string (functions)

Searches for points by functions.

Example: functions=parcel OR parcel,parcel_send,...
partner_id
string

Searches for points by partner_id.

Example: partner_id=1,0,... OR 1
is_next
boolean

Filter for NEXT points.

Example: is_next=true
payment_available
boolean

Searches by point's payment availability.

Example: payment_available=true
city
string

Searches for points with given cities.

case-sensitive: parameters with the first capital letter.

Example: city=Roma,Lecce,... OR Roma
province
string = 2 characters

Searches for points with given provinces.

case-sensitive: parameters with capital letters.

Example: province=MI,BA,... OR MI
relative_point
string <latitude,longitude>

Searches for points closest to the given coordinates.

Example: relative_point=52.123,19.321
relative_post_code
string

Searches for points closest to the given postcode.

Example: relative_post_code=20068
max_distance
number <meters> <= 50000
Default: 10000

Searches for points in distance up to the given value from relative_point or relative_post_code.

Example: max_distance=2000
limit
number

Limit the maximum number of points retrieved when using relative_point or relative_post_code.

Example: limit=10
sort_by
string
Default: "name"

SORTING: Sorts results by given parameter.

Enum: "name" "distance_to_relative_point" "status"
Example: sort_by=status
sort_order
string
Default: "asc"

SORTING: Set sort .

Enum: "asc" "desc"
Example: sort_order=desc
page
number
Default: 1

PAGINATION: Defines the page for which the results should be returned.

Example: page=4
per_page
number <= 500
Default: 25

PAGINATION: Defines the amount of points returned per page.

Example: per_page=100
fields
string

ATTRIBUTES-FILTERING: Defines the point attributes that should be returned.

Example: fields=name,type
Responses
200

Success

get/v1/points
Request samples
Response samples
application/json
{
  • "count": 940,
  • "page": 1,
  • "per_page": 25,
  • "total_pages": 38,
  • "items": [
    ]
}

UC/Point list by `relative_post_code`

######################

TRY IT NOT ENABLED

The "try it" feature isn't enabled for this use case due to technical limit (feature not support fixed query parameters). Try this with Postman.

######################

Query parameters

?relative_post_code=20068&max_distance=2000

Use cases couldn't be tested in the right column.

Request
query Parameters
relative_post_code
string

Searches for points closest to the given postcode.

Example: relative_post_code=20068
max_distance
number <meters> <= 50000
Default: 10000

Searches for points in distance up to the given value from relative_point or relative_post_code.

Example: max_distance=2000
Responses
200

Success

get/v1/points{#filterByRelativePostCodeQuery}
Request samples
Response samples
application/json
{
  • "count": 8,
  • "page": 1,
  • "per_page": 25,
  • "total_pages": 1,
  • "items": [
    ],
  • "meta": {}
}

ShipX - Shipments

The ShipX API is a REST private API that can be used to create and manage of InPost shipments.

This API can be invoked in many ways, for the italian market the Simplified Mode is the standard. Some simple parameters will be required (such as: sender, receiver, size of the parcel and the destination).

Other info:

  • In the Locker2Locker service the customer can drop the parcel in whatever Locker or PUDO point he prefers.
  • The service in Locker or PUDO are totally equivalent, it just change from the customer experience.
  • Technically, in the checkout phase a new Shipment is created considering:
    • The request will be created in simplified mode.
    • The origin point is not needed but the destination is mandatory.
    • Sender is optional, if it’s not present in the shipment creation, the system will automatically take as sender the Client Configuration.
    • The customer can send the reference to be printed in the label and also the customer reference ID for customer support service.

Environments

The ShipX API can be used only by authenticated users. This API is used to create and manage InPost shipments.

Env Description URL
Staging Test environment integrated with inPost logistic. https://stage-api-shipx-it.easypack24.net
Production - https://api-shipx-it.easypack24.net

Auth

The ShipX API can be used only by authenticated users. A Bearer Token linked to your company will be required in every authenticated request, in some cases, the OrganizationID path parameter could be required.

Shipment

SecuritybearerAuth
Request
path Parameters
organization_id
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required
required
object (receiver)
object (receiver)

Sender is optional, if it’s not present in the shipment creation, the system will automatically take as sender the Client Configuration

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

Service selected by the client.

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes)

Additional shipment attributes.

reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

additional_services
Array of strings (additional_services)

Additional services lists, required only in case of label-less shipment.

Items Value: "labelless"
external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

post/v1/organizations/{organization_id}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_courier_c2c",
  • "custom_attributes": {
    },
  • "additional_services": [
    ],
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}

Shipment

Get the complete list of shipments for current organization_id.

SecuritybearerAuth
Request
path Parameters
organization_id
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
query Parameters
id
string

Searches for shipment by ID or IDs.

Example: id=44792,44791
created_at
string

Filter by creation date

Example: created_at=2016-01-07
created_at_gteq
string <timestamp>

Filter for shipments created after given date.

Example: created_at_gteq=1451650200
created_at_lteq
string <timestamp>

Filter for shipments created before given date.

Example: created_at_lteq=1451650200
tracking_number
string (tracking_number)

Filter by tracking number

Example: tracking_number=820100559215100015577452
status
string

Filter for shipments with given statuses.

Example: status=confirmed
service
string

Searches for shipments with given service or services.

Example: service=inpost_locker_standard
carrier
string

Searches for shipments with given carrier or carriers.

Example: carrier=InPost%20Kurier
receiver_name
string

Searches for shipments for which the receiver first_name, last_name or company_name starts with the given string.

Example: receiver_name=Smith
receiver_address
string

Searches for shipments for which receiver address starts with the given string.

Example: receiver_address=Zaw
receiver_city
string

Searches for shipments with receivers city matching the given string

Example: receiver_city=Roma
receiver_post_code
string

Searches for shipments which receivers postal code starts with the given string

Example: receiver_post_code=20060
receiver_country_code
string

Searches for shipments with receivers country code matching the given string

Example: receiver_country_code=IT
receiver_phone
string

Searches for shipments with receivers telephone number matching the given string

Example: receiver_phone=320009988
receiver_email
string

Searches for shipments which receivers email starts with the given string

Example: receiver_email=devnull@inpost.pl
sender_name
string

Searches for shipments for which the sender first_name, last_name or company_name starts with the given string.

Example: sender_name=Smith
sender_address
string

Searches for shipments for which sender address starts with the given string.

Example: sender_address=Zaw
sender_city
string

Searches for shipments with senders city matching the given string

Example: sender_city=Roma
sender_post_code
string

Searches for shipments which sender's postal code starts with the given string

Example: sender_post_code=20060
sender_country_code
string

Searches for shipments with senders country code matching the given string

Example: sender_country_code=IT
sender_phone
string

Searches for shipments with sender's telephone number matching the given string

Example: sender_phone=320009988
sender_email
string

Searches for shipments which senders email starts with the given string

Example: sender_email=devnull@inpost.pl
external_customer_id
string

Searches for shipments created by a broker for which the id is identical to the given string

Example: external_customer_id=Broker390
page
number
Default: 1

PAGINATION: Defines the page for which the results should be returned.

Example: page=4
per_page
number <= 500
Default: 25

PAGINATION: Defines the amount of points returned per page.

Example: per_page=100
sort_by
string
Default: "created_at"

SORTING: Sorts results by given parameter.

Enum: "id" "created_at" "tracking_number" "service" "status" "insurance_amount" "cod_amount" "external_customer_id"
Example: sort_by=id
sort_order
string
Default: "asc"

SORTING: Set sort .

Enum: "asc" "desc"
Example: sort_order=desc
Responses
200

Success

get/v1/organizations/{organization_id}/shipments
Request samples
Response samples
application/json
{
  • "count": 13,
  • "page": 1,
  • "per_page": 100,
  • "items": [
    ]
}

UC/Shipments Hub2Locker

Shipments Hub2Locker

SecuritybearerAuth
Request
path Parameters
organization_id_H2L
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required

This requestBody contains specific data and information for a H2L shipment use-case.

required
object (receiver)
object (receiver)

If no data are provided, the data of the organization under which the shipment is being created will be used by default (only in case of single warehouse).

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

For Hub2Locker shipments, this parameter should always be inpost_locker_standard

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes_H2L)

Additional shipment attributes.

reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

Responses
200

Success

post/v1/organizations/{organization_id_H2L}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_locker_standard",
  • "custom_attributes": {
    },
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}
Response samples
application/json
{
  • "id": 44617,
  • "status": "created",
  • "tracking_number": null,
  • "service": "inpost_locker_standard",
  • "reference": "ORDER: #99111000",
  • "is_return": false,
  • "application_id": 27,
  • "created_by_id": null,
  • "external_customer_id": null,
  • "sending_method": null,
  • "end_of_week_collection": false,
  • "comments": null,
  • "mpk": null,
  • "additional_services": [ ],
  • "custom_attributes": {
    },
  • "insurance": {
    },
  • "sender": {
    },
  • "receiver": {
    },
  • "selected_offer": null,
  • "offers": [ ],
  • "transactions": [ ],
  • "parcels": [
    ],
  • "created_at": "2022-02-11T17:30:34.860+01:00",
  • "updated_at": "2022-02-11T17:30:34.860+01:00"
}

UC/Shipments Locker2Locker

Shipments Locker2Locker

SecuritybearerAuth
Request
path Parameters
organization_id_L2L
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required

This requestBody contains specific data and information for a L2L shipment use-case.

required
object (receiver)
object (receiver)

If no data are provided, the data of the organization under which the shipment is being created will be used by default

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

For Locker2Locker shipments, this parameter should always be inpost_locker_standard

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes_L2L)

Additional shipment attributes.

reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

Responses
200

Success

post/v1/organizations/{organization_id_L2L}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_locker_standard",
  • "custom_attributes": {
    },
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}
Response samples
application/json
{
  • "id": 44123,
  • "status": "created",
  • "tracking_number": null,
  • "service": "inpost_locker_standard",
  • "reference": "string",
  • "is_return": false,
  • "application_id": 27,
  • "created_by_id": null,
  • "external_customer_id": "23",
  • "sending_method": "parcel_locker",
  • "end_of_week_collection": false,
  • "comments": null,
  • "mpk": null,
  • "additional_services": [ ],
  • "custom_attributes": {
    },
  • "insurance": {
    },
  • "sender": {
    },
  • "receiver": {
    },
  • "selected_offer": null,
  • "offers": [ ],
  • "transactions": [ ],
  • "parcels": [
    ],
  • "created_at": "2022-02-10T11:52:39.613+01:00",
  • "updated_at": "2022-02-10T11:52:39.613+01:00"
}

UC/Shipments Locker2Locker (Label-less)

Shipments Locker2Locker (Label-less)

SecuritybearerAuth
Request
path Parameters
organization_id_L2L_LL
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required

This requestBody contains specific data and information for a L2L shipment use-case.

required
object (receiver)
object (receiver)

If no data are provided, the data of the organization under which the shipment is being created will be used by default

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

For Locker2Locker shipments, this parameter should always be inpost_locker_standard

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes_L2L-LL)

Additional shipment attributes.

additional_services
required
Array of strings (additional_services)

Additional services lists, required only in case of label-less shipment.

Items Value: "labelless"
reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

Responses
200

Success

post/v1/organizations/{organization_id_L2L_LL}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_locker_standard",
  • "custom_attributes": {
    },
  • "additional_services": [
    ],
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}
Response samples
application/json
{
  • "id": 192524,
  • "status": "created",
  • "tracking_number": null,
  • "service": "inpost_locker_standard",
  • "reference": "ORDER: #0011001",
  • "is_return": false,
  • "application_id": 75,
  • "created_by_id": null,
  • "external_customer_id": "23",
  • "sending_method": "any_point",
  • "end_of_week_collection": false,
  • "comments": null,
  • "mpk": null,
  • "additional_services": [
    ],
  • "custom_attributes": {
    },
  • "insurance": {
    },
  • "sender": {
    },
  • "receiver": {
    },
  • "selected_offer": null,
  • "offers": [ ],
  • "transactions": [ ],
  • "parcels": [
    ],
  • "created_at": "2022-07-14T10:43:43.544+02:00",
  • "updated_at": "2022-07-14T10:43:43.544+02:00"
}

UC/Shipments Locker2Hub

Shipments Locker2Hub

SecuritybearerAuth
Request
path Parameters
organization_id_L2H
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required

This requestBody contains specific data and information for a L2H shipment use-case.

required
object (receiver)
object (receiver)

If no data are provided, the data of the organization under which the shipment is being created will be used by default

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

For Locker2Hub shipments, this parameter should always be inpost_courier_c2c

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes_L2H)

Additional shipment attributes.

reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

Responses
200

Success

post/v1/organizations/{organization_id_L2H}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_courier_c2c",
  • "custom_attributes": {
    },
  • "additional_services": [
    ],
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}
Response samples
application/json
{
  • "id": 44107,
  • "status": "created",
  • "tracking_number": null,
  • "service": "inpost_courier_c2c",
  • "reference": "ORDER: #00111000",
  • "is_return": false,
  • "application_id": 27,
  • "created_by_id": null,
  • "external_customer_id": null,
  • "sending_method": null,
  • "end_of_week_collection": false,
  • "comments": null,
  • "mpk": null,
  • "additional_services": [ ],
  • "custom_attributes": {
    },
  • "insurance": {
    },
  • "sender": {
    },
  • "receiver": {
    },
  • "selected_offer": null,
  • "offers": [ ],
  • "transactions": [ ],
  • "parcels": [
    ],
  • "created_at": "2022-02-10T11:50:48.228+01:00",
  • "updated_at": "2022-02-10T11:50:48.228+01:00"
}

UC/Shipments Locker2Hub (Label-less)

Shipments Locker2Hub (Label-less)

SecuritybearerAuth
Request
path Parameters
organization_id_L2H_LL
required
number (organization_id)

Your organization_id provided with the API Token. Read more in the Authentication section.

Example: 23
Request Body schema: application/json
required

This requestBody contains specific data and information for a L2H shipment use-case.

required
object (receiver)
object (receiver)

If no data are provided, the data of the organization under which the shipment is being created will be used by default

required
parcels_template (object) or Array of parcels_array (objects)
service
required
string (service)

For Locker2Hub shipments, this parameter should always be inpost_courier_c2c

Enum: "inpost_locker_standard" "inpost_courier_c2c"
required
object (custom_attributes_L2H-LL)

Additional shipment attributes.

additional_services
required
Array of strings (additional_services)

Additional services lists, required only in case of label-less shipment.

Items Value: "labelless"
reference
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number)

external_customer_id
string (external_customer_id)

ID of the broker generating shipments within a different organization for customer service purpose

Responses
200

Success

post/v1/organizations/{organization_id_L2H_LL}/shipments
Request samples
application/json
{
  • "receiver": {
    },
  • "sender": {
    },
  • "parcels": {
    },
  • "service": "inpost_courier_c2c",
  • "custom_attributes": {
    },
  • "additional_services": [
    ],
  • "reference": "ORDER: #0011001",
  • "external_customer_id": 23
}
Response samples
application/json
{
  • "id": 192528,
  • "status": "created",
  • "tracking_number": null,
  • "service": "inpost_courier_c2c",
  • "reference": "ORDER: #0011001",
  • "is_return": false,
  • "application_id": 75,
  • "created_by_id": null,
  • "external_customer_id": "23",
  • "sending_method": "any_point",
  • "end_of_week_collection": false,
  • "comments": null,
  • "mpk": null,
  • "additional_services": [
    ],
  • "custom_attributes": {
    },
  • "insurance": {
    },
  • "sender": {
    },
  • "receiver": {
    },
  • "selected_offer": null,
  • "offers": [ ],
  • "transactions": [ ],
  • "parcels": [
    ],
  • "created_at": "2022-07-14T10:45:46.516+02:00",
  • "updated_at": "2022-07-14T10:45:46.516+02:00"
}

ShipX - Labels

The label entity is automatically generated after the creation of a shipment. You can retrieve the shipping label in various formats. Here's an example label with some explanations.

Fields details:

  • 1-7 are automatically calculated by the system

  • 8 corrisponds to the template of the specific parcel

    Template Dimension Weight Description
    small 8 x 38 x 64 cm do 25 kg Size A
    medium 19 x 38 x 64 cm do 25 kg Size B
    large 41 x 38 x 64 cm do 25 kg Size C
  • 9 is the target point (Locker or PUDO name and Hub)

  • 10 - 11 are Name and Adresses for sender and receiver

  • 13 indicates if the parcel will be picked up by a courier or drop off by the customer

  • 17 is the Reference indicated in the specific Shipment (if any)

Shipment Reference Edit

Requirements:

  • this feature is disabled by default. The activation is enabled on-demand by contacting InPost's integration team.
  • in order to change a shipment reference, the parcel should have the pickup_time_expired or stored status.
SecuritybearerAuth
Request
path Parameters
shipment_id
required
number (shipment_id)

Shipment ID provided after a Shipment POST action.

Example: 23
query Parameters
reference
required
string (reference) [ 3 .. 100 ] characters

Additional shipment description that will be printed in the label (e.g. order number). The new reference should be encoded (SPACE is encoded as '+' or "%20").

Example: reference=New%20ORDER-CODE:#001000990
put/v1/shipments/{shipment_id}/attributes
Request samples

Label

Get label in various format.

SecuritybearerAuth
Request
path Parameters
shipment_id
required
number (shipment_id)

Shipment ID provided after a Shipment POST action.

Example: 23
query Parameters
format
string
Default: "pdf"

Label's file type

Enum: "pdf" "zpl"
Example: format=pdf
type
string

Label's page format

Enum: "normal" "A6"
Example: type=normal
Responses
200

File

get/v1/shipments/{shipment_id}/label
Request samples

ShipX - Tracking

After the Shipment Creation, there are two alternative ways to keep updated about the status of a shipment: Configured a Webhook or invoke Shipment Tracking API.

Useful resources:

Tracking

For implementing an on-demand alignment, the best solution can be request of the tracking via ShipX Tracking API with the tracking number

Tracking resource is an object representing information about the current status of the shipment in the logistics system. It can be utilized to get information about the creation, status change and status history of the shipment

Request
path Parameters
tracking_number
required
string (tracking_number)

Tracking Id provided in all shipments.

Example: 820100559215100015577452
Responses
200

Success

400

uknown_tracking_number

404

resource_not_found

get/v1/tracking/{tracking_number}
Request samples
Response samples
application/json
{
  • "tracking_number": "820100559215100015577452",
  • "service": "inpost_locker_standard",
  • "type": "inpost_locker_standard",
  • "status": "confirmed",
  • "custom_attributes": {
    },
  • "tracking_details": [
    ],
  • "expected_flow": [ ],
  • "created_at": "2022-02-14T12:48:18.926+01:00",
  • "updated_at": "2022-02-14T12:48:19.570+01:00"
}

Shipment Tracking Statuses

Status Description
created Parcel created, but not ready for shipment.
confirmed The label is ready for the download, but the journey of the parcel has not yet begun.
dispatched_by_sender The parcel is waiting for the courier to collect from the parcel machine or PUDO. From there it will go to the nearest InPost branch and then to the collection parcel machine.
taken_by_courier The parcel has been picked up from the Sender and is being delivered to the parcel machine indicated by you.
adopted_at_source_branch The parcel has been delivered to an InPost branch, from where it will soon set off on its further journey.
sent_from_source_branch The parcel has been sent from InPost branch, to the destination InPost depot.
adopted_at_sorting_center The parcel has get into the InPost sorting center.
sent_from_sorting_center The parcel has left the InPost sorting center.
adopted_at_target_branch The parcel has arrived to the destination InPost branch, it will go out for delivery soon.
out_for_delivery The shipment will reach the recipient on the next working day at the latest.
ready_to_pickup It’s done! The parcel will wait for the collection in the Parcel Machine or PUDO. The Receiver gets a notification, a text message and an e-mail with the collection code. If the parcel is not collected within this time, it will be returned to the Sender, which will be notified to the Receiver in a separate communication.
delivered The journey of the parcel from the Sender to the Recipient has ended.
pickup_reminder_sent You still have some hours to collect the parcel from the parcel machine or PUDO (depending on the specific contract). Then it will be returned to the Sender
pickup_time_expired The time for you to collect the parcel from the parcel machine or PUDO has passed. InPost delivery man will take the parcel to your branch at the next visit to the parcel machine. The Recipient still has a chance to collect the parcel if he arrives at the parcel machine before the delivery man.
missing Under investigation. Please reach out to InPost CS team for further information.
claimed The end user has opened a claim and the parcel is currently under investigation.
returned_to_sender The parcel has completed its way back to the Sender.
other Internal technical status which may vary depending on each case. For additional info reach out to CS team
oversized The parcel exceeds the maximum weight allowance and/or dimensions accepted by InPost.
handed_over Parcel transferred for transport abroad.
returned_to_agency The parcel is in the InPost depot, on its way back to the Sender.
canceled The shipping label has been canceled or expired. The parcel has not been sent to the Recipient.
collected_from_sender Courier collected the parcel from the Sender and passes it to the InPost branch.
Responses
200

Success

get/v1/statuses
Request samples
Response samples
application/json
{
  • "items": [
    ]
}

Geowidget - HTML/JS Widget

Basic info

GEOv4 (also known as Geowidget v4) is a point locator and picker designed by Integer sp. z o.o. It's main goal is to show map of points with several types (for example machines), provide informations about this points and give possibility to integrate with clients external systems. GEOv4 is a widget-type software, it means that whole code and processing is held on InPost servers, external clients only attach link to this code and specify configuration that will be used on theirs systems.

Data source

Data made available in the widget are extracted from the italian production environment: https://api-it-local-points.easypack24.net/v1/points

Design (RWD)

Desktop view

Mobile views

Integration

  1. Geowidget v4 can be easily integrated into any system or web page. Client web page should insert script in tag:
<script async src="https://geowidget.easypack24.net/js/sdk-for-javascript.js"></script>
<link rel="stylesheet" href="https://geowidget.easypack24.net/css/easypack.css"/>
  1. Include the widget configuration in Javascript
<script type="text/javascript">
  window.easyPackAsyncInit = function () {
    easyPack.init({});  // Configuration object
    var map = easyPack.mapWidget('easypack-map', function(point){
      console.log(point);
    });
  };
</script>
  1. Include the widget with a simple HTML tag inside your page.

    IMPORTANT the ID shouldn't be changed and should correspond to the ID used in the previous script.

<div id="easypack-map"></div>
  1. If you want to configure the widget, you can simply add your configurations in the Configuration Object included during the step 2. Here's an example of configuration, you can find parameter's details in the next charapter.
easyPack.init({
  defaultLocale: 'pl',
  points: {
    types: ['parcel_locker']
  },
  map: {
    defaultLocation: [51.507351, -0.127758],
    initialTypes: ['parcel_locker']
  }
});
  1. Check some example of the final result before to proceed:

Configuration parameters

ParameterName Description Default value
paymentFilter - false
listItemFormat Allows to change default layout of point information on points list. ["<b>{name}</b>", "<strong>{address_details.street}</strong> {address_details.building_number}"]
addressFormat A string that rapresent address format '{street} {building_number}
{post_code} {city}'
apiEndpoint URL to API Points which will be connected to Geowidget it: https://api-it-local-points.easypack24.net/v1/
searchType Setup search type, available to use Open Street Map Nominatim or Google Maps Autocomplete.

Available parameters: osm, google

⚠️ For 'google' option map.googleKey is required.
'osm'
showNonOperatingLockers This parameter allows you to choose whether to display only the points in Operating or Operating+NonOperating status.
If set to false, NonOperating states will not be shown.

⚠️Only points in Operating state can be selected and used by the final user.
true
points Setup points details

Available parameters:
parcel - points with functions send and collect
parcel_send - points with functions send only
parcel_collect - points with functions collect only
{ types: ['pop', 'parcel_locker'], allowedToolTips: ['pok', 'pop'], functions: [] }
mapType Setup map type, available to use Open Street Map or Google Maps.

Available parameters: osm, google

⚠️ For 'google' option map.googleKey is required.
'osm'
map Setup map details. { googleKey: '', useGeolocation: true, initialZoom: 13, detailsMinZoom: 15, /*minimum zoom after marker click*/ autocompleteZoom: 14, visiblePointsMinZoom: 13, defaultLocation: [52.229807, 21.011595], initialTypes: ['pop', 'parcel_locker'], /*which type should be selected by default. Options: parcel_locker_only, parcel_locker, pop */}
mobileSize Screen width below which mobile version is triggered. 768
instance Override default config by config prepared for instance.

Available parameters:
pl
mobileFiltersAsCheckbox Option set to false make filter option as radio in mobile, option true as checkobx. true
locales Languages that will be displayed as list in front layer. They can be dynamically changed. ['pl','uk']
defaultLocale Geowidget language that will be uses in front-end.

Available parameters: pl,uk
'pl'
display Enable/disable visible type filters and search bar { showTypesFilters: true, showSearchBar: true }
langSelection Determines if language selection bar should be displayed. false
filters Determines if filters (functions) bar should be displayed. false
customDetailsCallback Allows to set custom callback for details action

Example: function(point){...}, false
false
customMapAndListInRow Allow to change layout where list of point is below map. Points on list were paginated, number of point per page can be configured. { enabled: false, itemsPerPage: 8 }

Common use-cases

  • If you wants to get point data that user selected on Geowidget, you can configure callback like this:

    var map = easyPack.mapWidget('easypack-map', function(point) {
      alert(point.name);
    });
    

    Example 1 Example 2

  • Show Geowidget inside modal:

    easyPack.modalMap(function(point, modal) {
      modal.closeModal();
      console.log(point);
    }, { width: 500, height: 600 });
    

    Example

  • Show Geowidget as dropdown:

    easyPack.dropdownWidget('easypack-widget', function(point) {
      console.log(point)
    });
    

    Example

  • Enable Google Maps:

    • Google API Key is required. The key should have the following interfaces enabled:

      • Geocoding API
      • Geolocation API
      • Google Cloud APIs
      • Maps JavaScript API
      • Places API
    • Then, you need to initialize the widget like that:

      easyPack.init({
        mapType: 'google',
        searchType: 'google',
        map: {
          googleKey: 'your-google-api-key'
        }
      });
      

    Example

  • Function for search point by name and show it on map:

    map.searchLockerPoint('PointName');
    

    Example

  • Function for search place by name and show it on map:

    map.searchPlace('Wroclaw');
    

    Example

  • Display points with different types

    • PARCEL_LOCKER_ONLY - In results we have points - physical machines only

      points: {
        types: [‘parcel_locker_only']
      },
      map: {
        initialTypes: [‘parcel_locker_only']
      }
      
    • POP - In results we have points with types 'pop' and 'super_pop'

      points: {
        types: [‘pop']
      },
      map: {
        initialTypes: [‘pop']
      }
      
    • PARCEL_LOCKER - In results we have points -physical machines and 'super_pop' type

      points: {
        types: [‘parcel_locker']
      },
      map: {
        initialTypes: [‘parcel_locker']
      }
      
    • PARCEL_LOCKER_SUPERPOP - In results we have points - 'super_pop' type only

      points: {
        types: [‘parcel_locker_superpop']
      },
      map: {
        initialTypes: [‘parcel_locker_superpop']
      }
      
    • PARCEL LOCKER + POP - In results we have points - physical machines, 'pop' and 'super_pop' types

      points: {
        types: [‘parcel_locker', 'pop']
      },
      map: {
        initialTypes: [‘parcel_locker', 'pop']
      }
      
    • PARCEL LOCKER + POP - In results we have points - physical machines, 'pop' and 'super_pop' types but selected is only 'parcel_locker' and 'super_pop' type

      points: {
        types: [‘parcel_locker, pop']
      },
      map: {
        initialTypes: [‘parcel_locker']
      }
      
    • PARCEL LOCKER + POP - In results we have points - physical machines, 'pop' and 'super_pop' types but selected is only 'pop' and 'super_pop' type

      points: {
        types: [‘parcel_locker, pop']
      },
      map: {
        initialTypes: [‘pop']
      }
      

Webhook - Tracking

Webhook is used to send the user information about changes in the status of the shipment.

Used to align near real-time a client every time a significant change has occurred.

Available async-events

  • Shipment Confirmation
  • Shipment Status Changed
  • Error

Provided address conditions:

  • Correct URL structure

  • Access to the resource to which the entered URL points

  • Resource should respond with HTTP 200

    Example:
    
      http://www.serwer.pl:8080/catalog1/catalog2/file.xxx
    
      {protocol}://{address}:{port}{file_path}
    

Payload Examples

Payload Example - New shipment created

{
  "event_ts": "2020-03-20 15:08:06 +0100",
  "event": "shipment_confirmed",
  "organization_id": 1,
  "payload": {
    "shipment_id": 49,
    "tracking_number": null
  }
}

Payload Example - Shipment status changed

{
  "event_ts": "2020-03-20 15:08:42 +0100",
  "event": "shipment_status_changed",
  "organization_id": 1,
  "payload": {
    "shipment_id": 49,
    "status": "delivered",
    "tracking_number": null
  }
}

Payload Example - Shipment status changed to offers_prepared

{
  "event_ts": "2020-03-13 10:48:01 +0100",
  "event": "offers_prepared",
  "organization_id": 1,
  "payload": {
    "shipment_id": 349,
    "offers": [
      {
        "id": 481,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_locker",
          "name": "InPost Paczkomaty",
          "description": "InPost Paczkomaty - Przesyłki paczkomatowe"
        },
        "service": {
          "id": "inpost_locker_standard_smart",
          "name": "Paczkomatowa standardowa",
          "description": "Przesyłka paczkomatowa standardowa"
        },
        "unavailability_reasons": [
          {
            "key": "allegro_email_invalid",
            "message": "allegro_email_invalid"
          }
        ]
      },
      {
        "id": 480,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_locker",
          "name": "InPost Paczkomaty",
          "description": "InPost Paczkomaty - Przesyłki paczkomatowe"
        },
        "service": {
          "id": "inpost_locker_allegro_smart",
          "name": "Allegro Paczkomaty24/7 InPost",
          "description": "Przesyłka paczkomatowa Allegro Paczkomaty24/7 InPost"
        },
        "unavailability_reasons": [
          {
            "key": "invalid_target_point_function",
            "message": "Invalid target point function."
          },
          {
            "message": "allegro_email_invalid"
          }
        ]
      },
      {
        "id": 479,
        "status": "available",
        "expires_at": "2020-03-13T10:53:01.852+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_c2c",
          "name": "Kurier standard",
          "description": "Przesyłka kurierska standardowa"
        },
        "unavailability_reasons": null
      },
      {
        "id": 478,
        "status": "available",
        "expires_at": "2020-03-13T10:53:01.674+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "key": "allegro_email_invalid",
        "service": {
          "id": "inpost_courier_local_super_express",
          "name": "Kurier lokalny SuperExpress",
          "description": "Przesyłka kurierska lokalna super expresowa"
        },
        "unavailability_reasons": null
      },
      {
        "id": 477,
        "status": "available",
        "expires_at": "2020-03-13T10:53:00.941+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_local_express",
          "name": "Kurier lokalny Express",
          "description": "Przesyłka kurierska lokalna expresowa"
        },
        "unavailability_reasons": null
      },
      {
        "id": 476,
        "status": "available",
        "expires_at": "2020-03-13T10:53:00.344+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_local_standard",
          "name": "Kurier lokalny Standard",
          "description": "Przesyłka kurierska lokalna standardowa"
        },
        "unavailability_reasons": null
      },
      {
        "id": 475,
        "status": "available",
        "expires_at": "2020-03-13T10:52:59.408+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_express_1700",
          "name": "Kurier doręczenie 17:00",
          "description": "Przesyłka kurierska z doręczeniem do godziny 17:00 następnego dnia"
        },
        "unavailability_reasons": null
      },
      {
        "id": 474,
        "status": "available",
        "expires_at": "2020-03-13T10:52:59.054+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_express_1200",
          "name": "Kurier doręczenie 12:00",
          "description": "Przesyłka kurierska z doręczeniem do godziny 12:00 następnego dnia"
        },
        "unavailability_reasons": null
      },
      {
        "id": 473,
        "status": "available",
        "expires_at": "2020-03-13T10:52:57.679+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_express_1000",
          "name": "Kurier doręczenie 10:00",
          "description": "Przesyłka kurierska z doręczeniem do godziny 10:00 następnego dnia"
        },
        "unavailability_reasons": null
      },
      {
        "id": 472,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_allegro",
          "name": "Allegro Kurier24 InPost",
          "description": "Przesyłka kurierska Allegro Kurier24 InPost"
        },
        "unavailability_reasons": [
          {
            "key": "parcels_size_invalid",
            "message": "Parcel is too large or too heavy."
          },
          {
            "message": "allegro_email_invalid"
          }
        ]
      },
      {
        "id": 471,
        "status": "available",
        "expires_at": "2020-03-13T10:52:57.115+01:00",
        "rate": null,
        "currency": "PLN",
        "additional_services": [],
        "carrier": {
          "key": "allegro_email_invalid",
          "id": "inpost_courier",
          "name": "InPost Kurier",
          "description": "InPost Express - Przesyłki kurierskie"
        },
        "service": {
          "id": "inpost_courier_standard",
          "name": "Kurier standard",
          "description": "Przesyłka kurierska standardowa"
        },
        "unavailability_reasons": null
      },
      {
        "id": 470,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_letter",
          "name": "InPost Listy",
          "description": "Inpost Letter - Przesyłki listowe"
        },
        "service": {
          "id": "inpost_letter_allegro",
          "name": "Allegro miniKurier24 InPost",
          "description": "Przesyłka listowa Allegro miniKurier24 InPost"
        },
        "unavailability_reasons": [
          {
            "key": "parcels_size_invalid",
            "message": "Parcel is too large or too heavy."
          },
          {
            "message": "allegro_email_invalid"
          }
        ]
      },
      {
        "id": 469,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "key": "allegro_email_invalid",
        "carrier": {
          "id": "inpost_locker",
          "name": "InPost Paczkomaty",
          "description": "InPost Paczkomaty - Przesyłki paczkomatowe"
        },
        "service": {
          "id": "inpost_locker_pass_thru",
          "name": "Podaj dalej",
          "description": "Przesyłka paczkomatowa Podaj Dalej"
        },
        "unavailability_reasons": [
          {
            "key": "dropoff_and_target_points_must_be_equal",
            "message": "Dropoff point and target point must be equal for selected service."
          }
        ]
      },
      {
        "id": 468,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_locker",
          "name": "InPost Paczkomaty",
          "description": "InPost Paczkomaty - Przesyłki paczkomatowe"
        },
        "service": {
          "id": "inpost_locker_allegro",
          "name": "Allegro Paczkomaty24/7 InPost",
          "description": "Przesyłka paczkomatowa Allegro Paczkomaty24/7 InPost"
        },
        "unavailability_reasons": [
          {
            "key": "invalid_target_point_function",
            "message": "Invalid target point function."
          },
          {
            "message": "allegro_email_invalid"
          }
        ]
      },
      {
        "key": "allegro_email_invalid",
        "id": 467,
        "status": "unavailable",
        "expires_at": null,
        "rate": null,
        "currency": null,
        "additional_services": [],
        "carrier": {
          "id": "inpost_locker",
          "name": "InPost Paczkomaty",
          "description": "InPost Paczkomaty - Przesyłki paczkomatowe"
        },
        "service": {
          "id": "inpost_locker_standard",
          "name": "Paczkomatowa standardowa",
          "description": "Przesyłka paczkomatowa standardowa"
        },
        "unavailability_reasons": [
          {
            "target_point": "translation missing: keys.errors.attributes.target_point.invalid"
          }
        ]
      }
    ]
  }
}

Woocommerce

Installation

The plug-in can be downloaded from the site https://inpost.it/soluzioni-le-aziende. Please contact InPost commercial team to activate the service and receive API credentials.

Once you have the installation file, you can add it to your Wocommerce Store from Plugins → Add New

Configuration

Once installed, the plugin must be configured with the following settings:

ParameterName Required/Optional Description
Organization ID Required The data must be provided by InPost
Token Required The data must be provided by InPost
Type of API Required Sandbox (for testing) or Production
Company name Required Company name that will be displayed on the shipping label
Email for delivery notifications Required Email used to receive delivery notifications
Mobile phone for delivery notifications Required Mobile Italian phone to receive delivery notifications:
  • Don't use fixed telephone/landline numbers
  • The number should always start with a 3
  • Non-italian mobile numbers are not accepted
City (Delivery Address for returns to sender) Required City
Postal code (Delivery Address for returns to sender) Required Postal code
Street (Delivery Address for returns to sender) Required Street
Building number (Delivery Address for returns to sender) Required Building number
Default parcel size Required Default parcel size that will be communicated to InPost and which will determine the size of the box to use at the locker.
The size can be updated in the order panel.
  • small (8 x 38 x 64 cm)
  • medium (19 x 38 x 64 cm)
  • large (41 x 38 x 64 cm)
Format of the shipping label Required A4 or A6
Hide the service at the checkout if the total weight is more than 25 Kg Optional If checked, InPost delivery method will be hidden at the checkout, preventing parcels from being rejected if the total weight exceeds our maximum allowed value of 25 Kg. This only works if the merchant has entered the weight of each product on their site.
Return Portal link Optional Fast Return is an optional InPost service that allows customers to return a parcel in just a few clicks. No API integration is needed. If the service is enabled for the account, enter here the URL of the portal to enable a return button in the Order panel of the User Account.
Type of flow Required A2L or L2L
It will be communicated by InPost
City (Pick Up Address) Required ONLY for A2L City
Postal code (Pick Up Address) Required ONLY for A2L Postal code
Street (Pick Up Address) Required ONLY for A2L Street
Building number (Pick Up Address) Required ONLY for A2L Building number
Color setting for Inpost call to actions at the checkout Optional Set the color of the plugin buttons at the checkout in line with your brand identity.
Customize the font and styling of the InPost description text at the checkout as per your brand identity Optional Set the font and style of the InPost description text at the checkout in line with your brand identity.

Don’t forget to add InPost delivery method to a Shipping Zone from Setting → Shipping, as well as to assign pricing rules as per Wocommerce standard configurations. It is also possible to decide whether to apply the minimum order rule before or after the discounts. If the "Apply minimum order rule before coupon discount" box is checked free shipping would be available based on the pre-discount order amount. Note that this checkbox will only work if you have set up free shipping within the woocommerce shipping methods of the country in question.

If there are products that must be excluded from InPost delivery method because too big or too heavy, go to Products → Edit Product → InPost and remove the flag “InPost Point 24/7”.

InPost order creation at the checkout

This is an example of how InPost Delivery Method is displayed at the checkout.

If InPost delivery method is selected by the customer, it is mandatory to select a collection point from the map. It is possible to search the closest InPost point by city, address, postal code or Point reference. NOTE: for testing purposes, use this collection point ITBAR24589 (It can also be modified during the label creation phase - see "Shipment and label creation" section).

InPost post-checkout experience

InPost will send SMS and email notifications to keep both sender and recipient updated about the delivery status.

If the Fast Return service has been enabled in the plugin configuration, a return button will be visible in the Order area of the User Personal Account. The link will redirect the customer to an external portal.

Shipment and label creation

InPost orders are visible both in the Wocommerce Order panel or in InPost Italy → Shipping.

For an Inpost order, the order detail page shows a custom InPost support area from where it is possible to update

  • the collection Point, if requested by the customer
  • the size of the parcel, which by default will be the size configured in the plugin settings.
  • a number reference to be sent to InPost, which by default will be the same of the order number generated by Wocommerce. If the order and shipping data are correct, click “Send Parcel” to create an InPost shipment.

After a few seconds, the “Get Label” button will be available. If used, will generate a shipping label with the format specified in the plugin configuration.

For bulk operations, there are two options:

  • Go to Orders → select multiple orders → Bulk actions → InPost Italy create shipments / InPost Italy create labels
  • Go to InPost Italy → Shipments → select multiple orders → Bulk actions → Generate labels

Magento

Coming Soon

Shopify

Coming Soon