VirtueMart shipment plugin for Zasilkovna / Packeta. Allows customers to select a pickup point or Z-Box directly in the cart, and enables shop owners to export shipments to Packeta (individually or in bulk) and print labels from the admin panel.
| Requirement | Version |
|---|---|
| Joomla | 4.x, 5.x |
| VirtueMart | 4.x |
| PHP | 8.0+ |
| MySQL | 5.7+ / MariaDB 10.3+ |
| Checkout | VirtueMart or RuposTel One Page Checkout (com_onepage 2.0.x) |
| Current version | 1.4.11 |
- Requirements
- Installation
- Enabling the Plugin
- Global Configuration
- Creating a Shipping Method
- Delivery Type
- Home Delivery (HD)
- Pickup Point Widget
- Shipping Price
- Exporting Shipments to Packeta
- Bulk Export and Labels
- Printing Labels
- Packet IDs and Statuses in the Orders List
- Cash on Delivery (COD)
- Currencies and Rounding
- Uninstallation
- Troubleshooting
1. Requirements
- Joomla 4.x or 5.x (VirtueMart does not support Joomla 6 yet)
- VirtueMart 4.x
- PHP 8.0 or newer
- MySQL 5.7+ / MariaDB 10.3+
- Active Zasilkovna / Packeta account with API access
Checkout: The plugin works both in the standard VirtueMart checkout and in RuposTel One Page Checkout (
com_onepage) – since version 1.4.0, with no extra configuration. See One Page Checkout in section 8.
Packeta Credentials You Will Need
| Credential | Where to Find It | Purpose |
|---|---|---|
| API Key (Widget) | Packeta Client Section > Settings > API | Displays the pickup point selection widget on the frontend |
| API Password | Packeta Client Section > Settings > API | Exporting shipments and printing labels (backend) |
| Sender Label | Packeta Client Section > User Information > Senders | Sender identification in the shipment (required) |
| Carrier ID (HD only) | Carrier feed – see section 7 | Carrier ID for home delivery |
2. Installation
- Download the installation ZIP file
plg_vmshipment_semazasilkovna-X.Y.Z.zip. - Log in to the Joomla administration panel.
- Navigate to System > Install > Extensions.
- Upload the ZIP file.
- A success message confirms the plugin has been installed.
Upgrade: Same procedure as installation. Joomla uses
method="upgrade"and preserves all existing data.
IMPORTANT after every update: Open any shipping method based on this plugin in VirtueMart and save it (Save & Close is enough, change nothing). VirtueMart adds new columns to its shipment table only when a shipping method is saved – installing the package does not do it. Without this step, features relying on a new column will fail (e.g. shipment cancellation added in version 1.4.2).
The package also contains the system plugin plg_system_semazasilkovna, which is installed and enabled automatically. It provides the bulk export buttons in the VirtueMart orders list (see section 11).
3. Enabling the Plugin
After installation, the shipment plugin must be manually enabled:
- Navigate to Extensions > Plugins (or System > Manage > Plugins).
- Search for
semazasilkovnaorZasilkovna. - Click the plugin SemaShipping Packeta - Zasilkovna shipping for VirtueMart (group
vmshipment) and set Status = Enabled. - Save.
The system plugin
plg_system_semazasilkovnaenables itself during installation – no manual step required.
The plugin does not display anything on its own – you must create a shipping method in VirtueMart first (see section 5).
4. Global Configuration
In the plugin settings (Extensions > Plugins > click the plugin name), fill in the global parameters that apply to all shipping methods based on this plugin:
| Parameter | Description |
|---|---|
| API Key (Widget) | Public API key for Packeta Widget v6 (16 characters). Displayed on the frontend – not secret. |
| API Password | Secret API password for REST API calls (shipment export, labels). NEVER exposed on the frontend. |
| Sender Label | The sender name exactly as listed in the Packeta Client Section (User Information > Senders). Packeta requires it on export and rejects mismatches. |
| Default Weight (kg) | Fallback package weight in kg if not specified on products. Default: 1 kg. |
| COD Payment IDs | Comma-separated VirtueMart payment method IDs that are Cash on Delivery. COD amount is automatically set during export (see section 14). |
| Label Format | PDF label format for printing: A6 on A4, A7 on A4, A6 on A6, A7 on A7. |
| Export Order Status | VirtueMart order status codes used to build the list of orders for bulk export. Multiple statuses may be separated by commas (e.g. E,Q). Default: C (confirmed) – see the warning below the table. |
| Order Status After Export | VirtueMart status code the order is switched to once the shipment gets its Packeta ID (e.g. S = shipped). Empty = leave the status unchanged. Applies to both single and bulk export. Whether the customer is notified by e-mail is governed by VirtueMart settings (Configuration > Orders > statuses the customer is notified about). |
Important: Without the API Key and API Password, the plugin will not function. The API Key is required for the frontend widget, and the API Password for backend shipment export and label printing.
The default status
Calmost never fits. Every shop customises its status codes. Look at VirtueMart > Orders > Order Statuses and pick the status (or statuses) in which your orders wait for dispatch – oftenE(In progress) orQ(Pending). StatusCmeans "Confirmed / paid"; cash-on-delivery orders never reach it, so with the default setting bulk export would find nothing.If the parameter is empty or malformed, the plugin deliberately exports nothing – better nothing than accidentally everything, cancelled orders included.
5. Creating a Shipping Method
The plugin serves as a foundation for VirtueMart shipping methods. A single plugin installation can power any number of methods – e.g., one for pickup points and one home delivery method per destination country.
Steps
- In VirtueMart admin, navigate to Shop > Shipment Methods.
- Click New.
- Fill in:
- Shipment Name: Name displayed to the customer (e.g., "Zasilkovna – Pickup Point")
- Published: Yes
- Shipment Description: Optional description
- Shipment Method: Select SemaShipping Packeta - Zasilkovna shipping for VirtueMart
On some installations VirtueMart shows the raw language key
PLG_VMSHIPMENT_SEMAZASILKOVNAin this dropdown instead of the name. This is a VirtueMart quirk (it does not load plugin language files into this list) – pick that entry, it is the right plugin. In Extensions > Plugins the name is displayed correctly.
- Switch to the Configuration tab (per-method settings).
- Configure the parameters described in the following sections.
- Save.
6. Delivery Type
Each shipping method has a Delivery Type parameter (radio):
Pickup Points + Z-Boxes (pickup)
- A widget for selecting a pickup point is displayed on the frontend.
- The customer must select a point before placing the order.
- Supports both internal Zasilkovna points and external ones (Z-Boxes, Alzabox, etc.).
- See section 8 for details.
Home Delivery (hd)
- Only a radio button with the price is shown on the frontend – no widget.
- The delivery address is taken from the order (shipping address, falling back to the billing address).
- Requires the HD Carrier ID parameter – see section 7.
Delivery Type Parameters
| Parameter | Description |
|---|---|
| Widget Country | ISO country code for filtering points in the widget (e.g., cz, sk). Default: cz. Applies to pickup only. |
| Carrier Filter (widget) | Comma-separated carrier IDs to filter the widget. Empty = all. Applies to pickup only. |
| HD Carrier ID | Packeta carrier ID for home delivery. Applies to hd only. |
7. Home Delivery (HD)
Home delivery works without the widget – the shipment goes to the delivery address from the order. However, each shipping method carries one HD Carrier ID, valid for one country and one carrier.
Rule: one country = one shipping method. To deliver to five countries, create five methods, each with its own Carrier ID and its own country restriction.
Steps for One Country
- Create a new shipping method as described in section 5.
- Delivery Type = Home Delivery (hd).
- HD Carrier ID = the carrier ID for that country (see the table below).
- Countries = only the single country this method delivers to.
- Set the price, tax, and optionally the weight range (see section 9).
- Save.
Recommended Carrier IDs for Common Countries
| Country | Carrier ID | Carrier | Currency | Separate house number | COD |
|---|---|---|---|---|---|
| Czech Republic | 106 | CZ Zasilkovna domu HD | CZK | no | yes |
| Slovakia | 131 | SK Packeta Home HD | EUR | no | yes |
| Hungary | 4159 | HU Doruceni na adresu HD | HUF | no | yes |
| Germany | 13613 | DE Home Delivery HD | EUR | yes | yes |
| Poland | 1406 | PL DPD HD | PLN | no | yes |
| Austria | 80 | AT Rakouska posta HD | EUR | no | yes |
Alternative carriers, if their terms suit you better:
| Country | Carrier ID | Carrier | Separate house number | COD |
|---|---|---|---|---|
| Hungary | 763 | HU Madarska posta HD | yes | yes |
| Hungary | 3828 | HU Express One HD | no | yes |
| Germany | 6373 | DE Hermes HD | yes | yes |
| Poland | 272 | PL Polska posta 48 HD | no | yes |
| Poland | 3603 | PL InPost HD | no | yes |
| Poland | 4162 | PL Doruceni na adresu HD | yes | yes |
| Austria | 6830 | AT DPD HD | yes | no |
All carriers listed above have a 30 kg per-shipment limit.
Watch the "Separate house number" column: carriers marked "yes" (
separateHouseNumber) require the house number in a dedicated field. See House Number below.
Verifying Carrier IDs and Finding Others
The carrier list changes over time – verify the IDs in your own account before going live. Download the home delivery carrier feed from:
https://www.zasilkovna.cz/api/v4/<API_PASSWORD>/branch.json?address-delivery
Replace <API_PASSWORD> with your secret API password (the same one configured in the plugin – not the 16-character widget API key).
The response is JSON containing a carriers object. The relevant fields for each carrier:
| Field | Meaning |
|---|---|
id | The value for the HD Carrier ID parameter |
country | ISO country code (cz, sk, hu, de, pl, at, ...) |
pickupPoints | false = home delivery (HD), true = pickup point / box |
apiAllowed | Must be true, otherwise the carrier cannot be used via the API |
currency | The currency the carrier accepts COD in |
separateHouseNumber | true = requires the house number in a dedicated field |
disallowsCod | true = carrier does not support COD |
maxWeight | Maximum shipment weight in kg |
The same feed is available in the Packeta Client Section under Carrier Feed.
House Number
Some foreign carriers (separateHouseNumber: true) require the house number separated from the street. The plugin reads it from an order user field named house_number, which VirtueMart does not provide by default.
If you use a carrier with this requirement:
- Navigate to VirtueMart > Shop > User Fields.
- Create a new field with the Name set to exactly
house_number. - Mark it as required and show it in both shipping and billing addresses.
- Save.
Without this field, Packeta returns a
PacketAttributesFaulterror on export.
Currency and COD
Each HD carrier accepts COD in one fixed currency (the Currency column in the tables above). If the order is issued in a different currency, Packeta rejects the COD amount.
- Either configure the matching currency for that country in VirtueMart,
- or do not offer COD on that shipping method.
See also section 15.
8. Pickup Point Widget
For shipping methods with the delivery type Pickup Points + Z-Boxes, a "Choose Pickup Point" button is displayed on the frontend, opening the interactive Packeta Widget v6 map.
How It Works
- The customer selects the Zasilkovna shipping method in the cart.
- Clicks the "Choose Pickup Point" button.
- A widget opens with a map and a list of points.
- After selecting a point, its name is displayed below the button.
- The selection is saved and survives payment method changes, cart updates, and navigation between checkout steps.
Session Persistence
The selected point is stored in the PHP session. This means:
- The selection survives payment method changes and other cart updates.
- After an AJAX page reload, the point is automatically restored.
- The session is cleared only after the order is successfully placed.
Point Filtering
- Country: The "Widget Country" parameter limits points to a specific country (e.g.,
czfor Czech Republic,skfor Slovakia). - Carriers: The "Carrier Filter" parameter allows showing only specific point types (e.g., only Z-Boxes, only Alzabox). Pickup point carrier IDs come from the same feed as HD, but with
pickupPoints: true– see section 7.
Validation: If the customer does not select a pickup point and attempts to complete the order, the message "Please select a Zasilkovna pickup point." is displayed.
One Page Checkout
Since version 1.4.0 the plugin also supports the RuposTel One Page Checkout (com_onepage) checkout. There is nothing extra to configure – the plugin detects that it runs inside OPC and adapts:
- The widget and the selected point render correctly even during the AJAX cart recalculation (OPC redraws the shipping section on every change).
- The message "Please select a Zasilkovna pickup point." is shown next to the shipping method. Without it, the checkout would simply not respond.
- The selected point is part of the key OPC caches the shipping HTML under – two customers with identical carts can never receive each other's pickup point.
Verified combinations
| Joomla | VirtueMart | One Page Checkout |
|---|---|---|
| 4.4.14 | 4.4.6 | 2.0.460 |
| 4.4.14 | 4.6.4 | 2.0.460 |
On both, a complete order was placed through OPC with a pickup point selected, including the shipment export to Packeta and its cancellation.
Prerequisite: The One Page Checkout system plugins must be enabled (
plg_system_opcin particular). With the OPC plugin for VirtueMart disabled, a confirmed order is not stored at all – that is the first thing to check when someone reports "an order without a pickup point".
9. Shipping Price
Each shipping method has its own pricing settings:
| Parameter | Description |
|---|---|
| Shipping Cost | Base shipping cost, excluding VAT – see the warning below. |
| Package Fee | Additional handling / packaging fee (added to the shipping cost), also excluding VAT. |
| Tax Rule | VirtueMart tax rule for the shipping cost (VAT). It is added on top of the shipping cost. |
| Free Shipping Above | Order amount above which shipping is free. Leave empty to disable. |
The Price Is Entered WITHOUT VAT
The Shipping Cost field takes the amount before tax. VirtueMart adds VAT according to the selected Tax Rule. If you enter the amount the customer is supposed to pay, you will charge them that amount plus VAT.
Conversion table for a 21 % rate:
| Customer pays | Enter into Shipping Cost |
|---|---|
| 79 CZK | 65.289256 |
| 119 CZK | 98.347107 |
| 129 CZK | 106.611570 |
In general: price excl. VAT = price incl. VAT / 1.21.
Set the price when you create the shipping method. The first save sticks, but later changes to Shipping Cost on an existing method may not take effect (VirtueMart treats this field as currency-convertible and may keep the stored value on save). If you need to change the price and the change does not apply, delete the shipping method and create it again with the correct price.
Method Display Restrictions
Countries and Blocked Countries live on the first tab of the shipping method ("Shipment Method Information"), not in the Configuration tab among the other plugin parameters. VirtueMart's core fields are used – the restriction works the same, it is just configured elsewhere. If you cannot find these fields in the plugin configuration, that is why.
| Parameter | Description |
|---|---|
| Countries | Allowed countries for this shipping method (first tab). For HD methods, set exactly one country matching the Carrier ID. |
| Blocked Countries | Countries where this method is NOT available (first tab). |
| Minimum Weight | Minimum order weight to show this method. |
| Maximum Weight | Maximum order weight to show this method. We recommend matching the carrier limit (maxWeight from the feed, typically 30 kg). |
| Weight Unit | Weight unit (KG or LB). |
10. Exporting Shipments to Packeta
After receiving an order with Zasilkovna shipping, you can export the shipment to the Packeta system directly from the VirtueMart admin.
Steps
- Navigate to VirtueMart > Orders.
- Open the order detail.
- In the shipping section, you will see information about the selected point (or address for HD).
- Click the "Create Packet in Packeta" button.
- The plugin sends the data to the Packeta API and displays a confirmation with the packet ID.
What Gets Exported
- Pickup point: Point ID, recipient name, email, phone, weight, value.
- External point (Z-Box): Carrier ID + Point ID, plus recipient details.
- Home delivery: Carrier ID + full address (street, house number, city, ZIP code).
- COD: If the payment method is Cash on Delivery, the COD amount is automatically set.
Automatic Order Status Change After Export
If you fill in the Order Status After Export parameter in the global configuration, the plugin switches the order to that status as soon as the shipment receives its Packeta ID. This applies to both single and bulk export.
- Empty field = the status is left alone (default behaviour; updating the plugin changes nothing for you).
- An order already in the target status is skipped – the customer does not get a second notification.
- An unknown status code is not applied and the plugin warns about it.
- Whether the status change sends an e-mail to the customer is decided by VirtueMart, not the plugin: Configuration > Orders > "Order statuses the customer is notified about".
- A failed status change does not cancel the export – the shipment already exists in Packeta and its ID is stored.
Cancelling a Shipment
Since version 1.4.2 a shipment can be cancelled directly from the order detail:
- On an exported order, click the red "Cancel Shipment" button.
- Confirm the prompt – the action is irreversible.
- The plugin sends the request to Packeta and shows the result.
What happens after cancellation:
- The packet ID is not deleted. It stays with the order for reference, only the cancellation date is added.
- Instead of the label, the order shows a Cancelled <date> badge and a "Create Shipment Again" button.
- "Create Shipment Again" clears the shipment fields and creates a new packet in Packeta.
Cancellation is only possible until the shipment has physically been handed over to the carrier. After that Packeta returns a
CancelNotAllowedFaulterror and the plugin displays it – there is no silent "done".
After upgrading from a version older than 1.4.2: cancellation uses a new column in the shipment table, which is created only when any shipping method is saved – see section 2.
Security
- Every export is protected by a CSRF token.
- The API password is never exposed on the frontend.
- All API requests and responses are logged in the
#__sema_zasilkovna_logtable (the API password is masked in logs). - A shipment cannot be exported twice – if already exported, the message "Packet has already been exported." is shown.
11. Bulk Export and Labels
To process multiple orders at once, use the buttons in the VirtueMart orders list. They are provided by the system plugin plg_system_semazasilkovna, installed automatically alongside the shipment plugin.
Steps
- Navigate to VirtueMart > Orders.
- In the toolbar (next to "Update Orders") you will see the "Packeta" button; it opens a menu with Export to Zasilkovna, Download Labels (PDF), Check packet statuses and Help.
- Clicking it sends all not-yet-exported orders in the statuses configured in Export Order Status to Packeta. Multiple statuses may be separated by commas (e.g.
E,Q) – see section 4. - Results appear in a bar below the toolbar – a packet ID for each successful order, or an error message.
- "Download Labels (PDF)" downloads labels for every packet that exists in Packeta and is not cancelled – whatever the order status. It first asks which slot on the sheet to start from, so a partially used sheet can be finished.
Good to Know
- Already-exported orders are skipped – re-running the export creates no duplicates. If there is nothing to export, the message "No unexported orders" is shown.
- An error on one order does not stop the others. Handle failed orders individually from the order detail.
- Bulk labels cover pickup points and home delivery alike. Packeta uses a separate method for each kind, though, and will not merge them into one PDF, so a batch holding both produces two files: the first downloads straight away, the second through a button that appears in the results bar. The chosen sheet position applies to the first file; the second starts on a fresh sheet.
- The number of positions on a sheet follows the label format in the configuration:
A6 on A4has 4,A7 on A4has 8, whileA6 on A6andA7 on A7hold one each (there the position is not asked for and the download starts right away). - If Order Status After Export is filled in, every successfully exported order is switched to that status – see section 10.
- If no orders show up for export, check Export Order Status first. The default
Cmatches no orders in most shops. - The bulk export page has a status drop-down at the top. When the configuration lists several statuses separated by commas, the whole combination is offered as the first entry (e.g. "In Process + Pending") and comes pre-selected. Picking a single status below it narrows the filter to that one; select the first entry again to return to the combination.
- Both export and label download are restricted to users with admin access and protected by a CSRF token.
12. Printing Labels
After a successful shipment export, you can download a PDF label:
- In the order detail, click "Download Label (PDF)".
- The browser downloads a PDF file with the label.
For downloading labels for multiple orders at once, see section 11.
Label Formats
The format is set in the global plugin settings:
| Format | Description |
|---|---|
| A6 on A4 | A6 label on A4 paper (default) |
| A7 on A4 | A7 label on A4 paper |
| A6 on A6 | A6 label on A6 paper (direct printer) |
| A7 on A7 | A7 label on A7 paper (direct printer) |
Label Types
The plugin automatically selects the correct label type based on the delivery method:
- Internal Zasilkovna points: Standard Zasilkovna label (
packetLabelPdf). - External points (Z-Box) and HD: Courier label (
packetCourierLabelPdf) – the plugin first requests a tracking number from Packeta.
13. Packet IDs and Statuses in the Orders List
From version 1.6.0 the plugin prints the packet ID under the order number in the VirtueMart orders list, and the packet status underneath it. You no longer have to open an order detail just to find out whether a packet exists and where it is.
The packet ID badge
- It appears on every order that has a packet created in Packeta – whatever the order status.
- A cancelled packet has its ID struck through, with an explanation in the tooltip.
- The badge loads together with the orders list and needs no configuration.
Check packet statuses
The status is not fetched on every page view – that would mean one Packeta request per packet and the page would open slowly. You ask for it by hand:
- Navigate to VirtueMart > Orders.
- In the menu under the "Packeta" button choose "Check packet statuses".
- The plugin asks Packeta for the status of created, non-cancelled packets and stores it with the order.
Good to Know
- Packeta has no bulk equivalent of the status query, so it is one request per packet. The plugin therefore handles at most 40 packets per click and reports "N packets left – click Check packet statuses again." Click as many times as needed.
- Packets whose status was checked longest ago go first, so repeated clicking works through the whole list.
- Statuses are translated into Czech, Slovak, English, German and Polish. A status the plugin does not know is printed exactly as Packeta returned it – it is never left blank.
- A "cancelled" status is only ever added, never cleared. In the first minutes after a cancellation Packeta replicas answer inconsistently, so the flag would otherwise remove itself.
- When there is nothing to check, the plugin reports "Nothing to check – no created packet that is not cancelled."
- The status listing is available only to users with administration access and is protected by a CSRF token, just like export and labels.
14. Cash on Delivery (COD)
The plugin supports automatic COD detection:
- In the global plugin settings, fill in the "COD Payment IDs" parameter.
- Enter comma-separated VirtueMart payment method IDs that are Cash on Delivery.
- During shipment export, the plugin automatically checks whether the order uses a COD payment method and sets the correct amount.
How to Find the Payment Method ID
- Navigate to VirtueMart > Payment Methods.
- Open the COD payment method.
- The ID is visible in the URL (parameter
virtuemart_paymentmethod_id).
Limitations with Foreign Carriers
- COD must be in the carrier's currency – see section 7 and section 15.
- Some carriers do not support COD at all (
disallowsCod: true, e.g., AT DPD HD). Do not offer COD payment on such a method.
15. Currencies and Rounding
The plugin sends the order currency (the currency field) to Packeta along with the shipment value and any COD amount.
- CZK and HUF have no minor unit – Packeta rejects decimal places for them and returns a
PacketAttributesFaulterror. The plugin therefore rounds both the value and the COD amount to whole numbers for these currencies. - EUR, PLN, and others are sent with decimal places unchanged.
- The order currency should match the carrier currency (the Currency column in the tables in section 7), otherwise Packeta rejects the COD amount.
16. Uninstallation
Steps
- Navigate to Extensions > Manage > Extensions.
- Search for
semazasilkovna. - Uninstall the shipment plugin SemaShipping Packeta - Zasilkovna shipping for VirtueMart.
What Gets Deleted
- The shipment plugin (PHP, JS, CSS, language files)
- The system plugin
plg_system_semazasilkovna(removed automatically) - Table
#__virtuemart_shipment_plg_semazasilkovna(shipment data in orders)
What Is PRESERVED
- Table
#__sema_zasilkovna_log(audit records of API calls)
Why is the log preserved? Records of exported shipments serve as an audit trail. Automatic deletion on uninstall could result in loss of important information. If you want to remove the table, do it manually:
DROP TABLE IF EXISTS `#__sema_zasilkovna_log`;(replace
#__with your actual table prefix)
17. Troubleshooting
Widget Does Not Appear
- Verify the plugin is enabled.
- Verify the shipping method has delivery type Pickup Points + Z-Boxes (not HD).
- Check that the API Key (Widget) is filled in the global plugin settings.
- Check the browser console (F12) for JavaScript errors.
- Verify the page is not blocked by a Content Security Policy (CSP) for the
widget.packeta.comdomain.
Customer Cannot Complete the Order
- For "Pickup Points" methods, the customer MUST select a point. The message "Please select a Zasilkovna pickup point." is displayed correctly.
- For "Home Delivery" methods, no point validation is performed – if the customer cannot complete the order, the issue is elsewhere.
Error During Shipment Export
- Verify the API Password is filled in the global plugin settings.
- Verify the Sender Label matches the sender name in the Packeta Client Section exactly.
- Check the error message – the plugin displays the exact Packeta API response.
- Check the log in the
#__sema_zasilkovna_logtable for request and response details.
PacketAttributesFault Error
Most common causes:
- Missing house number for a carrier with
separateHouseNumber: true– see House Number. - Decimal places in CZK or HUF – handled by the rounding described in section 15.
- Sender Label mismatch with the Packeta Client Section.
- Missing phone or email for a carrier with
requiresPhone/requiresEmail. - Carrier weight limit exceeded (
maxWeight, typically 30 kg).
Home Delivery Method Uses the Wrong Carrier
- Verify the HD Carrier ID matches the country set in the Countries parameter.
- Verify the carrier has
apiAllowed: truein the feed – e.g., "Packeta vecerni doruceni Bratislava HD" (ID 132) cannot be used via the API. - Verify Delivery Type is set to hd (not pickup).
Label Does Not Download
- Verify the shipment was successfully exported (a packet ID must exist).
- Check that the label format in the plugin settings is valid.
- For external points and HD: the plugin needs to obtain a tracking number from Packeta. If this fails, check the API log.
- For bulk download: external points and HD are not part of the bulk PDF – download them individually.
Bulk Export Reports "Unexpected response" or a 500 Error
This is fixed in version 1.4.3. The cause was a shipment plugin loading conflict (Joomla imports the whole vmshipment group and VirtueMart's core weight_countries plugin crashes if it loads before ours – error Class "vmPSPlugin" not found).
- Update the plugin to 1.4.3 or newer.
- Verify the system plugin
plg_system_semazasilkovnais enabled – it is what applies the fix. - The symptom depends on plugin ordering, so it can appear on a site where everything worked before.
Bulk Export Finds No Orders
- Check the Export Order Status parameter. The default
C(Confirmed / paid) is empty in most shops – cash-on-delivery orders never reach it. - Find the right code in VirtueMart > Orders > Order Statuses.
- Separate multiple statuses with commas (
E,Q). An empty or malformed value deliberately exports nothing.
Status check reports that the table has no status columns
The message "The shipment method table has no columns for the packet status" means the site was updated to 1.6.0 but VirtueMart has not added the new columns yet. Open and save any Packeta shipping method – VirtueMart adds them on save. It is the same situation as with cancellation, see section 2.
Cancelling a Shipment Fails With a Missing Column Error
Updating the plugin does not create new fields in the shipment table. Open any shipping method in VirtueMart and save it – this makes VirtueMart reconcile the table schema. See section 2.
A Shipment Cannot Be Cancelled (CancelNotAllowedFault)
Packeta refuses cancellation once the shipment has been handed over to the carrier. In that case resolve the situation directly in the Packeta Client Section.
Order Status Does Not Change After Export
- Verify the Order Status After Export parameter is filled in (empty = the status is deliberately left alone).
- Verify the code matches an existing status in VirtueMart > Orders > Order Statuses.
- An order already in the target status is skipped.
- If the customer receives no e-mail about the change, that is a VirtueMart setting (Configuration > Orders), not the plugin.
The Widget Opens Twice in One Page Checkout, or the Point Disappears
- Update the plugin to 1.4.0 or newer – earlier versions did not support One Page Checkout.
- Verify the OPC system plugins are enabled (
plg_system_opcin particular). - Clear both the Joomla and OPC caches.
Bulk Export Buttons Do Not Appear
- Verify the system plugin
plg_system_semazasilkovnais installed and enabled (Extensions > Plugins, groupsystem). - Verify you are on the VirtueMart > Orders page (the buttons appear nowhere else).
- Check the browser console for JavaScript errors.
COD Amount Not Set
- Verify the COD payment method ID is correctly entered in the "COD Payment IDs" parameter.
- The ID must be a number matching
virtuemart_paymentmethod_idin the payment method URL. - Separate multiple IDs with commas without spaces (e.g.,
3,7). - Verify the carrier supports COD at all (
disallowsCod: false).
Shipping Method Not Displayed
- Check country settings (allowed / blocked).
- Check weight restrictions (min / max weight).
- Verify the method is Published in VirtueMart.
- Verify the plugin is Enabled.
Launch Checklist
- Plugin installed and enabled
- API Key (Widget) filled in
- API Password filled in
- Sender Label filled in and matching the Packeta Client Section
- Shipping method created in VirtueMart and published
- Delivery type selected (pickup or hd)
- Widget Country configured (if pickup)
- HD Carrier ID filled in and verified against the carrier feed (if hd)
- For HD: exactly one country set in the Countries parameter
- Field
house_numbercreated (if the carrier requires a separate house number) - Order currency matches the carrier currency
- COD payment IDs filled in (if using COD)
- Label format selected
- Export Order Status set to the shop's real statuses (not the default
C) - Order Status After Export configured (or deliberately left empty)
- Shipping cost entered WITHOUT VAT and verified in the cart
- Any shipping method opened and saved after the update
- Test order placed and shipment successfully exported
- Label downloaded and printed
- Bulk export tested in the orders list
- Shipment cancellation tested on a test order
- Check packet statuses run and the status shown in the orders list
- If using One Page Checkout, point selection verified directly in OPC