for Magento 2
Version 3.0.0Jscriptz FEDEXv3 is a modern FedEx shipping integration for Magento 2 that uses the new FedEx REST APIs with OAuth2 authentication. This module provides real-time shipping rates, transit time information, and address validation capabilities.
Modern JSON-based APIs with OAuth2 authentication
Get live shipping rates directly from FedEx
Display estimated delivery dates at checkout
Intelligent caching for improved performance
Create shipping labels directly from admin
Real-time tracking updates from FedEx
Timeline display in admin and customer views
Automatic customer tracking updates
Official FedEx, UPS, USPS logos at checkout
"Fastest" and "Best Value" shipping highlights
Signature and location options at checkout
Automatic dark mode support for all components
After purchasing the extension, log in to your Jscriptz account to get your Composer authentication token:
Create or update your auth.json file in your Magento root directory:
{
"http-basic": {
"packages.jscriptz.com": {
"username": "YOUR_LICENSE_KEY",
"password": "YOUR_ACCESS_TOKEN"
}
}
}
Replace:
YOUR_LICENSE_KEY - Your license key from My Licenses pageYOUR_ACCESS_TOKEN - The token you copied in Step 1Add the Jscriptz package repository and install the module:
# Add the Jscriptz repository (first time only)
composer config repositories.jscriptz composer https://packages.jscriptz.com
# Install FEDEXv3 (includes ShippingCore dependency)
composer require jscriptz/module-fedexv3
# Enable the modules
bin/magento module:enable Jscriptz_ShippingCore Jscriptz_FEDEXv3
# Run setup upgrade
bin/magento setup:upgrade
# Compile DI (production mode)
bin/magento setup:di:compile
# Deploy static content (production mode)
bin/magento setup:static-content:deploy -f
# Clear cache
bin/magento cache:flush
After installation, you need to activate your license in the Magento admin:
Before configuring the module in Magento, you need to create an API project in the FedEx Developer Portal to obtain your API credentials.
Visit developer.fedex.com and create a free developer account if you don't already have one.
After logging in, navigate to My Projects and click + CREATE PROJECT. You'll be asked to tell FedEx about your API needs.
Choose the option that best describes your business. For most e-commerce stores, select "Ships using FedEx different than the options listed" or the appropriate shipping option.
On the API selection page, you'll see all available FedEx APIs. For this module, select the following:
Enter a name for your project (e.g., "Magento_FEDEXv3") and select your shipping country. Choose United States for a Global test account.
Review your project details, accept the terms and conditions, and click CREATE to generate your API credentials.
After your project is created, you'll see your API credentials on the project overview page. You'll need:
Configure the module in the Magento Admin at:
Stores > Configuration > Jscriptz > Jscriptz FEDEXv3
| Setting | Description |
|---|---|
| Enabled | Enable or disable the FEDEXv3 shipping method |
| Title | The carrier title shown at checkout (default: "FedEx") |
| Environment | Select Sandbox for testing or Production for live rates |
| Setting | Description |
|---|---|
| API Key (Client ID) | Your FedEx API Key from the Developer Portal |
| Secret Key (Client Secret) | Your FedEx Secret Key from the Developer Portal |
| Account Number | Your FedEx Account Number (optional for sandbox) |
| Setting | Description |
|---|---|
| Allowed Methods | Select which FedEx services to offer (leave empty for all) |
| Default Package Type | Package type for rate quotes (default: Your Packaging) |
| Maximum Package Weight | Maximum weight per package in lbs (FedEx limit: 150 lbs) |
| Handling Fee | Fixed amount added to each shipping rate |
| Free Shipping Threshold | Cart subtotal for free shipping (0 = disabled) |
| Cutoff Time | Orders after this time ship next business day (HH:MM) |
| Setting | Description |
|---|---|
| Enable Rate Caching | Cache API responses to improve performance |
| Cache TTL | How long to cache rates in seconds (default: 3600) |
| Use Cache on API Failure | Return cached rates if FedEx API is unavailable |
| Setting | Description |
|---|---|
| Enable Address Validation | Validate shipping addresses using FedEx API |
| Auto-Correct Addresses | Automatically apply FedEx address corrections |
| Setting | Description |
|---|---|
| Ship to Applicable Countries | All countries or specific countries only |
| Ship to Specific Countries | Select allowed destination countries |
| Show Method if Not Applicable | Show FedEx option even when unavailable |
| Sort Order | Position in shipping method list |
| Setting | Description |
|---|---|
| Enable Label Generation | Allow creating FedEx shipping labels from admin |
| Label Format | PDF (default), PNG, ZPLII, or EPL2 |
| Default Weight | Default package weight in lbs (default: 1.0) |
| Default Length/Width/Height | Default package dimensions in inches |
Configure the return address used on shipping labels.
| Setting | Description |
|---|---|
| Company Name | Your company name |
| Contact Name | Contact person for the shipment |
| Phone Number | Contact phone number |
| Street Address | Shipper street address |
| City | Shipper city |
| State/Province | State or province code (e.g., WI) |
| Postal Code | ZIP or postal code |
| Country | Country code (default: US) |
| Setting | Description |
|---|---|
| Enable Webhooks | Enable receiving tracking updates from FedEx |
| Security Token | HMAC secret key for webhook signature validation |
| Callback URL | URL for FedEx to send webhooks (auto-generated if empty) |
| Notification Events | Which events trigger customer email notifications |
| Include POD Photos | Include proof of delivery photos in tracking emails |
| Setting | Description |
|---|---|
| Debug Mode | Log API requests and responses to system.log |
Create FedEx shipping labels directly from the Magento Admin without leaving your store.
| Format | Description | Best For |
|---|---|---|
PDF |
Standard PDF document | Standard printers, email attachments |
PNG |
Image file format | Web display, basic printing |
ZPLII |
Zebra Programming Language | Zebra thermal printers |
EPL2 |
Eltron Programming Language | Eltron thermal printers |
Receive real-time tracking updates from FedEx as packages move through the delivery network.
Configure this URL in the FedEx Developer Portal to receive tracking updates:
https://your-store.com/fedexv3/webhook/receive
| Event Type | Description | Badge Color |
|---|---|---|
label_created |
Shipping label created, awaiting pickup | Gray |
picked_up |
Package picked up by FedEx | Gray |
in_transit |
Package in transit through FedEx network | Yellow |
out_for_delivery |
On FedEx vehicle for delivery | Blue |
delivered |
Package delivered successfully | Green |
exception |
Delivery exception occurred | Red |
cancelled |
Shipment cancelled | Red |
Configure which events trigger customer email notifications. You can choose to notify customers for:
out_for_delivery and delivered)View complete tracking timelines in both admin and customer-facing pages.
Navigate to Sales > Shipments > View Shipment to see the tracking timeline.
The admin view includes:
Customers view tracking from My Account > My Orders > View Order > Order Shipments.
The customer view includes:
Customers can manage their shipping notification preferences from their account.
Customers access preferences at: My Account > Shipping Notifications
URL: /fedexv3/customer/shippingPreferences/
| Preference | Description |
|---|---|
| Disable POD Photos | Opt out of receiving proof of delivery photos in tracking emails |
Jscriptz_ShippingCore module at My Account > Delivery Preferences.
Enable Debug Mode to log detailed API information:
var/log/system.log[FEDEXv3]# View FEDEXv3 debug logs
tail -f var/log/system.log | grep "FEDEXv3"
The Webhook Simulator allows you to test FedEx webhook integrations without real shipments. This is essential for verifying that tracking updates and customer email notifications work correctly before going live.
The webhook simulator is only available when all three conditions are met:
Navigate to: Stores > Configuration > Jscriptz > Shipping Preferences
Scroll to the Webhook Testing (Sandbox) section and set Enable Webhook Simulator to Yes.
Navigate to: Stores > Configuration > Jscriptz > Jscriptz FEDEXv3
| Field | Description |
|---|---|
| Carrier | Select FedEx from the dropdown (only appears if sandbox + webhooks enabled) |
| Event Type | Choose the tracking event to simulate |
| Tracking Number | Optional - enter a real tracking number or leave empty to auto-generate |
| Event Code | Description |
|---|---|
OC |
Label Created / Shipment information sent to FedEx |
PU |
Picked Up - Package picked up by FedEx |
AR |
Arrived at FedEx Facility |
DP |
Departed FedEx Facility |
IT |
In Transit to destination |
OD |
Out for Delivery - On FedEx vehicle |
DL |
Delivered - Package delivered |
DE |
Delivery Exception - Unable to deliver |
SE |
Shipment Exception occurred |
RS |
Return to Shipper |
For the most realistic testing, use a tracking number from an existing shipment:
This allows you to:
Events are stored in the jscriptz_fedexv3_tracking_event table:
SELECT * FROM jscriptz_fedexv3_tracking_event
WHERE tracking_number = 'YOUR_TRACKING_NUMBER'
ORDER BY created_at DESC;
Problem: FedEx doesn't appear in the carrier dropdown.
Solution: Verify both conditions are met:
bin/magento setup:di:compile if recently installedbin/magento cache:flushProblem: The button is disabled and you can't send a test.
Solution:
Problem: Simulation runs but no email is sent.
Solution:
var/log/system.log for email errorsemail_sent = 1 for the eventProblem: Simulation runs but tracking event doesn't appear in admin.
Solution:
bin/magento cache:cleanvar/log/system.log for processing errors| Service Code | Service Name | Transit Time |
|---|---|---|
FIRST_OVERNIGHT |
FedEx First Overnight | Next day by 8:00 AM |
PRIORITY_OVERNIGHT |
FedEx Priority Overnight | Next day by 10:30 AM |
STANDARD_OVERNIGHT |
FedEx Standard Overnight | Next day by 3:00 PM |
FEDEX_2_DAY_AM |
FedEx 2Day A.M. | 2 days by 10:30 AM |
FEDEX_2_DAY |
FedEx 2Day | 2 business days |
FEDEX_EXPRESS_SAVER |
FedEx Express Saver | 3 business days |
FEDEX_GROUND |
FedEx Ground | 1-5 business days |
GROUND_HOME_DELIVERY |
FedEx Home Delivery | 1-5 business days (residential) |
SMART_POST |
FedEx Ground Economy | 2-7 business days |
| Service Code | Service Name |
|---|---|
INTERNATIONAL_FIRST |
FedEx International First |
INTERNATIONAL_PRIORITY |
FedEx International Priority |
INTERNATIONAL_ECONOMY |
FedEx International Economy |
INTERNATIONAL_GROUND |
FedEx International Ground |
| Code | Description |
|---|---|
YOUR_PACKAGING |
Customer packaging (default) |
FEDEX_ENVELOPE |
FedEx Envelope |
FEDEX_PAK |
FedEx Pak |
FEDEX_BOX |
FedEx Box |
FEDEX_SMALL_BOX |
FedEx Small Box |
FEDEX_MEDIUM_BOX |
FedEx Medium Box |
FEDEX_LARGE_BOX |
FedEx Large Box |
FEDEX_TUBE |
FedEx Tube |
Solution:
Solution: Update to the latest module version. This issue was fixed in v1.0.0.
If rates seem outdated:
bin/magento cache:flushTransit times come from the FedEx Rate API response. If not displayed:
Yes, Jscriptz FEDEXv3 uses the carrier code fedexv3 and operates independently of Magento's core FedEx module (fedex). You can run both simultaneously, though we recommend disabling the core module to avoid customer confusion.
For sandbox testing, you can use the test account number provided by FedEx. For production, you'll need a FedEx account number to get accurate negotiated rates.
Sandbox rates are generic list rates for testing purposes. Production rates reflect your actual negotiated pricing with FedEx based on your shipping volume and account agreement.
The default TTL of 3600 seconds (1 hour) works well for most stores. If your rates change frequently or you need more accuracy, reduce this value. For high-traffic stores, consider keeping caching enabled to reduce API calls.
Yes, set a Free Shipping Threshold amount. When the cart subtotal exceeds this amount, all FedEx rates will show as $0.00.
Ensure your FedEx Account Number is entered in the configuration. Negotiated rates are automatically returned when you have an account with special pricing agreements.
FedEx Ground is for business addresses, while FedEx Home Delivery is for residential addresses. The module automatically detects address type based on whether a company name is provided.
FEDEXv3 integrates with the Jscriptz_ShippingCore companion module to provide enhanced admin and checkout features including an enhanced shipments grid, mass actions, carrier logos, transit time badges, delivery preferences, and dark mode support.
ShippingCore extends the Sales > Shipments grid with additional columns and mass actions for streamlined shipping management.
| Column | Description |
|---|---|
| Tracking Number | All tracking numbers for the shipment (comma-separated if multiple) |
| Carrier | The carrier name (FedEx, UPS, USPS) based on tracking data |
| Label Status | "Has Label" or "No Label" visual indicator |
| Tracking Status | "Sent" or "Not Sent" for tracking emails |
| Shipping Price | The order's shipping amount |
| Label | Quick links to view/download or create labels |
For complete shipments grid documentation, see the ShippingCore User Guide.
Replace plain text carrier names with official branded logos at checkout for a more professional appearance.
The carrier logo feature:
Help customers quickly identify the best shipping option with visual badges.
Blue badge highlights the shipping method with the shortest delivery time
Green badge marks the most affordable shipping option
Badge for services with delivery guarantee commitments
Real-time countdown: "Order within 2h 30m to ship today"
The countdown timer changes color based on urgency:
| Time Remaining | Color | Message Style |
|---|---|---|
| More than 2 hours | Green | Calm, plenty of time |
| 30 minutes - 2 hours | Amber | Getting close, act soon |
| Less than 30 minutes | Red | Urgent, order now |
Allow customers to specify delivery requirements directly at checkout.
Configure where the delivery preferences widget appears:
ShippingCore components automatically adapt to the user's system dark mode preference when enabled. This includes:
Customers can save their default delivery preferences in their account:
My Account > Delivery Preferences
Configure ShippingCore features at:
Stores > Configuration > Jscriptz > Shipping Preferences
| Setting | Description | Default |
|---|---|---|
| Display Delivery Preferences In | Which checkout step shows the delivery preferences widget | Shipping Methods |
| Enable Dark Mode Support | Adapt components to user's system dark mode preference | No |
| Carrier Display on Checkout | Show carrier logos or plain text in shipping methods | Show Logo |
| Setting | Description | Default |
|---|---|---|
| Show Signature Options | When to display signature options (Always, Threshold, Never) | Cart Total Threshold |
| Cart Total Threshold | Show signature options when cart exceeds this amount | $300 |
| Default Signature Option | Pre-selected signature option at checkout | Adult Signature Required |
| Enable Signature Fees | Charge additional fees for signature services | No |
| Setting | Description | Default |
|---|---|---|
| Enable Delivery Location Options | Show delivery location selector at checkout | No |
| Default Location | Pre-selected delivery location | Front Door |
| Setting | Description | Default |
|---|---|---|
| Enable Transit Time Display | Show delivery estimates in shipping methods | Yes |
| Show Delivery Date | Display "Arrives by Friday, Jan 10" style dates | Yes |
| Show Transit Days | Display "3-5 business days" estimates | Yes |
| Show Cutoff Countdown | Display "Order within X hours" timer | Yes |
| Show Guaranteed Badge | Badge for services with delivery guarantees | Yes |
| Date Format | PHP date format for delivery dates | D, M j (Mon, Jan 10) |
| Default Cutoff Hour | Same-day shipping cutoff if carrier doesn't provide one | 14 (2 PM) |