Last reviewed June 2026, InPost's current GeoWidget locker picker, the ShipX REST API and the three A/B/C locker sizes below are accurate; treat the parcel-volume figure as directional and the 48-hour pickup window as a commonly-seen default to confirm against your own contract.
If you sell into Poland and your checkout offers only courier-to-the-door delivery, you're quietly losing orders to stores that don't. Polish shoppers don't treat the parcel locker as a fallback. For most of them it is the default, and a checkout without InPost Paczkomaty reads as a foreign store that never bothered to localise. This guide is about one specific thing: getting genuine InPost Paczkomaty delivery working in PrestaShop, the locker-selection widget, the carrier wiring, the size logic, and the label flow, the way it actually behaves under the hood, not a generic "add a carrier" walkthrough.
For the broader mechanics that sit above any single carrier, zones, weight ranges, carrier modules in general, start with our complete PrestaShop shipping configuration guide and the step-by-step on setting up carrier modules. This piece assumes you know that layer and goes straight at what makes InPost different.
Why Paczkomaty are non-optional for the Polish market

Paczkomaty (singular: paczkomat) are InPost's automated parcel lockers, tens of thousands of them across Poland, in supermarket car parks, at petrol stations, in residential courtyards. The customer gets an SMS and email when their parcel lands, walks to a locker that's usually a few minutes away, scans a QR code or types a pickup code, and a compartment pops open. No waiting in for a courier, no concierge desk, available at 11pm on a Sunday.
InPost reports it processed well over 900 million parcels in Poland in a recent year, and that a large majority of Polish online shoppers have used a paczkomat. Treat exact figures as directional. What matters for your store is the behaviour behind them: Polish buyers expect the locker option on the carrier list, and frequently pick it first. So what does that mean for your PrestaShop store? If InPost isn't there, or it's there but the locker map is broken on your theme, the customer doesn't email you, they just close the tab. The whole game with this carrier is making the selection step feel native and effortless.
Three ways to integrate InPost with PrestaShop
There's more than one route onto a PrestaShop store, and the right one depends on volume and how much else you ship.
| Route | What it is | Effort | Best when… |
|---|---|---|---|
| InPost official module | InPost's own PrestaShop module: GeoWidget locker picker, label generation, status sync | Low, install & enter API credentials | InPost is your main or only Polish carrier; you want the vendor to maintain widget/API compatibility. |
| Multi-carrier shipping module | A broader carrier module that lists InPost alongside DHL/DPD/GLS under one label-and-tracking interface | Low, medium | You already ship with several carriers and want one back-office workflow. Accepting it may lag InPost's API changes. |
| Direct ShipX API integration | Custom code against InPost's ShipX REST API | High, developer time | Very high volume with bespoke fulfilment logic that no off-the-shelf module models. |
Most stores should start with the official module. If InPost is one carrier among many, see how the others slot in: DHL, DPD and UPS integration and GLS multi-country shipping. The relay-point pattern InPost uses also exists in France, if you ship there too, Mondial Relay relay-point delivery is the sibling article.
Prerequisites before you install anything
The module is the easy part; the account is what trips people up. Before you touch PrestaShop you need:
- An InPost business account in the Manager Panel (manager.paczkomaty.pl). This is where shipments, rates and balance live.
- API credentials: an organisation ID and an access token generated inside the Manager Panel. Generate a dedicated token for the shop rather than reusing a personal one, so you can revoke it without breaking everything else.
- Either a negotiated InPost contract (for your own rates) or the prepaid balance system that funds label generation.
Wiring the carrier into PrestaShop
Install the module the normal way, Modules → Module Manager → Upload a module, then open its configuration. The InPost setup has a few moving parts that don't exist for a plain courier, and getting them right up front saves a lot of "why is shipping free / wrong / missing" support tickets later.
API credentials and environment
Paste the organisation ID and access token from the Manager Panel. Most modules expose a sandbox vs production toggle. Do your first end-to-end test (place an order, generate a label) in sandbox so you're not burning real prepaid balance on dummy parcels. Switch to production only once a real label renders correctly.
The carrier object itself
The module registers a PrestaShop carrier (the standard Carrier object you'd see under Shipping → Carriers). Give it a name Polish customers recognise instantly, "Paczkomat InPost" or "InPost Paczkomaty", and a delivery-time string in Polish, e.g. "1–2 dni robocze", because that label shows verbatim on the carrier-selection step. Set it to ship the Poland zone (and any other country where you've enabled lockers) and define your weight/price ranges exactly as you would for any carrier. That core mechanic is unchanged and covered in the configuration guide.
Locker size logic, the constraint that's unique to lockers
A courier will take almost any box; a locker compartment will not. InPost lockers come in three sizes: A (about 8×38×64 cm), B (about 19×38×64 cm) and C (about 41×38×64 cm). Nothing larger than a C compartment can be delivered to a paczkomat at all. So part of configuring InPost properly is deciding what happens when a cart can't physically fit:
- Set a sensible default parcel size matching your typical product.
- If you sell anything bulky, restrict the InPost carrier so it doesn't appear for oversized carts, otherwise a customer picks a locker, you can't honour it, and you're refunding or re-shipping. PrestaShop lets you gate a carrier by product (carrier restrictions on the product's Shipping tab) or by weight range; use whichever maps to your catalogue.
- Optionally configure insurance. InPost offers cover up to a per-parcel ceiling, set in the shipment options.
The locker-selection widget: the part that actually breaks
Everything above is plumbing. The piece customers touch, and the piece most likely to fail silently, is the locker picker. InPost's current widget (the GeoWidget) is a JavaScript map embedded into checkout: geolocation to find nearby lockers, search by address/city/postcode, filtering by availability and size, mobile-responsive. The module hooks into PrestaShop's carrier-selection step and, when the customer chooses InPost, shows a "Wybierz paczkomat / Choose locker" button that opens the map. The chosen locker's ID is then written against the order so your label goes to the right machine.
Because it's third-party JavaScript injected into your theme, it's exactly where theme conflicts surface. The recurring failure modes, in the order we see them:
| Symptom | Usual cause | Where to look |
|---|---|---|
| Widget button does nothing / map never opens | JavaScript conflict, most often a jQuery version clash, or a Content-Security-Policy header blocking InPost's CDN | Browser console; your theme's CSP/security headers; another module loading a second jQuery |
| Map opens but tiles are blank | Missing or expired map API key (older widget builds); some GeoWidget versions serve their own tiles and need no key | Widget version; the module's map-key field |
| Locker chosen but not saved to the order | The hook that captures the selected locker ID isn't firing on a customised checkout | Theme's checkout override; module's checkout display hook |
| Picker absent or unusable on mobile | The modal isn't mobile-optimised in an older module build | Update the module; test the actual popup on a phone |
The takeaway isn't "expect it to break". It's that this widget must be tested on your specific theme, on real desktop and real mobile, before launch. Every PrestaShop theme renders the checkout step slightly differently, and a locker picker that works on the default theme can still misfire on a customised one. This is the single highest-value test in the whole integration.
Labels and dispatch
Once an order lands with InPost selected, you generate the shipping label from the order. The module adds a button on the order detail page in the back office: click it, the module calls InPost's API, creates the shipment, and returns a PDF. InPost labels are sized for A6 (105×148 mm) thermal stickers but print fine on A4 with scaling. For any meaningful volume, generate labels in bulk, select multiple orders and produce one combined PDF, either from the module's order list or the Manager Panel, because one-at-a-time clicking does not survive a busy week.
Tracking and the 48-hour pickup window
InPost pushes its own SMS and email notifications and most Polish customers track parcels in the InPost mobile app, so you don't have to build notifications yourself. Some modules can also pull status back into PrestaShop and show it on the order page, though this typically needs configuration (webhook or cron) and varies by module version, verify it in the module you've actually installed. The status that needs an operational answer is the locker pickup deadline: a parcel waits in the locker for a limited window (commonly around 48 hours) and is then returned to sender. Make sure your team has a defined path for a returned-uncollected parcel, re-ship, refund, or contact the customer, rather than discovering it weeks later. For surfacing tracking links and shipment notifications to customers across all your carriers, see tracking numbers and delivery notifications, and for setting honest arrival windows on the product/checkout side, estimated delivery dates.
Pricing and where to position InPost
How you price the locker option is a strategy question, not a configuration one, and it deserves its own treatment rather than a rushed paragraph here. The carrier-specific point worth keeping: because locker delivery skips the last mile it's cheaper to fulfil than door courier, which gives you room to make InPost cheaper or free sooner than your door carriers, though note PrestaShop's built-in Shipping → Preferences free-shipping threshold is global, not per carrier, so InPost-specific free shipping means zeroing that carrier's price ranges, using a cart rule restricted to the InPost carrier, or letting the shipping module handle it, or to list it first so it's the option customers scan to. For the actual decision frameworks behind those numbers, see free vs flat-rate vs calculated shipping, when free shipping makes sense (and when it eats your margin), and the small-store-focused shipping strategy for small stores.
InPost beyond Poland
InPost has expanded its locker network into the UK, France, Italy and Spain. If your PrestaShop store ships cross-border, the integration model is the same, same ShipX API, same widget pattern, only the destination country and locker network change. Enable the additional countries on the carrier's zones and confirm the widget surfaces lockers in those markets. It won't replace a country's dominant local carrier overnight, but it's a credible relay-point option to offer alongside one.
The mistakes that cost the most
- Offering lockers for items that can't fit one. The C compartment caps at roughly 41×38×64 cm. Sell furniture or anything bulky and you must restrict the InPost carrier for those products, or you'll be undoing impossible orders by hand.
- Never testing the widget on your real theme and a real phone. The most common launch-day failure, and entirely preventable.
- No process for uncollected parcels. The pickup window is short; build the return/re-ship handling before it bites, not after.
- Weekend orders sitting idle. Part of the locker's appeal is round-the-clock pickup. If you only generate labels on weekdays you blunt the speed advantage customers chose InPost for.
Where this fits with the rest of your shipping setup
InPost Paczkomaty isn't an add-on for the Polish market, it's table stakes. Get the carrier, the size logic and especially the locker widget right, and you remove the single most obvious "this store isn't really Polish" signal at checkout. Where we can help is the layer around it: at mypresta.rocks we build PrestaShop modules focused on making carrier management, shipping rules and checkout behaviour easier to control from the back office. Directly, no middleman, with live demos so you can see exactly how a module behaves before it touches your store. If you run multiple pickup and dispatch points alongside InPost, multi-warehouse management in PrestaShop covers shipping from more than one location, and the carrier-module setup guide is the foundation under all of it.
Frequently asked questions
Do I need an InPost business account before installing the module?
Yes. The module is the easy part; the account is what trips people up. Set up an InPost business account in the Manager Panel (manager.paczkomaty.pl), generate a dedicated organisation ID and access token for the shop there, and arrange either a negotiated contract or the prepaid balance that funds label generation. Generate a token scoped to this store rather than reusing a personal one, so you can revoke it later without breaking everything else.
What sizes of parcel fit an InPost locker?
Lockers come in three sizes: A (about 8×38×64 cm), B (about 19×38×64 cm) and C (about 41×38×64 cm). Nothing larger than a C compartment can go to a paczkomat at all. So if you sell anything bulky, restrict the InPost carrier so it doesn't appear for oversized carts, by product (carrier restrictions on the product's Shipping tab) or by weight range, otherwise a customer picks a locker you physically can't honour and you're refunding or re-shipping by hand.
The locker map button does nothing when clicked, what's wrong?
The GeoWidget is third-party JavaScript injected into your theme, so a dead button is almost always a JavaScript conflict, most often a second jQuery loaded by another module, or a Content-Security-Policy header blocking InPost's CDN. Check the browser console first, then your theme's CSP/security headers, then any module loading its own jQuery. This is the single highest-value test in the whole integration: confirm the widget on your real theme, on real desktop and real mobile, before launch.
Can I offer InPost free shipping the way PrestaShop's free-shipping threshold works?
Not directly. PrestaShop's Shipping → Preferences free-shipping threshold is global, not per carrier. To make only InPost free you zero that carrier's price ranges, use a cart rule restricted to the InPost carrier, or let the shipping module handle it. Because locker delivery skips the last mile it's cheaper to fulfil than a door courier, so it's a sensible carrier to make free sooner or list first. Just know the free-shipping toggle won't do it per-carrier on its own.
What happens if a customer doesn't collect their parcel in time?
A parcel waits in the locker for a limited window, commonly around 48 hours, though confirm yours against your contract, and is then returned to sender. InPost handles its own SMS/email notifications, so you don't build those, but you do need a defined path for an uncollected parcel: re-ship, refund, or contact the customer. Build that handling before launch rather than discovering returned parcels weeks later.
Does InPost work outside Poland?
Yes. InPost has expanded its locker network into the UK, France, Italy and Spain. The integration model is the same (same ShipX API, same widget pattern); only the destination country and locker network change. Enable the additional countries on the carrier's zones and confirm the widget surfaces lockers in those markets. It won't displace a country's dominant local carrier overnight, but it's a credible relay-point option to offer alongside one.