VibeFox 99Minutos for OpenCart — Help
Requirements
OpenCart: 3.0.x (tested on 3.0.5.0) or 4.0.2 and later (tested on 4.1.0.3).
PHP: 8.0 or later.
99minutos API key (for the coverage check only): get it from your 99minutos account manager or at the 99minutos developer portal (developers.99minutos.com). Sandbox and production keys are different. If you only use the price matrix, you do not need an API key.
Countries: 99minutos delivers to Mexico, Colombia, Chile and Peru. The countries you ship to must be enabled in System > Localisation > Countries.
VibeFox license key: bought on vibefox.net. One key works on one domain.
Installation
The download is one zip file with the packages for both OpenCart versions. Unpack it on your computer. It contains README.txt, the OpenCart 3 package vfd_99minutos-oc3-(version).ocmod.zip and the OpenCart 4 package vfd_99minutos.ocmod.zip. Install only the package for your OpenCart version. The license key is the same for both versions.
OpenCart 3
1. In the admin go to Extensions > Installer, click Upload and choose the file vfd_99minutos-oc3-(version).ocmod.zip. The extension adds no OCMOD modifications, so you do not need to refresh Extensions > Modifications. Instead of the Installer, you can copy the contents of the upload folder of this package into the root folder of your store.
2. Go to Extensions > Extensions and choose the extension type Shipping. Find VibeFox 99Minutos and click Install (the green + button).
3. Click Edit (the pencil button) to open the settings page.
4. Paste your VibeFox license key into License key in the license block at the top of the Edit page and click Activate (see License key).
5. Fill in the Price matrix (at least one row, for example "* Default") and, optionally, the API key and the coverage check mode (see Configuration). Turn on Enable 99Minutos and click Save.
OpenCart 4
1. In the admin go to Extensions > Installer, click Upload and choose the file vfd_99minutos.ocmod.zip. Do not rename the file: OpenCart 4 takes the extension code from the file name, and a renamed package does not work.
2. The package appears in the list of installed extensions on the same page. Click Install (the green + button) next to it.
3. Go to Extensions > Extensions and choose the extension type Shipping. Find VibeFox 99Minutos, click Install (the green + button), then Edit (the pencil button).
4. Enter the license key and the settings as in steps 4 and 5 for OpenCart 3. The settings page and its fields are the same in both versions.
After install the method is off until you turn on Enable 99Minutos and save. If you install the extension again after an uninstall, the 99minutos settings you kept are used again.
Configuration
All settings are on the extension page: Extensions > Extensions > Shipping > VibeFox 99Minutos > Edit. The sections are listed on the left. One Save button saves the whole page without reloading it. Every save also clears the cached coverage results. If a value is wrong, nothing is saved and the page shows the reason, for example Enter a method title (1 to 64 characters)., a message that a field must be a number of 0 or more, or that Min weight (kg) must not be greater than Max weight (kg). After saving, warnings above the settings tell you when the method cannot work as configured: the price matrix is empty, a coverage check mode is chosen without an API key, the matrix has rows for countries 99minutos does not serve, or the store has no "kg" weight class and its weight unit is not known to the extension (weights are then taken as kilograms). Only admin users with the modify permission for this extension can save the settings.
General
The settings apply to every geo zone. 99Minutos is offered only for Mexico, Colombia, Chile and Peru as destination countries.
Enable 99Minutos: shows or hides 99Minutos at checkout. Default: off.
Method title: the shipping method name shown to the customer in the cart and at checkout. Default: 99Minutos. Required, up to 64 characters.
Tax class: the tax class of the shipping cost, or No tax (default). With a tax class, OpenCart adds tax to the price from the matrix.
Sort order: the position of 99Minutos among the shipping methods at checkout. A whole number.
99minutos API (coverage check) (optional)
The API is used only to check whether 99minutos delivers to the customer's postcode. The price always comes from the matrix.
Coverage check: whether and how the postcode is checked.
With a coverage check, the method appears only after the customer enters a postcode. Results are cached: covered for 6 hours, not covered for 30 minutes, API error for 5 minutes, but never longer than the OpenCart cache lifetime (1 hour by default). Only the postcode is sent to 99minutos, in upper case with letters and digits only.
API key: your 99minutos API key, sent as a Bearer token to the 99minutos coverage endpoint. Required when the coverage check is on. After saving, the field stays empty and shows Saved — leave empty to keep it. Type a new value only to change it. The key is saved as typed, only spaces around it are removed.
Remove the saved API key: shown only when a key is saved. Turn it on and click Save to delete the key.
Environment: Sandbox (test) (default) or Production. Sandbox and production use different API keys, so choose the environment that matches your key.
Rates
Prices are in your store default currency, tax excluded, and are used as entered. The final price is shown in the customer's currency.
Price matrix: a table of destination countries and prices. Click Add country to add a row and the × button to remove one. Each row has a Country (* Default, Mexico, Colombia, Chile or Peru), a Base price and prices for the sizes XS (up to 1 kg), S (up to 2 kg), M (up to 3 kg), L (up to 5 kg) and XL (over 5 kg). An empty or 0 size price falls back to the Base price. The * Default row applies to countries without their own row. If a country has several rows, the first one is used. Both a point and a comma are accepted as the decimal separator; empty, invalid or negative prices are saved as 0. Until the matrix has at least one row, the method is not shown at checkout.
Calculation: Per order — size by the total cart weight (default) charges one price for the package size of the whole cart. Per item — each unit priced by its own weight prices every unit by the size of its own weight and adds them up.
Free shipping: turn on free shipping from an order amount.
Free shipping from: the subtotal of the products that need shipping (after the coupon, before tax) from which the rate is 0. Used only when Free shipping is on.
Restrictions
Min weight (kg): hide the method if the cart is lighter. 0 means no limit (default). It cannot be greater than Max weight (kg). Product weights are converted from their weight class.
Max weight (kg): hide the method if the cart is heavier. Default: 25. 0 means no limit; an empty field means 25 kg.
Minimum subtotal: show the method only if the subtotal of the products that need shipping (after the coupon, before tax) is at least this amount. Leave it empty to always show it.
Geo zone: offer 99Minutos only for addresses in this geo zone. All zones (default) means no limit. Geo zones are managed in System > Localisation > Geo Zones.
Restrict countries: offer the method only for the countries below. This is an additional filter on top of Geo zone.
Countries: a choice of the 99minutos countries (Mexico, Colombia, Chile, Peru). Used only when Restrict countries is on. Leave it empty to allow all 99minutos countries.
Advanced
Debug log: writes rate calculations to storage/logs/vfd_99m_debug.log.php. The file cannot be read from the web. API errors are logged even when this is off. API keys and customer names and addresses are never logged. Turn the log off when you are done. When the file reaches 5 MB, it is moved to vfd_99m_debug.old.log.php and a new log is started.
Log: shows the size and the latest entries of the debug log. Click Clear log to empty it.
Remove data on uninstall: when on, uninstalling the extension deletes the 99minutos settings, the coverage cache and the log. When off (default), they are kept for a re-install. Orders are kept in any case.
Import / Export
Export: click Download JSON to save the settings as a JSON file. The API key is not exported.
Import: paste previously exported JSON and click Import to restore the settings, for example on another store. The values are checked like a normal save. The saved API key is kept.
How it works at checkout
When OpenCart shows the shipping methods, it asks the extension for the 99Minutos price. If a Geo zone is set and the address is outside it, 99Minutos is not offered. Only products with Requires Shipping set to Yes count: other products add no weight and are not included in the order amount. The method is offered only when the delivery country is Mexico, Colombia, Chile or Peru (and is in the Countries list if Restrict countries is on). The extension then checks the weight limits and Minimum subtotal. The order amount is the price of the products that need shipping, after the coupon discount and before tax. Gift certificates, reward points and store credit are not taken into account.
If a coverage check mode is on, the extension asks the 99minutos API whether the postcode is covered. The request timeout is 10 seconds and the answer is cached, so the same postcode does not trigger a new request. API errors are never shown to the customer: in the Strict mode the method is hidden, in the Soft mode the matrix price is used. Free shipping does not bypass the coverage check.
The price is taken from the matrix row of the delivery country, or from the * Default row. If neither exists, the method is hidden. If Free shipping is on and the order amount reaches Free shipping from, the rate is 0. The price is calculated in your store default currency, rounded to its decimals, and shown to the customer in their currency with the tax of the selected Tax class.
The extension does not get live rate quotes from 99minutos: prices always come from your matrix. It does not create shipments or orders in 99minutos, print labels (guides), track parcels, offer Punto99 pickup points or handle cash on delivery. It adds nothing to orders: the order shows the method title and the shipping cost like any other OpenCart shipping method. Create shipments in your 99minutos account as usual.
On OpenCart 4 the customer clicks Choose in the shipping method block of the checkout page and picks 99Minutos in the window Shipping method options. The method works the same way as on OpenCart 3.
License key
The extension works with a VibeFox license key from vibefox.net. The license block License — VibeFox 99Minutos is the first block on Extensions > Extensions > Shipping > VibeFox 99Minutos > Edit, above the settings. Paste the key into License key and click Activate. After that the block shows the key masked, the status (for example the date the license is active until and your domain) and the buttons Check now to check the status again, Change key to enter another key and Remove key to remove the key from this store. Below them are the line Product: opencart-shipping-99minutos and the link Manage licenses and domains in your account, which opens your vibefox.net account. Only admin users with the Modify permission for the extension can change the key. The texts of the block follow the admin language (English and Russian are included).
If the key is not accepted, the block says why, for example Key not found, This key belongs to another product, Domain limit reached or License expired on a date. After the store address changes, or after you free a domain slot in your account, click Check now. If the license server cannot be reached, the extension keeps working on the last known status.
One key works on one domain: the store address from the OpenCart configuration. Removing the key from the store does not free its domain slot. Free the slot in your vibefox.net account.
Without an active key, the 99Minutos shipping method is not shown to customers at checkout and no rate is calculated. An admin user who is logged in to the admin in the same browser still sees the method in the store, marked (unlicensed — visible to admins only), so you can set up and test the extension before you buy a key. On OpenCart 4 this preview is not available: the store does not see the admin login, so without an active key the method is hidden for everybody. After you have opened the Edit page once, a reminder appears on the admin Dashboard. Close it with × to hide it for 7 days. Existing orders are not affected.
When a license expires, the extension keeps working, but updates and support need a renewal. The status is checked again automatically when you open the admin Dashboard or the Edit page: once a day for the first 14 days after the key is entered, then once a week. No cron job is needed. Uninstalling the extension always removes the license key and license status.
Troubleshooting
99Minutos does not appear at checkout: check that the license is active and Enable 99Minutos is on. The delivery country must be Mexico, Colombia, Chile or Peru and enabled in System > Localisation > Countries. Check Geo zone and Restrict countries. Check that the Price matrix has a row for that country or a * Default row, and check the weight limits and Minimum subtotal. Check that the products have Requires Shipping set to Yes. Warnings shown after Save point to settings that hide the method.
The method appears only after a postcode is entered: this is expected with a coverage check. In the Strict mode it appears only when the API confirms coverage.
The method is always hidden in the Strict mode: turn on Debug log, reload the checkout and look at the Log field on the extension page. An HTTP 401 or 403 error means the API key was rejected: check the key and that Environment matches it (sandbox and production keys differ). Use the Soft mode if customers should still get the matrix price while the API is unavailable.
The price is not what you expected: check Calculation (per order or per item) and the product weights and weight classes. An empty or 0 size price falls back to the Base price. With a Tax class, tax is added to the matrix price.
Coverage results look outdated after a change: click Save on the extension page. This clears the cached coverage results.
The page says "Warning: You do not have permission to modify VibeFox 99Minutos!": your admin user group may only view the settings. Give the group the modify permission for extension/shipping/vfd_99minutos (OpenCart 3) or extension/vfd_99minutos/shipping/vfd_99minutos (OpenCart 4) in System > Users > User Groups.
For developers: the 99minutos API address can be replaced with the setting vfd_99m_api_url (for tests); it has no field on the settings page.
Uninstall
Go to Extensions > Extensions, choose the type Shipping and click Uninstall (the red − button) next to VibeFox 99Minutos. The license key and license status of this extension are always removed. OpenCart always resets Enable 99Minutos, Sort order, Tax class and Geo zone. The cached coverage results are always removed. If Remove data on uninstall is on, the 99minutos settings and the debug log are deleted as well. If it is off, the other settings are kept and are used again when you install the extension again. Existing orders keep their shipping method and cost.
On OpenCart 4, to remove the files of the extension as well, go to Extensions > Installer after the uninstall and click Uninstall (the orange − button) next to VibeFox 99Minutos in the list of installed extensions, then Delete (the red bin button) to remove the uploaded package.
99minutos is a trademark of its respective owner. This extension is not affiliated with or endorsed by 99minutos.
