Fixed repeated Pymexpress PDF email notifications by restoring the single-value notification flag check and persisting the sent status after a successful send.
Limited automatic Pymexpress PDF emails to orders created from the day of the hotfix update onward, preventing historical orders from being emailed in bulk.
Hardened premium settings import/export by requiring admin capabilities, validating AJAX nonces, and sanitizing imported values before saving them.
Secured admin and customer order/PDF AJAX actions by validating access, requiring AJAX nonces, and limiting customer downloads to their own orders.
Prevented Pymexpress checkout rates from falling back to zero when the web service fails and stopped transport errors from being printed directly into checkout or AJAX responses.
Prevented CCR and CCR Simple from offering fallback checkout rates when the destination postcode cannot be mapped to a supported GAM or non-GAM area.
Fixed customer PDF downloads in My Account so CCR and Pymexpress orders call their matching AJAX endpoint instead of always using the Pymexpress route.
Added a configurable manual Pymexpress category for CCR Simple and refreshed the built-in local rate table to the current Emprendedor, Mi Pyme, Premium, and Gold prices.
Replaced the legacy Pymexpress location preload with expiring on-demand caches and a one-time cleanup of old permanent location transients to reduce autoloaded options and database overhead.
Restored WordPress 5.2 compatibility for the Pymexpress PDF email cutoff setup and skipped notification emails when the PDF attachment cannot be generated safely.
Validated CCR and Pymexpress orders before reading shipping log metadata and reused the existing Pymexpress order instance when preparing PDF notification emails.
Made the Pymexpress PDF email cutoff conservative for orders without a creation date and stopped writing imported settings values into debug logs.
Reduced recurring cron overhead by avoiding premium cron resyncs on every page load and collapsing the Pymexpress complete-orders scan into a single candidate query with retry-aware selection.
Migrated existing Pymexpress complete-orders cron schedules from every minute to every 4 hours on upgrade and added the new 4-hour interval to the cron settings UI.
Returned a 400 JSON error for malformed AJAX order IDs and preserved imported credential strings without lossy textarea sanitization.
1.6.0
Updated TCPDF to 6.11.2
Updated Freemius WordPress SDK to 2.13.0
Reviewed compatibility with WooCommerce 9.6.1 through 10.6.1
Reviewed compatibility with WordPress 6.7.2 through 6.9.4
Prepared compatibility review for WordPress 7.0 Beta/RC
Reviewed legacy PHP compatibility from 7.4 through 8.5
Improved compatibility when generating shipping data for orders containing deleted products
Added backward compatibility for Freemius in-place plugin updates from legacy releases. Thanks to Alejandro Garro for the contribution.
Fixed checkout validation for the Ciudad-Distrito field in WooCommerce. Thanks to Alex L.P for the contribution.
Improved Pymexpress web service response validation to prevent warnings when tariff responses are incomplete or invalid. Thanks to Nathalia Rendo for the contribution.
Reduced excessive Pymexpress background retries when orders are missing required shipping data. Thanks to Dominique Estrada for the report.
Improved WooCommerce order list compatibility for Pymexpress guide actions when WooCommerce does not provide a WC_Order object to the column callback. Thanks to Luis Avila for the report.
Added a 4″ x 6″ thermal label format for Mojito-generated Pymexpress PDFs. Thanks to Eddier Naranjo for the suggestion.
Fixed Pymexpress cron synchronization so scheduled events follow the current settings and remove legacy cron hooks.
1.5.10
PHP fixes
Updated TCPDF to 6.8.2
1.5.9
New import and export settings
Updated Freemius SDK to the latest version
PHP fixes
New CRON options
Fix for free shipping rules when a coupon is applied
1.5.8
Minor PHP fixes
PDF export zip code fix
1.5.7
Freemius SDK updated to 2.9.0
PDF Export now supports product attributes (PRO)
New params for mojito_shipping_pymexpress_checkout_custom_rate filter (PRO)
TCPDF updated to 6.7.7 (PRO)
1.5.6
New RETAIL support
Default destination postcode
New filter mojito_shipping_pymexpress_default_postcode
Freemius SDK updated to 2.7.3
1.5.5
Exchange rates improvements
Better debug information
New filters (PRO)
Mojito Proxy Changes
1.5.4
New Caché control for Web Service requests
Minor PHP Fixes
1.5.3
PHP 7.4 compatibility fix
1.5.2
Email sending duplicates fix
Freemius SDK updated to 2.7.2
TCPDF updated to 6.7.5
PHP fixes
Exchange rates now using mojitowp/exchange-rate
1.5.1
Elementor compatibility fix.
Improvement in completing order process.
Updated locations from Correos de Costa Rica.
Logger added to WooCommerce logs
Improvement in location zip codes detection.
1.5.0
WooCommerce High-Performance Order Storage compatibility
Freemius SDK update to 2.6.2
TCPDF updated to 6.6.5
PHP fixes
1.4.4
New automatic shipping discount based on the order total items count.
New option to include packing costs in the shipping rate.
New filter mojito_shipping_pymexpress_packing_costs
Performance improvements
1.4.3
Cron Upgrade, Now cron register orders with guide number but not response from Correos de Costa Rica
Freemius SDK update to 2.5.10
1.4.2
New 13 locations included:
— Mora, Jaris (10706)
— Mora, Quitirrisi (10707)
— Pérez Zeledón, La Amistad (11912)
— Naranjo, Palmitos (20608)
— Poás, Granja (20707)
— Guatuso, Katira (21504)
— Río Cuarto, Río Cuarto (21601)
— Río Cuarto, Santa Rita (21602)
— Río Cuarto, Santa Isabel (21603)
— San Pablo, Rincón de Sabanilla (40902)
— Esparza, Caldera (60206)
— Coto Brus, Gutierrrez Brown (60806)
— Pococí, La Colonia (70207)
New Option: PDF Origin
Minor PHP fixes
New filter mojito_shipping_addresses_json_data
New filter mojito_shipping_pymexpress_pais_destino (PRO)
New filter mojito_shipping_pymexpress_provincia_destino (PRO)
New filter mojito_shipping_pymexpress_canton_destino (PRO)
New filter mojito_shipping_pymexpress_distrito_destino (PRO)
TCPDF updated to 6.6.2
Freemius SDK Updated to 2.5.3
1.4.1
Minor fixes
New Action hook “save_mojito_setting_${ mojito setting option value }
Freemius SDK Updated to 2.4.5
1.4.0
Transient preload fix
Initial support for: CORPORATIVO
Initial automatic IP registration in Mojito Proxy
New filter mojito_shipping_pymexpress_service_id_based_on_shipping_weight
New filter mojito_shipping_pymexpress_ws_error_${CCR WS ERROR CODE}
Updated locations: Río Cuarto, Monteverde, etc
Variants weight check in information tab
TCPDF updated to 6.4.4
Option to do not pre-select address in Cart
1.3.9
New option to send guide over email
New filter mojito_shipping_default_exchange_rate
CCR without integration fixes
PHP fixes
Security fix
1.3.8
Pymexpress Max to 200 characters in “observaciones” field
Pymexpress ccrRegistroEnvio failover when zipcode is empty
Pymexpress new parameters DistritoOrigen and DistritoDestino in ccrTarifa
CCR without integration fix
Auth error log
Automatic exchange rate added to cron
Save Automatic exchange rate
Fix on Destination phone now using shipping phone when available
1.3.7
Free Shipping fix
registro_envio method fix
New debug option
Automatic Exchange Rates (PRO)
1.3.6
PDF Export fixes
1.3.5
Tracking packages fixes
Fix in response code validation in WS request method
Click to request fix
1.3.4
Code Fix for “SSL certificate problem: unable to get local issuer certificate”
1.3.3
Pymexpress Production URLs
1.3.2
Calculation trigger fixes
Minor code fixes
Free Shipping per product: just add the attribute “mojito-free-shipping” with the value “1” to any product.
1.3.1
PHP Version validation
Preload All locations and zip codes to improve performance