Conformance with the Packeta documentation
What the add-on does, against the official Packeta documentation (docs.packeta.com: Packeta API, API reference, Label printing, Packet tracking, PUDO delivery widget, Home delivery, Common issues, Carrier overview; read November 2026). The add-on is proven against a local mock that follows these pages; it has not been run against your Packeta account until you test the connection.
| Topic | Documented behaviour | What the add-on does |
|---|---|---|
| Interfaces and endpoint | SOAP and REST/XML with identical functionality; REST: HTTP POST of an XML body to https://www.zasilkovna.cz/api/rest, the root element is the method, the first argument is apiPassword; the answer is <response><status>ok|fault</status> |
REST/XML only. One POST per call; ok returns the result, fault is turned into an error with the fault name and the field list |
| Sandbox | None. “You can use your production account for testing purposes, as no charges apply unless a packet physically enters the Packeta network”; a dedicated testing sender is suggested | Test mode is a second set of credentials on the same API (use a testing sender). Same host in both modes |
| Credentials | API key (16 characters, public: widget and feeds) and API password (secret: API calls) | Both on the Connection page; the password sealed with AES-256-GCM, never logged; the key is public by design |
| Test connection | (no dedicated method) | packetAttributesValid with throw-away data: a validation fault means the password was accepted, IncorrectApiPasswordFault means it was not; sender and approval faults are shown. The method has no side effects. The reading that a validation fault means “accepted” is ours: verify with your account |
| Create packet | createPacket(packetAttributes) returns id, barcode (Z + id), barcodeText; required: number, name, surname, addressId, value, weight, and e-mail or phone; eshop when using more senders |
Sends these plus currency, cod, company, street / houseNumber / city / zip (home delivery), carrierPickupPoint (partner points). Stores the packet with its barcode |
| Pick-up points | addressId is the branch id from the widget; external carrier pick-up points: carrier id in addressId plus carrierPickupPoint |
Both. Partner points come from the widget with the carrier ids you configure |
| Home delivery | addressId is the carrier id (official carrier list: CZ 106, SK 131, HU 4159, RO 4161); address fields required |
Carrier id per country from a setting (those defaults); street and house number are split from the address, house number kept with its slash part |
| Currency and COD | Optional currency, default is the destination country’s currency; CZK COD must be a whole number, HUF a multiple of 5; max packet value 20 000 CZK or 700 EUR; other currencies need a conversion set up in the client section |
Converts the order total into the destination currency with the store’s rates; rounds COD as documented; caps the insured value at the limit and refuses a COD above it; refuses when no destination currency can be used |
| Phone | Mobile number in the formats of the “Phone number formats” table, with or without + / 00 |
Normalised to the international digits of the destination country (CZ, SK, HU, RO, PL formats of the table); otherwise the e-mail is used |
| Names and notes | Emoji in names are the usual validation error | Control characters, quotes and emoji are removed; first and last name limited to 32 characters |
| Labels | Packeta labels (pick-up points, Z-BOXes): packetLabelPdf formats A6 on A6, A7 on A7, A6 on A4, A7 on A4, 105x35mm on A4, A8 on A8; packetLabelZpl A6/A7 at 203/300 dpi; the answer is base64 (PDF) or XML-escaped (ZPL). Carrier labels: A6 only, via packetCourierLabelPdf/Zpl with the courier number; Packeta label as fallback |
All of these. The courier number comes from packetInfo (courierInfo). ZPL is unescaped before it is stored. Carrier label not supported or not ready in ten minutes: Packeta label |
| Bulk labels | packetsLabelsPdf for several packets |
Used for the merged PDF of selected packets that have Packeta labels |
| Tracking | packetStatus, packetTracking, packetCourierTracking; status code table 1 to 33 and 999; carriers are synchronised three times a day |
packetStatus by cron every hour for open packets (every 6 hours for packets with a problem); the status code is mapped to created, in transit, delivered, problem, cancelled. External carrier history (packetCourierTracking) is not read: the carrier tracking link from packetInfo is shown instead |
| Web tracking | https://tracking.packeta.com/<lang>/?id=<packet id> |
Link on the order, with the Z barcode. The page accepts the packet id; verify that the Z form opens your packet before you rely on it |
| Cancel | cancelPacket for packets not physically submitted; CancelNotAllowedFault otherwise |
Cancel button; the fault text is shown |
| Push tracking | Activated on request by Packeta (integrations team); HTTPS endpoint; POST JSON, headers X-Webhook-Timestamp, X-Webhook-Signature = HMAC-SHA256 of timestamp.rawBody with the signing key, X-Webhook-Event-Id; HTTP 200/202 = success; retries with back-off up to 8 hours |
The endpoint verifies the signature on the raw body in constant time, rejects timestamps older than 24 hours, deduplicates by event id, answers at once and applies the status through the queue |
| Pick-up point widget | Library https://widget.packeta.com/v6/www/js/library.js, Packeta.Widget.pick(apiKey, callback, options); the widget needs the API key, never the password; options such as vendors, country, language, appIdentity |
Loaded on the checkout only. Vendors are built from the widget country setting (pick-up points and Z-BOXes) or the partner carrier ids |
| Validation of the point | “Always validate the selected PUDO point on the server side”: POST https://widget.packeta.com/v6/pps/api/widget/v1/validate with apiKey, point, options; answers isValid, point, errors |
Every selection is validated before it is kept; the validated name and address are stored, not the browser’s |
| Errors | Faults such as PacketAttributesFault (with AttributeFault list), IncorrectApiPasswordFault, ExternalGatewayFault, PacketIdFault, CancelNotAllowedFault |
HTTP 200 for every answer: faults map to permanent errors, except ExternalGatewayFault and network errors / HTTP 5xx, which are retried |
| Rate limits | Not stated on the pages we read | Back-off retries, no parallel bursts, at most 200 packets checked per cron run |
Not covered in 1.0.0
Section titled “Not covered in 1.0.0”Customs declarations (outside the EU), returns and claim-assistant packets, B2B packets, dispatch orders / shipments (delivery notes, createShipment), carrier services (carrierService), 18+ delivery, scheduled delivery, Packeta data feeds as a map replacement, SOAP, external carrier tracking history.