Title: Kurirko
Author: Kurirko
Published: <strong>August 30, 2026</strong>
Last modified: October 30, 2026

---

Search plugins

![](https://ps.w.org/kurirko/assets/banner-772x250.png?rev=3673054)

![](https://ps.w.org/kurirko/assets/icon-256x256.png?rev=3673054)

# Kurirko

 By [Kurirko](https://profiles.wordpress.org/expresskurirko/)

[Download](https://downloads.wordpress.org/plugin/kurirko.0.4.1.zip)

 * [Details](https://vec.wordpress.org/plugins/kurirko/#description)
 * [Reviews](https://vec.wordpress.org/plugins/kurirko/#reviews)
 *  [Installation](https://vec.wordpress.org/plugins/kurirko/#installation)
 * [Development](https://vec.wordpress.org/plugins/kurirko/#developers)

 [Support](https://wordpress.org/support/plugin/kurirko/)

## Description

Kurirko turns a WooCommerce order into a **Post Express** shipment in one click:
it checks the customer’s address against Pošta’s own address directory, sets cash
on delivery, and prints the address label (“adresnica”) and the acceptance book (“
prijemna knjiga”), with nothing retyped into the courier’s portal. It works through
your own contract with **Pošta Srbije** and your own credentials. The premium build
then follows every parcel after handover: the delivery status in the orders list,
automatic completion of delivered orders and the customer e-mail with the tracking
number.

The plugin’s interface is fully localized to **Serbian (Latin and Cyrillic)**. Na
srpskom: Kurirko je WooCommerce dodatak za kurirsku službu Post Express (Pošta Srbije),
za slanje pošiljaka, adresnicu i proveru adrese iz porudžbine, a u premium verziji
i za kurirske službe BEX i D Express i praćenje dostave.

Independent plugin: Kurirko is software for stores, not a courier service and not
a product of Pošta Srbije, BEX or D Express; “Pošta Srbije”, “Post Express”, “BEX”
and “D Express” are trademarks of their owners.

#### Couriers

The free build ships **Post Express (Pošta Srbije)**, implemented and tested end-
to-end against Pošta’s official WSP WebApi and used under your own contract with
Pošta; as part of Pošta’s B2B onboarding, Pošta reviews and approves the address
label your store prints. The premium build adds **BEX Express** and **D Express**.
Each courier works under your own contract and credentials with that courier, in
the same order workflow, and the list grows as couriers are added. Current list:
https://kurirko.com/woocommerce-kurirske-sluzbe

#### Do I need a contract?

Yes, with each courier you send with. For Post Express, Kurirko uses **your** contract
with Pošta and your access to the WSP WebApi service (credentials are requested 
from Pošta at b2b@posta.rs); step 1 of the onboarding guide walks you through it.
BEX, in the premium build, works the same way, with your own BEX contract and API
access. D Express, also in the premium build, works through your own D Express account(
D Express registers a shop without a contract or a minimum volume) and the API access
D Express issues to you. Until you enter credentials the plugin waits quietly — 
nothing breaks and no data is sent.

#### Premium

The free build covers the whole sending flow — creating the shipment, address validation,
the label and the acceptance book. The premium build adds **BEX Express** and **
D Express** as further couriers, the volume tools a busy store needs and everything
after the parcel is handed over: **auto-send** when an order reaches “processing”,
the **“Slanje danas”** batch screen that reviews and creates every ready shipment
at once (with 4-per-A4 bulk labels or A6 for a thermal printer), **several boxes
on one order**, **optional courier services** per shipment, **parcel tracking** 
with the courier’s delivery status in the orders list and **automatic completion**
of delivered orders, the **customer e-mails** (tracking number, “your parcel is 
waiting”), **“Spasilac paketa”** reminders that chase a parcel waiting uncollected
at the courier before it turns into a return, and a **COD ledger** that tracks what
the courier still owes you. With **D Express**, the premium build sends the shipment
from the order with package codes from your own D Express range, prints the 100 
× 120 mm label (or four to an A4 sheet) drawn to D Express’s specification, applies
the delivery statuses D Express pushes as they happen, and checks the recipient’s
town and street against D Express’s own directory. Details: https://kurirko.com

Documentation and troubleshooting: https://kurirko.com/pomoc

#### Independence and trademarks

Kurirko is an independent WooCommerce extension. It is not a courier, a delivery
company or a shipping broker, and it is not affiliated with, endorsed by or a product
of any courier company, including JP “Pošta Srbije” and any company with a similar
name. “Pošta Srbije”, “Post Express”, “BEX” and “D Express” are trademarks of their
respective owners. Kurirko talks to a courier only through your own business contract
and API credentials with that courier.

### Features

 * **Send a shipment from an order** — one click; auto-send on “processing” is available
   in the premium build.
 * **Address label (PDF) and acceptance book** — print-ready, with barcode and full
   Cyrillic support.
 * **Address validation** — recognizes and corrects Serbian addresses (Cyrillic/
   Latin, ordinal street names, ambiguous settlements) and offers one-click fixes.
 * **Cash on delivery (COD)** and declared value — carried on the shipment automatically;
   the default optional services (SMS on delivery, return receipt) are chosen in
   the settings in the free build, and offering them per shipment in the review 
   step is premium.
 * **Order status at a glance** — a traffic-light column in the orders list and 
   the outcome of a send appearing in the order box without a manual refresh.
 * **Parcel tracking (premium)** — hourly status checks, the courier’s delivery 
   status in the orders list, automatic completion of delivered orders, and the 
   customer email with the tracking number.
 * **Works with both checkouts** — classic and Cart/Checkout Blocks — and with High-
   Performance Order Storage (HPOS).
 * **Latin and Cyrillic** admin interface (a “Pismo/Script” setting).
 * **Diagnostics** — connection test, system report, and a guided test  production
   onboarding flow.

### External services

This plugin connects to external services. What each one does, when, and what data
it sends is described below.

The plugin makes NO automatic call to any server of ours. It talks to your courier’s
API with the credentials you entered yourself, and to nothing else: there is no 
phone-home, no analytics, no version ping, no service-health check and no telemetry
of any kind. The only other outbound calls are ones you trigger by clicking, and
Freemius’ licensing, which is opt-in.

**1. Pošta Srbije — WSP WebApi (courier service)**

The core function of the plugin. Kurirko contacts Pošta’s WSP WebApi to create shipments,
calculate postage, validate addresses and check tracking status. This happens only
for orders you act on (manually, or via auto-send that you enable).

 * Endpoint (production): https://api.posta.rs/transakcija
 * Endpoint (test): http://212.62.32.201/WspWebApi/transakcija
 * Note: Pošta’s TEST server has no TLS (http), so test credentials travel unencrypted—
   use only disposable test accounts in test mode. The production endpoint is always
   https with certificate verification.
 * When data is sent: on address validation (order create/edit), when a shipment
   is sent, and during periodic status checks (premium tracking).
 * What data is sent: the shipment data required for delivery — recipient name, 
   address (city, street, number, postcode), phone and e-mail, weight, declared 
   value and COD amount, the parcel contents, plus the sender details from your 
   settings and your API credentials.
 * Terms / privacy policy: https://www.posta.rs/ (contact: b2b@posta.rs)

**2. Kurirko support (kurirko.com)**

On the **Kurirko  Diagnostics** page there is a “Copy report and report a problem”
button that — and only when you click it — opens the support page in a new tab. 
There is no automatic call to this service; nothing is sent on page load.

 * Address: https://kurirko.com/podrska
 * When data is sent: never automatically — only when you click that button.
 * What data is sent: only version numbers for support context — plugin, WordPress,
   WooCommerce and PHP versions — passed as URL parameters (ver, wp, wc, php, src),
   plus an optional `kur` parameter: an internal support reference code (order number
   + short hash); it contains no customer personal data. No personal data, customer
   data or order data is sent.
 * Terms / privacy policy: https://kurirko.com/

**3. Freemius (licensing and updates)**

The plugin bundles the Freemius SDK, which powers licensing, the optional premium
upgrade and update services. Freemius operates in WordPress.org-compliant mode: 
no usage data is sent unless you explicitly opt in on the one-time activation screen(
you can click “Skip”). Freemius may contact its API to manage the opt-in, licenses
and premium upgrade information.

 * Service: Freemius, Inc. — https://freemius.com/
 * Endpoint: https://api.freemius.com/
 * When data is sent: when you interact with the activation opt-in, manage a license,
   or view upgrade/account screens. Anonymous usage data is sent ONLY after you 
   explicitly opt in.
 * What data is sent (only if you opt in): site URL, admin e-mail, and technical
   environment data (WordPress, PHP and plugin versions, active plugins/theme). 
   No customer or order data is sent.
 * Terms of Service: https://freemius.com/terms/
 * Privacy policy: https://freemius.com/privacy/

### Third-party code

Kurirko bundles the following third-party components. Each keeps its own license
and copyright notices in the shipped files.

 * **Freemius WordPress SDK 2.13.4** (`vendor/freemius/wordpress-sdk`) — licensing,
   updates and the optional premium upgrade. License: GNU GPL v3.0 only (`vendor/
   freemius/wordpress-sdk/LICENSE.txt`). Copyright (c) Freemius, Inc. — https://
   freemius.com/ — Its bundled PHP API client (`vendor/freemius/wordpress-sdk/includes/
   sdk/`) carries its own GNU GPL v2 notice (`includes/sdk/LICENSE.txt`).
 * **Composer autoloader** (`vendor/autoload.php`, `vendor/composer/`) — class autoloading,
   generated by Composer. License: MIT (`vendor/composer/LICENSE`). Copyright (c)
   Nils Adermann, Jordi Boggiano — https://getcomposer.org/
 * **tFPDF and TTFontFile** (`src/Pdf/Tfpdf.php`, `src/Pdf/TtFontFile.php`) — PDF
   generation for the address label and the acceptance book. License: GNU LGPL. 
   Copyright (c) Ian Back, Tycho Veltmeijer; TTFontFile is based on the ReportLab
   Open Source PDF library. The files are namespaced into `Kurirko\Pdf` and modified
   as documented at the top of each file; the original license headers are retained.
 * **DejaVu Sans / DejaVu Sans Bold** (`fonts/unifont/`) — Cyrillic text rendering
   in the PDFs. License: Bitstream Vera Fonts Copyright (Bitstream, Inc.; Arev additions(
   c) Tavmjong Bah; DejaVu changes are in the public domain). The full license text
   ships with the fonts in `fonts/unifont/DejaVu_LICENSE.txt`.
 * **jQuery postMessage v0.5** (`vendor/freemius/wordpress-sdk/assets/js/nojquery.
   ba-postmessage.js`) — cross-frame messaging used by the Freemius checkout. Copyright(
   c) 2009 “Cowboy” Ben Alman, dual licensed MIT and GPL; non-jQuery fork by Jeff
   Lee. The notice is at the top of the file.
 * **Freemius Pricing app** (`vendor/freemius/wordpress-sdk/assets/js/pricing/freemius-
   pricing.js`) — the React pricing screen inside the SDK. License: MIT. The bundle
   embeds React 17.0.2 and ReactDOM 17.0.2 (MIT, copyright (c) Facebook, Inc. and
   its affiliates), scheduler 0.20.2 (MIT), object-assign (MIT, Sindre Sorhus), 
   is-buffer (MIT, Feross Aboukhadijeh) and Font Awesome Free 5.15.4 (icons CC BY
   4.0, fonts SIL OFL 1.1, code MIT — https://fontawesome.com/license/free). All
   of these notices ship next to the bundle in `vendor/freemius/wordpress-sdk/assets/
   js/pricing/freemius-pricing.js.LICENSE.txt`.

#### Where the bundled minified files come from

Three shipped JavaScript files are compiled or minified. None of them is our code;
each is maintained in a public repository, and this is where its source and build
tooling live.

 * `vendor/freemius/wordpress-sdk/assets/js/pricing/freemius-pricing.js` — a webpack
   build of the Freemius Pricing app. Source and build tools: https://github.com/
   Freemius/pricing-page (MIT). Its README states the app is shipped as part of 
   the Freemius WordPress SDK from SDK version 2.9.0 onward, and it is built with`
   npm install` then `npm run build`, which writes the bundle into `dist/`; that
   output is what the SDK carries under `assets/js/pricing/`. The accompanying `
   freemius-pricing.js.LICENSE.txt` lists every library webpack inlined into it.
 * `vendor/freemius/wordpress-sdk/assets/js/jquery.form.js` — a small helper that
   builds a hidden form for a redirect POST. It is maintained, in this exact form,
   in the Freemius WordPress SDK repository at the same path: https://github.com/
   Freemius/wordpress-sdk (GPL-3.0-only), tag `2.13.4`. There is no separate build
   step; the SDK repository is the file’s development location.
 * `vendor/freemius/wordpress-sdk/assets/js/postmessage.js` — the `FS.PostMessage`
   wrapper around `nojquery.ba-postmessage.js`. Same development location: https://
   github.com/Freemius/wordpress-sdk, tag `2.13.4`, path `assets/js/postmessage.
   js`. The unminified companion it wraps ships beside it as `nojquery.ba-postmessage.
   js`.

The SDK is bundled through Composer (`composer.json` in the plugin root pins `freemius/
wordpress-sdk`), so the exact commit that produced the shipped copy is recorded 
in `vendor/composer/installed.json`.

#### License of the combined work

Our own code — the plugin’s source, apart from the bundled third-party components
listed above — is licensed under the **GNU GPL, version 2 or later** (https://www.
gnu.org/licenses/gpl-2.0.html). That is what the `license` field of `composer.json`
declares, and it is what makes the combination below possible.

What you install is that code together with the bundled Freemius SDK, which is GPL-
3.0-**only**. GPLv2-or-later code combined with GPLv3-only code is distributable
under version 3, so the plugin as distributed — the combined work in this ZIP — 
is licensed under the **GNU GPL version 3** and cannot be offered as “version 3 
or later”. That is what `License: GPLv3` at the top of this readme and `License:
GPL-3.0` in the `kurirko.php` header both declare (the same license, two spellings),
and a copy of the GPL v3 ships with the plugin as `license.txt`. Taken on its own,
our code stays GPL-2.0-or-later.

## Screenshots

[⌊Orders list — the Kurirko status column with a traffic-light indicator and the
tracking number (tracking is premium).⌉⌊Orders list — the Kurirko status column 
with a traffic-light indicator and the tracking number (tracking is premium).⌉[

Orders list — the Kurirko status column with a traffic-light indicator and the tracking
number (tracking is premium).

[⌊The Kurirko box on an order — send, print label, track and cancel a shipment in
one place (tracking is premium).⌉⌊The Kurirko box on an order — send, print label,
track and cancel a shipment in one place (tracking is premium).⌉[

The Kurirko box on an order — send, print label, track and cancel a shipment in 
one place (tracking is premium).

[⌊Send Today — review every ready order and create all shipments in one click (premium).⌉⌊
Send Today — review every ready order and create all shipments in one click (premium)
.⌉[

Send Today — review every ready order and create all shipments in one click (premium).

[⌊Address label (PDF) — vertical Code128 barcode and the Post Express B2B panel.⌉⌊
Address label (PDF) — vertical Code128 barcode and the Post Express B2B panel.⌉[

Address label (PDF) — vertical Code128 barcode and the Post Express B2B panel.

[⌊Diagnostics — the status grid, the connection test and a copyable support report.⌉⌊
Diagnostics — the status grid, the connection test and a copyable support report
.⌉[

Diagnostics — the status grid, the connection test and a copyable support report.

[⌊Settings — the guided onboarding steps (contract to production) and the connected
couriers.⌉⌊Settings — the guided onboarding steps (contract to production) and the
connected couriers.⌉[

Settings — the guided onboarding steps (contract to production) and the connected
couriers.

## Installation

 1. Install the plugin from your WordPress admin (Plugins  Add New  search for “Kurirko”)
    or upload the ZIP.
 2. Activate it — an active WooCommerce (9.0+) is required.
 3. Open **Kurirko  Settings** and enter your WSP credentials — if you do not have 
    them yet, step 1 of the onboarding guide walks you through requesting them — plus
    your sender details and the bank account used for cash on delivery.
 4. In **WooCommerce  Settings  Shipping**, add the “Kurirko (Pošta Srbije)” method
    to your Serbia zone.
 5. On the Diagnostics page click **Test connection**, then create a test shipment 
    on the TEST environment; once Pošta approves it, switch the environment to “Production”.

## FAQ

### Do I need a contract with Pošta?

Yes. Kurirko uses YOUR contract and WSP WebApi credentials. If you do not have them
yet, contact Pošta (b2b@posta.rs); until then the plugin runs in a safe waiting 
mode.

### Does Kurirko charge for shipments?

No. Shipments are billed under your own contract with Pošta. Kurirko does not process
any shipping payments and is not a payment intermediary.

### Does it work with the block-based checkout?

Yes — with both the classic and the Cart/Checkout Blocks checkout, and with HPOS
order storage.

### Does it support parcel lockers (paketomati)?

Not yet. Pošta’s WebApi does carry parcel-locker delivery, but Kurirko does not 
yet offer your customer a way to choose a locker at checkout, so nothing is sent
that way. It is on the list.

### In which language is the plugin?

The admin interface is in Serbian and can be switched between Latin and Cyrillic
script. This readme is in English per WordPress.org convention.

### What is free and what is premium?

The plugin’s settings screen shows this same comparison, drawn from the one list
the features are registered in — so what you read here is what the build actually
ships.

Free — the whole sending flow:

 * Sending a shipment from an order, in one click — the outcome appears on the screen
   by itself.
 * Checking and correcting the customer’s address.
 * The cash-on-delivery amount filled in from the order’s payment method.
 * The courier’s own address directory, the parcel contents and the weight.
 * Cancelling a shipment (storno).
 * The address label (PDF) for a single order.
 * The acceptance book, for one order or for several picked in the orders list.
 * Diagnostics and the copyable support report.

Premium adds — the volume tools and everything after handover:

 * The “Slanje danas” batch screen — review every ready order, then send them all
   at once.
 * Auto-send when an order reaches “processing”.
 * Several boxes on one order, each with its own label and tracking number.
 * Optional courier services per shipment (SMS on delivery, return receipt).
 * Bulk label printing, four per A4 sheet.
 * The A6 label format for thermal printers.
 * Parcel tracking — hourly status checks and a manual refresh on the order.
 * The courier’s delivery status in the orders-list column.
 * Automatic completion of an order the courier reports as delivered.
 * “Spasilac paketa” reminders for a parcel waiting uncollected at the post office.
 * The e-mail that gives the customer the tracking number.
 * The “your parcel is waiting” e-mail to the customer.
 * The COD ledger — payouts by dispatch day, with CSV export.
 * Support response within one business day.
 * Further couriers, in the same order workflow.

See https://kurirko.com

### Does the shipping price at checkout come from the courier?

No. The “Kurirko” shipping method is a flat rate you set yourself in WooCommerce
Settings  Shipping (cost, and an optional free-over threshold). The postage the 
courier actually charges is fetched when the shipment is created and printed in 
the acceptance book — it is separate from what the customer paid.

### The courier does not recognise a customer’s address. What now?

Open the order and use the Kurirko box. It offers ranked corrections you apply with
one click, and a picker that completes the settlement and the street out of the 
courier’s own directory — an address chosen there travels with the courier’s codes
instead of free text. The house number stays as the customer entered it. Then send
again; the address is re-validated on submission, so a flagged order is never a 
dead end.

### My shipments stay in the queue and never go out.

Kurirko sends in the background, so this is almost always WordPress scheduled tasks(
WP-Cron) not running on the site — a low-traffic site is the usual case. Kurirko
notices and shows an admin notice with a “process now” button that drains the queue
immediately. The permanent fix is a real system cron, which any host can enable.
You can check the queue on the Diagnostics page.

### What customer data is sent, and where?

The recipient’s name, address and phone number go ONLY to Pošta’s API, under YOUR
own contract — that is what a courier needs to deliver the parcel. Nothing goes 
anywhere else: the plugin author receives no customer data, no order data and no
store data. See the “External services” section below for the full list.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Kurirko” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Kurirko ](https://profiles.wordpress.org/expresskurirko/)

“Kurirko” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/kurirko/contributors)
for their contributions.

[Translate “Kurirko” into your language.](https://translate.wordpress.org/projects/wp-plugins/kurirko)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/kurirko/), check out
the [SVN repository](https://plugins.svn.wordpress.org/kurirko/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/kurirko/) by [RSS](https://plugins.trac.wordpress.org/log/kurirko/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.4.1

 * New: the customer’s phone number is checked before a shipment is created. A number
   that does not look like a Serbian one, or is too short, too long or contains 
   letters, gets a warning next to the address check, on the order and on the daily
   dispatch screen. Sending is never blocked. The sender’s phone in settings gets
   the same check.
 * New: the sender’s town and street in settings are picked from the courier’s own
   directory, the same way a customer’s address is on the order, and the postal 
   code is filled in from the courier’s answer. Free typing still works when the
   courier’s service is not reachable.
 * Fixed: the test shipment in the courier’s test environment no longer fails with
   a misleading “the address needs a town, street, number and post office” message
   when the courier’s test directory has no service at the shop’s own address. The
   probe now goes out from the courier’s reference address and says so; the connection
   test shows the courier’s own words instead of hiding them.
 * Changed: a foreign phone number is passed to Post Express and BEX with its international
   prefix (00…), so the courier can still dial it. Serbian numbers are sent exactly
   as before.
 * New: D Express labels carry the D Express logotype by default, with their permission;
   your own logo still replaces it when you upload one. Premium.

#### 0.4.0

 * New: D Express joins the premium build. A shipment goes out from the order under
   your own D Express account: every parcel gets a code from the range D Express
   gives you, the recipient’s town and street are checked against D Express’s own
   directory (Belgrade and Niš by street, an unclear address held for you to pick
   from that directory), the 100 × 120 mm label — or four to an A4 sheet — is drawn
   to D Express’s specification with a Code 128 barcode, and the receipt book D 
   Express does not issue is drawn by the plugin: the parcels handed over that day,
   for both sides to sign. Delivery statuses arrive in real time as D Express pushes
   them, once you have sent D Express the status address shown on its settings card;
   the order box says so in place of a refresh button. Premium.
 * New: a 100 × 120 mm thermal label format, offered while a courier that prints
   on it is switched on. Premium.
 * Fixed: printing labels or the receipt book for a selection that mixed two couriers’
   shipments sent every shipment through the courier of the first order. Each shipment
   now prints through its own courier; a selection spanning several couriers comes
   out as one document per courier, in a ZIP. Premium.

#### 0.3.11

 * Fixed: a street the courier did not recognise in a city whose name other places
   also contain — “Beograd” beside “Beograd (Zemun)” and “Mali Beograd”, “Niš” beside“
   Niševac” — was held as if the city itself were in doubt, so only the city was
   offered and never the street. The place spelled exactly as the customer wrote
   it is now taken, the street is looked up in it, and the courier’s street names
   are offered.
 * Fixed: applying a suggested address keeps the courier’s own codes for the place
   and street it names, so the next send goes out with them instead of landing in
   review again.
 * Fixed: a receipt book mixing shipments sent before the new document layout with
   shipments sent after it heads with the sender as the courier registered it — 
   settlement and post office — matching the new adresnica, whichever shipment comes
   first.

#### 0.3.10

 * Changed: the adresnica and the receipt book now print what the courier’s own 
   review asked for — the date of acceptance under the contact line, the settlement
   under the street, the post office name next to the postcode exactly as the courier’s
   system returns it, and larger recipient type that shrinks before anything is 
   cut. Shipments printed before this update keep their old layout.
 * Changed: test shipment — when the courier cannot collect at the sender address,
   the probe is handed over at the counter instead and says so; the handover mode
   you saved is not changed. “Testiraj konekciju” also tells you when the courier
   does not collect at that address.
 * New: the courier a customer picked at checkout is the courier the shipment goes
   out with — map each WooCommerce shipping method to a courier in the settings,
   and set a default courier for orders that carry no mapped method. The order box
   shows why a courier was preselected and still lets you change it before sending.
   Premium.
 * New: more than one courier can be switched on at once, and each order picks which
   one its shipment goes out with. A shipment stays with the courier it was sent
   with — its label, its tracking, its storno and its hourly status check all go
   to that courier — even after it is switched off. Premium.
 * New: the receipt book for a courier that issues none is drawn by the plugin, 
   one per pickup day, for the merchant to sign at handover. Premium.
 * New: the “Slanje danas” review shows the courier of every order. With more than
   one courier switched on, each row starts on the courier the order box would suggest,
   says why, and can be switched before sending — the order goes out with the courier
   picked in its row. Premium.
 * Changed: a storno from the shop first asks the courier where the parcel is. Once
   the courier has it — picked up, in transit, out for delivery, delivered or on
   its way back — the shop does not cancel it on its own: the order box says so 
   in place of the storno button, and the cancellation is asked of the courier. 
   When the courier cannot be reached, the storno works as before. Premium.
 * Fixed: the live status shown right after sending — in the order box and in the“
   Slanje danas” outcome — could read “Nije poslato” for a shipment that had gone
   out fine, whenever that order was not among the newest in the shop. The status
   feed was asking WooCommerce for the wrong orders; it now asks for exactly the
   ones on screen.
 * Fixed: applying a suggested address no longer doubles the house number (“Jovina
   10 10”) when the courier did not know the street or the place, so an order that
   was held for review can actually leave it. A suggestion for a place that shares
   its name with another now carries the postcode too.
 * Fixed: the diagnostics probe, the TEST badge and the services offered on every
   screen follow the courier of the order in front of you, not the first courier
   switched on.
 * Changed: a courier’s answers are now read the way that courier’s own client reads
   them, not the way its documentation describes them — a created shipment is one
   the courier gave a number to, a confirmed storno is any confirmed reply, a status
   with a name but no code still counts, and a number the courier no longer knows
   is skipped instead of stopping the hourly check for everyone else. Shipments 
   carry a contents category the merchant sets on the courier’s card. Premium.
 * Changed: Updated Freemius SDK to the latest version.

#### 0.3.9

 * New: a second Serbian courier you can send with, in the premium build. It joins
   the workflow you already know — the shipment is made from the order, the courier
   issues the adresnica, the address is checked against that courier’s own directory
   of settlements and streets, cash on delivery carries over, and the shipment is
   tracked to delivery. Your contract and your access details stay yours, as they
   do with every courier. Which couriers the premium build covers: https://kurirko.
   com/woocommerce-kurirske-sluzbe
 * Changed: Updated Freemius SDK to the latest version.

#### 0.3.8

 * Fixed: on a shop that keeps orders the classic way (without WooCommerce’s high-
   performance order storage), the bulk action “Kurirko: prijemna knjiga” opened
   a blank page instead of the receipt book. WordPress drops the action name from
   that orders list’s redirect; the print route now survives it. The 4/A4 label 
   sheet had the same problem and is fixed with it.

#### 0.3.7

 * Fixed: a shop whose registered name runs past 35 characters could not create 
   a shipment at all — the courier’s database refuses an over-long name outright,
   and reported it as a column nobody outside that database has heard of. Names 
   now go out cut to the length it accepts.
 * New: a print that answers with nothing can now say where it stopped. With extended
   logging switched on (Kurirko  Dijagnostika), printing leaves a trail in WooCommerce
   Status  Logs — entered, selection, document made and its size, bytes sent — so
   a blank page stops being a dead end.

#### 0.3.6

 * New: upload your courier’s own logotype — as a PDF, a PNG or a JPG — and it prints
   on the adresnica exactly where the courier’s own samples print it; the receipt
   book has a field of its own, because the samples carry a different mark there.
   Couriers send you these files when they approve your paperwork. Without one, 
   the courier’s name is printed in letters, which is equally valid paperwork, and
   a file that cannot be read costs you nothing but the picture. The file stays 
   yours: no courier logotype ships with the plugin.
 * Changed: the adresnica and the receipt book are laid out to match the samples
   the courier sends merchants for approval. On the adresnica: the logotype replaces
   the printed service name, the phone numbers and the web address sit centred above
   the address boxes, the shipment number runs upright to the left of the barcode,
   the address boxes are rounded and captioned on their own outline instead of wearing
   black bars, the recipient block is one even block of type, the contact person
   and the phone number stand in two columns, and there is an empty box at the foot
   for whatever the counter writes by hand. On the receipt book: the title is centred
   over the table, the sender block and the timestamps move to where the sample 
   puts them, all thirteen columns are re-measured, the table head loses its grey
   fill, the totals are one line — pieces and postage — and each signature caption
   sits above the rule it is signed on.
 * Fixed: the receipt book no longer truncates a long address. Rows now take three
   lines and the type shrinks before anything is cut, so an address that wrapped
   no longer pushed its PAK out of sight.
 * Fixed: the postcode field was narrower than the five digits it holds, so the 
   last one sat out of sight and a correct value looked wrong.

#### 0.3.5

 * Fixed: 0.3.4 could not run on PHP 8.1 at all. One line of it was written in a
   form the oldest supported PHP refuses outright, and a file PHP refuses to read
   takes the whole site with it — shop and admin both — from the moment the plugin
   is active. If 0.3.4 reached you, this release is the fix; nothing was wrong with
   your data or your settings.

#### 0.3.4

 * Fixed: an address chosen from the courier’s directory now ships. It travelled
   with the customer’s postcode alongside the courier’s own codes, which the courier
   refuses outright — so every order fixed through the picker failed, over and over,
   with a message the merchant could do nothing about.
 * New: settlements sharing a name are told apart in the picker. Serbia has four
   SUBOTICA and the directory spells them all the same way; each row now says whether
   the street on the order exists there, so the choice is no longer one in four.
 * Fixed: a print that fails now says so. Where a document could not be produced,
   the screen came back completely blank — no PDF, no reason, nothing in the log—
   so nobody could tell a broken plugin from a broken host; it now answers with 
   a sentence and a support code, and writes the cause down.
 * New: the Premium screen is now in Serbian, with the plan, the price and the full
   feature list on one page instead of the payment provider’s English one; buying
   is unchanged.
 * Fixed: cancelling a shipment now always stops tracking it, so a customer can 
   no longer be reminded to collect a parcel the shop is recalling.
 * Fixed: where a courier never confirmed a cancellation, the order now offers a
   way to record that it was settled by phone — previously only couriers with no
   cancellation of their own did.

#### 0.3.3

 * New: the free build now lets you choose which optional courier services ride 
   on every shipment (SMS on delivery, return receipt) instead of always sending
   SMS; offering them per shipment stays premium.
 * Fixed: with “hand parcels in at a post office” selected, the manifest no longer
   carries a pickup place — exactly the shape the courier asks for from stores without
   courier pickup.

#### 0.3.2

 * New: choose how parcels reach the courier — a courier collecting at your address,
   or you handing them in at a post office. Stores whose contract has no courier
   pickup were refused with “PREUZ” and had no way out; the new setting on the courier
   tab is that way out.
 * Improved: the “what does this mean” link on that refusal now opens a dedicated
   help entry instead of address advice, since the address is not the problem.
 * Improved: the order box and the daily batch screen say “handover day” rather 
   than “pickup day”, so the wording holds for both modes.
 * Fixed: the courier settings form no longer accepts a value its drop-downs never
   offered.

#### 0.3.1

 * Fixed: a cancelled shipment can be sent again — the new send gets a fresh number
   and a fresh label instead of waiting in the queue forever.
 * Fixed: an order whose background job got stuck no longer hides its actions; it
   reports the state and offers a way out.
 * Fixed: hourly tracking no longer refreshes a shipment you cancelled — a storno
   stays a storno on the order screen.
 * Fixed: the address check no longer blames the wrong field when the courier rejects
   a recipient detail.
 * New: the order now distinguishes “cancelled in the store” from “confirmed by 
   the courier”, and asks for your confirmation where the courier offers no cancel
   API.
 * New: auto-send (premium) never re-sends an order after a storno on its own; a
   second parcel is always a human decision.
 * Improved: the licensing screens now speak Serbian.

#### 0.3.0

 * **New packaging** — the free build keeps the whole sending flow (create, validate,
   print, cancel, diagnostics); everything after the parcel is handed over is now
   part of the premium tier: parcel tracking, the delivery-status column, automatic
   order completion, “Spasilac paketa” and the customer e-mails.
 * **Review before you send** — the batch screen now opens a review step first: 
   correct an address, a phone number or the cash-on-delivery amount row by row,
   watch each shipment’s outcome as it lands, and retry only the rows that failed(
   premium).
 * **The outcome finds you** — the Kurirko box on an order shows how a send ended
   by itself; no more reloading the page to find out.
 * **Optional courier services per shipment** — SMS on delivery and return receipt,
   set per courier as always on, offered in the review step, or off; charged on 
   the first box only (premium).
 * **Several boxes on one order** — each box gets its own label and its own tracking
   number, cash on delivery and declared value ride on the first, and a cancellation
   cancels the whole order (premium).
 * **A6 labels for thermal printers** — the same address label with a page to itself
   instead of a quarter of a sheet (premium).
 * **Book of COD payouts** — what the courier owes you, grouped by dispatch day,
   marked paid a day at a time, with an export to CSV (premium).
 * New: a default shipment contents setting, used when an order’s own items cannot
   name themselves.
 * New: a free/premium comparison on the settings screen, built from the same list
   the features are registered in — it can name nothing the build does not ship.
 * Improved: every Kurirko order note now opens with one symbol for its kind of 
   event, so a long order history can be scanned instead of read.
 * Improved: Kurirko’s own buttons wear WordPress’ icons instead of typographic 
   stand-ins.
 * Improved: the shipment-status feed both screens poll answers for the whole set
   in one query instead of three per order — a batch of 200 costs 17 queries, not
   603.
 * Improved: the rescue counter adds up the postage a rescued parcel saved, not 
   the whole cash-on-delivery amount it carried.

#### 0.2.0

 * **Address picker** — when the courier does not recognise an address, pick the
   settlement and the street from the courier’s own directory. The choice travels
   as the courier’s codes, so two places with the same name resolve to the one you
   actually picked.
 * **“I already have a tracking number”** — record a parcel you handed over at the
   counter. Tracking starts and the customer is notified; no label is printed, because
   the courier already has one.
 * **What this courier supports** — each courier’s card now lists what it can and
   cannot do, and says what an absence means for you in plain words.
 * Wording — the plugin and the customer’s email now say “broj pošiljke” everywhere
   instead of one courier’s own term for it.
 * Fix: a cancelled parcel could still chase the customer with a “collect your parcel”
   reminder, and the reminder guard it left behind silenced the next shipment’s 
   reminder.
 * Fix: a tracking number typed in by hand kept blocking the address label of a 
   LATER, real shipment on the same order.
 * Fix: the shipment email to the customer could name the wrong courier and link
   the wrong tracking page.
 * Fix: a company buying as a company was reduced to its contact person on the label;
   the company name and tax number now travel where the courier accepts them.
 * Fix: sending or refreshing tracking could block the screen for up to twenty seconds
   when the courier went quiet. Waiting now happens only in background jobs.
 * Under the hood: the core no longer knows which courier it is talking to. That
   is what lets further couriers be added without touching how your orders work.

#### 0.1.1

 * Onboarding: five-step guide with collapsible panel, real error messages from 
   the courier, payment-gateway checkboxes, field validation hints.

#### 0.1.0

 * Initial release: send a shipment, address label and acceptance book (PDF), tracking,
   address validation, diagnostics, Latin/Cyrillic interface. Pošta Srbije (Post
   Express) courier; HPOS and Cart/Checkout Blocks compatible.

## Meta

 *  Version **0.4.1**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/kurirko/) and [Serbian](https://sr.wordpress.org/plugins/kurirko/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/kurirko)
 * Tags
 * [serbia](https://vec.wordpress.org/plugins/tags/serbia/)[shipping](https://vec.wordpress.org/plugins/tags/shipping/)
   [woocommerce](https://vec.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://vec.wordpress.org/plugins/kurirko/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/kurirko/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/kurirko/reviews/)

## Contributors

 *   [ Kurirko ](https://profiles.wordpress.org/expresskurirko/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/kurirko/)