{"id":372438,"date":"2026-10-09T15:44:18","date_gmt":"2026-10-09T15:44:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/drusoft-shipping-for-sameday\/"},"modified":"2026-10-09T19:48:13","modified_gmt":"2026-10-09T19:48:13","slug":"drusoft-shipping-for-sameday","status":"publish","type":"plugin","link":"https:\/\/fa-af.wordpress.org\/plugins\/drusoft-shipping-for-sameday\/","author":23474490,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.3","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Drusoft Shipping for Sameday","header_author":"DRUSOFT LTD","header_description":"A clean, conflict-free Sameday integration for Bulgaria \u2014 live prices, easybox and address delivery, waybills and labels.","assets_banners_color":"f6f6f5","last_updated":"2026-10-09 19:48:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ventzie555\/drusoft-shipping-for-sameday","header_author_uri":"https:\/\/drusoft.dev\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":71,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"ventzie","date":"2026-10-09 15:43:52","revision":3737005},"1.0.4":{"tag":"1.0.4","author":"ventzie","date":"2026-10-09 19:48:13","revision":3737265}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3737005,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3737005,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3737005,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3737005,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3","1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3737005,"resolution":"1","location":"assets","locale":"","width":1080,"height":1262},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3737005,"resolution":"2","location":"assets","locale":"","width":720,"height":540}},"screenshots":{"1":"Checkout with the three Sameday delivery options and the easybox list.","2":"Map picker for easybox lockers and SAMEDAY points."}},"plugin_section":[],"plugin_tags":[2986,243117,175252,3546,286],"plugin_category":[45],"plugin_contributors":[259833],"plugin_business_model":[],"class_list":["post-372438","plugin","type-plugin","status-publish","hentry","plugin_tags-bulgaria","plugin_tags-easybox","plugin_tags-sameday","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-ventzie","plugin_committers-ventzie"],"banners":{"banner":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/banner-772x250.png?rev=3737005","banner_2x":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/banner-1544x500.png?rev=3737005","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/icon-128x128.png?rev=3737005","icon_2x":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/icon-256x256.png?rev=3737005","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/screenshot-1.png?rev=3737005","caption":"Checkout with the three Sameday delivery options and the easybox list."},{"src":"https:\/\/ps.w.org\/drusoft-shipping-for-sameday\/assets\/screenshot-2.png?rev=3737005","caption":"Map picker for easybox lockers and SAMEDAY points."}],"raw_content":"<!--section=description-->\n<p><strong>Drusoft Shipping for Sameday<\/strong> connects a WooCommerce store in Bulgaria to the Sameday courier. Customers see live Sameday prices at checkout and choose delivery to their door, to an easybox locker or to a SAMEDAY point; the merchant creates, prints and cancels waybills from the order screen.<\/p>\n\n<h4>Important Compatibility Note<\/h4>\n\n<p>This plugin is currently <strong>not compatible<\/strong> with the WooCommerce Block Cart and Block Checkout pages. Please ensure your store uses the classic shortcode-based Cart (<code>[woocommerce_cart]<\/code>) and Checkout (<code>[woocommerce_checkout]<\/code>) pages.<\/p>\n\n<h4>For Your Customers<\/h4>\n\n<ul>\n<li><strong>Three delivery options<\/strong> \u2014 to an address (24H), to an easybox locker, or to a SAMEDAY point.<\/li>\n<li><strong>Live prices<\/strong> \u2014 each option is priced by Sameday for the actual parcel, city and payment method.<\/li>\n<li><strong>City list<\/strong> \u2014 the customer picks a region, then a city from a searchable list (Latin or Cyrillic); the postcode fills itself.<\/li>\n<li><strong>Only what the city has<\/strong> \u2014 easybox and SAMEDAY point are offered only in cities that have one, with a searchable list of that city's locations.<\/li>\n<li><strong>Map picker<\/strong> \u2014 a map of every easybox and SAMEDAY point in the country, opened on the customer's city, with filters and search. Picking a location elsewhere sets the region, city and delivery type by itself.<\/li>\n<li><strong>Full lockers hidden<\/strong> \u2014 locations Sameday reports as over capacity are not offered.<\/li>\n<\/ul>\n\n<h4>For Merchants<\/h4>\n\n<ul>\n<li><strong>HPOS Compatible<\/strong> \u2014 Fully supports WooCommerce High-Performance Order Storage.<\/li>\n<li><strong>Automated Data Sync<\/strong> \u2014 Uses Action Scheduler to refresh Bulgarian cities and Sameday pickup locations daily, so checkout never waits on the API.<\/li>\n<li><strong>Fallback prices<\/strong> \u2014 if Sameday cannot be reached, checkout still shows a price from a table you configure.<\/li>\n<li><strong>Waybill Management<\/strong> \u2014 Create, print (PDF) and cancel waybills from the order edit screen, or create them automatically when an order becomes Processing or On hold.<\/li>\n<li><strong>Cash on delivery collected correctly<\/strong> \u2014 the waybill always carries the order total, never a stale checkout estimate.<\/li>\n<li><strong>Declared value<\/strong> \u2014 off, above a threshold, or always.<\/li>\n<li><strong>Open before paying<\/strong> \u2014 optionally add Sameday's \u201e\u041e\u0442\u0432\u043e\u0440\u0438 \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043f\u043b\u0430\u0442\u0438\u0448\u201c extra to every waybill for delivery to an address.<\/li>\n<li><strong>Demo and production<\/strong> \u2014 switch between Sameday's demo and live environments in the settings.<\/li>\n<li><strong>Bulgarian (bg_BG) Translation Included.<\/strong><\/li>\n<\/ul>\n\n<h4>Also Ship via Speedy or Econt?<\/h4>\n\n<p>This plugin has siblings for the other Bulgarian couriers: <a href=\"https:\/\/wordpress.org\/plugins\/drusoft-shipping-for-speedy\/\">Drusoft Shipping for Speedy<\/a> and <a href=\"https:\/\/wordpress.org\/plugins\/drusoft-shipping-for-econt\/\">Drusoft Shipping for Econt<\/a>. All three share the same checkout experience, map picker and order screens, and are built to run side by side on one checkout.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin relies on the <strong>Sameday API<\/strong>, a third-party service provided by <strong>\u0414\u0435\u043b\u0438\u0432\u044a\u0440\u0438 \u0421\u043e\u043b\u044e\u0448\u044a\u043d\u0441 \u0415\u041e\u041e\u0414<\/strong> (Delivery Solutions EOOD, operator of the Sameday brand in Bulgaria), to deliver its shipping functionality. The plugin cannot operate without a valid Sameday API account.<\/p>\n\n<p>The checkout map also loads map tiles from <strong>OpenStreetMap<\/strong>.<\/p>\n\n<h4>What the service is<\/h4>\n\n<p>Sameday is a courier company operating in Bulgaria, Romania and Hungary. Its REST API lets merchants price shipments, create and cancel waybills, download labels, and retrieve cities and pickup locations (easybox lockers and SAMEDAY points).<\/p>\n\n<h4>What data is sent and when<\/h4>\n\n<p>Authentication: the API username and password are exchanged once for a token, which is cached and sent as an <code>X-AUTH-TOKEN<\/code> header on later requests.<\/p>\n\n<ul>\n<li><strong>Recipient data<\/strong> (name, phone, email, city, county, address, postcode, chosen pickup location) \u2014 sent when a shipping price is calculated at checkout and when a waybill is created.<\/li>\n<li><strong>Shipment details<\/strong> (pickup point id, weight, package count, service, cash-on-delivery amount, declared value, order number, item descriptions) \u2014 sent when a price is calculated and when a waybill is created.<\/li>\n<li><strong>Waybill numbers<\/strong> \u2014 sent when a label is downloaded or a waybill is cancelled.<\/li>\n<li><strong>No customer data<\/strong> is sent during the daily location sync, which only downloads cities and pickup locations.<\/li>\n<\/ul>\n\n<p>Map tiles are requested from OpenStreetMap by the customer's browser only when the customer opens the map picker; the request reveals the customer's IP address and the map area viewed.<\/p>\n\n<h4>Service links<\/h4>\n\n<ul>\n<li>Sameday: <a href=\"https:\/\/sameday.bg\/\">https:\/\/sameday.bg\/<\/a><\/li>\n<li>Sameday general terms: <a href=\"https:\/\/sameday.bg\/obshti-usloviya-otnosno-predostavyaneto\/\">https:\/\/sameday.bg\/obshti-usloviya-otnosno-predostavyaneto\/<\/a><\/li>\n<li>Sameday privacy notice: <a href=\"https:\/\/sameday.bg\/sabshchenieto-za-poveritelnost-28-03\/\">https:\/\/sameday.bg\/sabshchenieto-za-poveritelnost-28-03\/<\/a><\/li>\n<li>OpenStreetMap tile usage policy: <a href=\"https:\/\/operations.osmfoundation.org\/policies\/tiles\/\">https:\/\/operations.osmfoundation.org\/policies\/tiles\/<\/a><\/li>\n<li>OpenStreetMap copyright: <a href=\"https:\/\/www.openstreetmap.org\/copyright\">https:\/\/www.openstreetmap.org\/copyright<\/a><\/li>\n<\/ul>\n\n<h3>Bundled Libraries<\/h3>\n\n<p>The map picker uses <strong>Leaflet 1.9.4<\/strong> (https:\/\/leafletjs.com\/), bundled locally in\n    assets\/vendor\/leaflet\/ rather than loaded from a CDN, so no request leaves the visitor's\nbrowser until they open the map. Leaflet is distributed under the BSD 2-Clause License; its\nlicence text ships alongside it at <code>assets\/vendor\/leaflet\/LICENSE<\/code>.<\/p>\n\n<h3>Sameday API Endpoints<\/h3>\n\n<p>This plugin communicates with one host per environment:<\/p>\n\n<ul>\n<li><strong><code>api.sameday.bg<\/code><\/strong> \u2014 production<\/li>\n<li><strong><code>sameday-api-bg.demo.zitec.com<\/code><\/strong> \u2014 demo<\/li>\n<\/ul>\n\n<h4>Authentication<\/h4>\n\n<ul>\n<li><strong><code>POST \/api\/authenticate<\/code><\/strong> \u2014 Exchanges the username and password for a token, cached until shortly before it expires.<\/li>\n<\/ul>\n\n<h4>Location Data<\/h4>\n\n<ul>\n<li><strong><code>GET \/api\/geolocation\/city<\/code><\/strong> \u2014 Bulgarian cities with their county, stored in <code>wp_drushfs_cities<\/code>.<\/li>\n<li><strong><code>GET \/api\/client\/ooh-locations<\/code><\/strong> \u2014 easybox lockers and SAMEDAY points, stored in <code>wp_drushfs_lockers<\/code>.<\/li>\n<li><strong><code>GET \/api\/client\/services<\/code><\/strong> \u2014 Services enabled for the account.<\/li>\n<li><strong><code>GET \/api\/client\/pickup-points<\/code><\/strong> \u2014 The merchant's pickup points, for the settings screen.<\/li>\n<\/ul>\n\n<h4>Pricing<\/h4>\n\n<ul>\n<li><strong><code>POST \/api\/awb\/estimate-cost<\/code><\/strong> \u2014 Price for a shipment, used at cart and checkout.<\/li>\n<\/ul>\n\n<h4>Shipment Management<\/h4>\n\n<ul>\n<li><strong><code>POST \/api\/awb<\/code><\/strong> \u2014 Creates a waybill.<\/li>\n<li><strong><code>GET \/api\/awb\/download\/{awbNumber}<\/code><\/strong> \u2014 Downloads the label PDF.<\/li>\n<li><strong><code>DELETE \/api\/awb\/{awbNumber}<\/code><\/strong> \u2014 Cancels a waybill.<\/li>\n<li><strong><code>GET \/api\/client\/awb\/{reference}<\/code><\/strong> \u2014 Looks a shipment up by order number.<\/li>\n<li><strong><code>GET \/api\/client\/status-sync<\/code><\/strong> \u2014 Shipment status changes.<\/li>\n<\/ul>\n\n<h4>Rate Limiting &amp; Caching<\/h4>\n\n<ul>\n<li><strong>Local database tables<\/strong> \u2014 Cities and pickup locations are synced once per day and queried locally.<\/li>\n<li><strong>Token caching<\/strong> \u2014 One authentication per token lifetime rather than one per request.<\/li>\n<li><strong>Quote caching<\/strong> \u2014 Prices are cached for 15 minutes per shipment shape.<\/li>\n<li><strong>Map data<\/strong> \u2014 The pickup list is loaded per city; the map's country-wide list is fetched only when the customer opens the map and is cached for an hour.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>drusoft-shipping-for-sameday<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Ensure <strong>WooCommerce<\/strong> is installed and active.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Navigate to <strong>WooCommerce &gt; Settings &gt; Shipping &gt; Shipping Zones<\/strong>.<\/li>\n<li>Add or edit a shipping zone (e.g. \"Bulgaria\").<\/li>\n<li>Click <strong>Add shipping method<\/strong> and select <strong>Sameday<\/strong>.<\/li>\n<li>Choose the environment, enter your <strong>Sameday API username and password<\/strong>, and click <strong>Save Changes<\/strong>. The credentials are checked immediately and the first location sync runs.<\/li>\n<li>Select your <strong>pickup point<\/strong> and the delivery options you want to offer, then save again.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20sameday%20credentials%20do%20i%20need%3F\"><h3>What Sameday credentials do I need?<\/h3><\/dt>\n<dd><p>An API username and password issued by Sameday for your contract. Demo credentials and production credentials are separate \u2014 ask Sameday's integration team for both.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20the%20woocommerce%20block%20checkout%3F\"><h3>Does this plugin support the WooCommerce Block Checkout?<\/h3><\/dt>\n<dd><p>Not yet. The plugin currently requires the classic shortcode-based Checkout page (<code>[woocommerce_checkout]<\/code>).<\/p><\/dd>\n<dt id=\"how%20are%20pickup%20locations%20kept%20up%20to%20date%3F\"><h3>How are pickup locations kept up to date?<\/h3><\/dt>\n<dd><p>The plugin uses the WooCommerce Action Scheduler to refresh cities, easybox lockers and SAMEDAY points from the Sameday API once a day. You can monitor the scheduled action (<code>drushfs_sync_locations_event<\/code>) under <strong>WooCommerce &gt; Status &gt; Scheduled Actions<\/strong>. The settings screen shows when the last refresh ran.<\/p><\/dd>\n<dt id=\"how%20is%20shipping%20cost%20calculated%3F\"><h3>How is shipping cost calculated?<\/h3><\/dt>\n<dd><p>Each delivery option is priced live by Sameday's <code>estimate-cost<\/code> endpoint for the parcel weight, destination, cash-on-delivery amount and declared value. Quotes are cached for 15 minutes so a checkout does not call the API on every keystroke. If Sameday cannot be reached, the fallback prices from the settings are used instead.<\/p><\/dd>\n<dt id=\"why%20is%20the%20sameday%20point%20option%20missing%20at%20checkout%3F\"><h3>Why is the SAMEDAY point option missing at checkout?<\/h3><\/dt>\n<dd><p>Each pickup option appears only when the customer's city has such a location. A city with no SAMEDAY point offers address delivery and, if it has one, easybox.<\/p><\/dd>\n<dt id=\"can%20i%20automatically%20generate%20waybills%3F\"><h3>Can I automatically generate waybills?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Create automatically<\/strong> in the shipping method settings. A waybill is created when an order becomes \"Processing\" or \"On hold\"; an order that already has one is never given a second.<\/p><\/dd>\n<dt id=\"the%20browser%20console%20shows%20a%20404%20for%20%E2%80%9C%E2%80%A6%2Fundefinedwc%2Fstore%2Fv1%2Fcart%E2%80%9D%20on%20the%20cart%20page.%20is%20that%20this%20plugin%3F\"><h3>The browser console shows a 404 for \u201c\u2026\/undefinedwc\/store\/v1\/cart\u201d on the cart page. Is that this plugin?<\/h3><\/dt>\n<dd><p>No. That request is made by WooCommerce's own Mini-Cart block (the cart icon in the header of block themes such as Twenty Twenty-Five) when the cart itself is the classic shortcode page this plugin requires. WooCommerce builds the address from a value that is not set on that page, so it starts with the word \u201cundefined\u201d. It appears with every shipping plugin switched off as well, and it does not affect prices, delivery options or orders \u2014 only the header icon's item count may lag until the next page load.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20or%20delete%20the%20plugin%3F\"><h3>What happens to my data if I deactivate or delete the plugin?<\/h3><\/dt>\n<dd><p>Deactivating stops the daily sync and nothing else \u2014 your settings and the synced cities and pickup locations stay, so switching the plugin back on costs nothing. Deleting the plugin removes its two tables, its settings and its cached data. Orders keep their waybill number and pickup location either way.<\/p><\/dd>\n<dt id=\"can%20i%20request%20a%20courier%20from%20wordpress%3F\"><h3>Can I request a courier from WordPress?<\/h3><\/dt>\n<dd><p>No. Sameday's client API has no courier-request endpoint. Collection follows your pickup point arrangement with Sameday, or you drop parcels into an easybox.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Improved: when Sameday stops answering, the fallback table prices the checkout for two minutes and then Sameday is asked again. A table price is now remembered for one minute instead of fifteen, so live prices return as soon as Sameday does. A price request waits at most 15 seconds instead of 45.<\/li>\n<li>Improved: a Sameday method saved without a pickup point used to price everything from the fallback table in silence. The pickup point is now selected automatically when the account has only one; otherwise the settings refuse to save without one, a notice appears on the WooCommerce screens and the log says why.<\/li>\n<li>Fixed: a Sameday reply without a price is logged instead of silently falling back.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Security: the delivery choice posted with the cart or checkout is only read when WooCommerce's own nonce for that request verifies; any other request leaves the customer's saved choice untouched. The checkout validation and order-meta hooks check the checkout nonce themselves as well.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed: activating the plugin no longer contacts Sameday. Activation used to fetch cities, lockers and services straight away, which could hold the admin for over two minutes if Sameday was unreachable; the first sync is now scheduled a minute after activation and runs in the background instead.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Three delivery options priced live by Sameday: to an address (24H), to an easybox and to a SAMEDAY point.<\/li>\n<li>Region and city pickers that fill the postcode, offering only the options the chosen city actually has.<\/li>\n<li>Searchable pickup list plus a map of every location in the country, opened on the customer's city.<\/li>\n<li>Daily location sync through Action Scheduler; fallback prices when Sameday cannot be reached.<\/li>\n<li>Waybills created by hand or automatically, PDF labels, cancellation and tracking links.<\/li>\n<li>Optional \"open before paying\" extra on address deliveries; declared value off, above a threshold or always.<\/li>\n<li>Demo and production environments; Bulgarian translation included.<\/li>\n<li>Deactivating the plugin keeps your settings and synced locations; they are removed only when the plugin is deleted.<\/li>\n<\/ul>","raw_excerpt":"A clean, conflict-free Sameday integration for WooCommerce stores in Bulgaria \u2014 live prices, easybox and address delivery, waybills and labels.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/372438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=372438"}],"author":[{"embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ventzie"}],"wp:attachment":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=372438"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=372438"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=372438"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=372438"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=372438"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=372438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}