FedEx XML to REST API Migration Guide
Overview
FedEx is sunsetting its legacy XML API on May 1, 2026. All accounts must migrate to the FedEx REST API via AfterShip before April 30, 2026, to avoid service disruption. This guide covers everything you need to know.
Part 1: How to Update Your FedEx Account
1.1. UI based flow
Follow these steps in AfterShip Shipping to migrate your existing FedEx account from XML to REST API integration.
- Identify accounts that need updating: Go to the AfterShip Shipping Carrier accounts page. Your FedEx account will display the banner: "Please update the account before Apr 30, 2026". This means your account needs updating.

- Accept the updated EULA: Click "Update", scroll through the FedEx End-User License Agreement, and tick the acceptance checkbox saying **“I have read and accept the FedEx End-User License Agreement.” **

- Validate your account details: Click “Next” and re-enter your
FedEx account numberandshipping address. The address must exactly match your FedEx profile, otherwise the system will trigger an "Account address mismatch" error.

- Complete multi-factor authentication (MFA): Click “Next” and select how you wish to complete the MFA. You can choose to receive a PIN via email, SMS, or phone call, or verify using an invoice.

- Verify the PIN/invoice details: Enter the PIN or invoice details, based on your selection and click "Verify".
- Configure additional settings: You can also set your preferred currency, enable ETD, and upload your letterhead and image files at any time from the carrier account settings pages.

- Click Submit.
Some FedEx accounts are exempt from the MFA step and will be migrated automatically after address validation. Contact your FedEx account manager if you are unsure which applies to you.
1.2. API-based flow
Update your shipper account with an invoice from the past 90 days for MFA validation. If you want to enable FedEx ETD, also include commercial_invoice_letterhead and commercial_invoice_signature
- To enable ETD, include both
commercial_invoice_letterheadandcommercial_invoice_signature. Otherwise, you do not need to include them. Even if you have already uploaded them (or asked AfterShip to upload them for you) in the legacy system, you must upload them again for the migration. commercial_invoice_letterheadmust be in PNG format and no larger than 700 pixels wide by 50 pixels tall. Thecommercial_invoice_signaturemust be in PNG format and no larger than 240 pixels wide by 25 pixels tall.- An invoice is required for the MFA validation update action.
credentials,address, andpreferred_currencyare optional but recommended. If you do not include them in the request payload, the system will use your existing account number and address for validation. However, there is a risk that they may not match your latest data in the FedEx system. Therefore, it is recommended to always include them for accurate validation.
POST https://api.aftership.com/postmen/v3/couriers/fedex/shipper-accounts/{id}/update
Request example:
{
"invoice": {
"number": "234562278",
"currency": "USD",
"date": "2026-02-24",
"amount": 234
},
"credentials": {
"account_number": "11111111"
},
"address": {
"country": "USA",
"contact_name": "Test name",
"phone": "14158523888",
"fax": null,
"email": "test@aftership.com",
"company_name": null,
"company_url": null,
"street1": "15 W 18TH ST FL 7",
"street2": null,
"street3": null,
"city": "NEW YORK",
"state": "NY",
"postal_code": "100114624",
"type": "residential",
"tax_id": null
},
"settings": {
"preferred_currency":"USD",
"commercial_invoice_letterhead": "**",
"commercial_invoice_signature": "**"
}
}
Part 2: FedEx Service Changes
2.1. Newly Added Services
The following services are new in the REST API and were not available in the legacy XML integration:
service_type | service_name | FedEx Code | Ships From |
| FedEx Economy | FEDEX_ECONOMY | CHL, ZAF |
| FedEx® Economy | FEDEX_ECONOMY_SELECT | GBR |
| FedEx® First | FEDEX_FIRST | CHL, ZAF, EU region |
| FedEx® Priority | FEDEX_PRIORITY | CHL, ZAF, MYS, THA, EU region |
| FedEx® Priority Express | FEDEX_PRIORITY_EXPRESS | CHL, ZAF, THA, EU region |
2.2. Discontinued Services
The following legacy services will no longer be supported after migration to the REST API. You can continue using them until you update your FedEx account, but once the update is complete, you must switch to the replacement services listed in this guide, otherwise your label generation will fail.
Service Type | Replacement / Note |
| Use |
| Use |
| Use the new UK domestic portfolio, as applicable: |
| Use the new UK domestic portfolio, as applicable: |
| Use the new UK domestic portfolio, as applicable: |
| Use the new UK domestic portfolio, as applicable: |
| Not supported in the FedEx REST API. |
| Not supported in the FedEx REST API. |
| Not supported in the FedEx REST API. |
| Not supported in the FedEx REST API. |
| Not supported in the FedEx REST API. |
| Not supported by AfterShip. |
| Not supported by AfterShip. |
| Not supported by AfterShip. |
| Not supported by AfterShip. |
| Not supported by AfterShip. |
2.3. Service Name Changes
The following services remain fully supported, but their display names have changed. Update any name-based logic in your workflows accordingly.
service_type | Legacy Name | New Name |
| FedEx Regional Economy® | FedEx® Regional Economy |
| FedEx International Connect Plus | FedEx® International Connect Plus |
| FedEx Standard Overnight® One Rate | FedEx One Rate® - FedEx Standard Overnight® |
| FedEx 2Day® One Rate | FedEx One Rate® - FedEx 2Day® |
| FedEx 2Day® A.M. One Rate | FedEx One Rate® - FedEx 2Day® A.M. |
| FedEx Express Saver® One Rate | FedEx One Rate® - FedEx Express Saver® |
| FedEx First Overnight® One Rate | FedEx One Rate® - FedEx First Overnight® |
| FedEx Priority Overnight® One Rate | FedEx One Rate® - FedEx Priority Overnight® |
2.4. User-Facing Behavior Changes
The following changes affect how the API handles data and labels. Review each item and update your parsing, validation, or label-generation logic where applicable.
Change | Before | After | User Impact |
ETD enablement | ETD enablement is set at the API request level, with | ETD enablement is set at the FedEx account level. | To enable ETD, set up your FedEx account with “Enable Electronic Trade Documents (ETD)” and upload your letterhead and signature files. Remove "paperless_invoice" from your API request. |
Commercial invoice format | If ETD is not enabled, the generated commercial invoice uses the AfterShip format. | The commercial invoice always uses the FedEx format. | The commercial invoice will always be in the FedEx format, regardless of whether ETD is enabled. |
Rate response | | | If you parse or match |
Phone number normalization and max length | No strict FedEx-specific length handling was applied. | Non-digit characters are stripped, and the phone number must be at most 15 digits. Requests exceeding 15 digits will fail. | Most users are unaffected. However, some labels may now fail if the normalized phone number exceeds 15 digits. |
Weight precision normalization | Commodity weight kept 4 decimal places, and package or total weight kept 3 decimal places. | Commodity, package, and total weight are all normalized to 2 decimal places. | Displayed or submitted weights may change slightly due to rounding. This also reduces FedEx weight mismatch errors. |
City length validation | No FedEx-specific minimum or maximum city length check was applied. | | Labels will now fail if the |
Item description truncation | | | Content beyond 50 characters is no longer sent to FedEx and will not appear on the label. |
USA domestic return labels paper size | For USA domestic return shipments, the system cropped the FedEx output and returned a standard 4×6 label if paper_size was set to | For USA domestic return shipments, the system now forces | The label file size will always be |
| Users could pass | Users must now pass | Any workflow still sending |
2.5. API-specific account flow
If you use the API to manage your FedEx account with AfterShip, please note the following changes.
Change | Before | After | User Impact |
Create FedEx account | API endpoint: | API endpoint: | Update the API endpoint and payload to include invoice for validation purposes. See the example below for the full payload. |
{
"slug": "fedex",
"invoice": {
"number": "234562278",
"currency": "USD",
"date": "2026-02-24",
"amount": 234
},
"credentials": {
"account_number": "11111111"
},
"address": {
"country": "USA",
"contact_name": "Test name",
"phone": "14158523888",
"fax": null,
"email": "test@aftership.com",
"company_name": null,
"company_url": null,
"street1": "15 W 18TH ST FL 7",
"street2": null,
"street3": null,
"city": "NEW YORK",
"state": "NY",
"postal_code": "100114624",
"type": "residential",
"tax_id": null
},
"settings": {
"preferred_currency": "USD",
"commercial_invoice_letterhead": "xxxx",
"commercial_invoice_signature": "xxxx"
}
}
Notes:
a. You can create both FedEx and FedEx Ground® Economy accounts using the same API endpoint:https://api.aftership.com/postmen/v3/shipper-accounts. Specify the slug asfedexorfedex-smartpostin the request payload.
b. You can still use the existing API endpointhttps://api.aftership.com/postmen/v3/shipper-accounts/{id}/settingsto update commercial_invoice_letterhead and commercial_invoice_signature after account creation.
2.6. Migration Checklist - FedEx Service Changes
If you need international shipping, upload your letterhead and signature to the AfterShip system after updating your FedEx account.
✅ If your workflow depends on service_name, review the renamed services above and update any name-based rules.
✅ If your workflow depends on legacy UK domestic services, migrate to the new UK domestic portfolio listed above.
✅ If your workflow depends on discontinued services, check whether a replacement mapping is available before migration.
✅ If your workflow parses FedEx rate or label responses, review the behavior changes table above and update any validation or field-matching logic.
✅ If you still send paper_size = 4x6.75, update your request to 4x6.
Part 3: FedEx Ground® Economy (formerly FedEx SmartPost) Changes
3.1. Service Name Changes
All FedEx SmartPost services have been rebranded to FedEx Ground® Economy. Their service_type values remain unchanged, but their display names have been revised.
service_type | Legacy Name (SmartPost) | New Name (Ground Economy) |
| FedEx SmartPost parcel select | FedEx Ground® Economy |
| FedEx SmartPost parcel select lightweight | FedEx Ground® Economy (Under 1lb) |
| FedEx SmartPost® Bound Printed Matter | FedEx Ground® Economy Bound Printed Matter |
| FedEx SmartPost® Media | FedEx Ground® Economy Media Mail |
3.2. User-Facing Behavior Changes
The following FedEx Ground® Economy behavior changes may require review on the user side:
Change | Before | After | User Impact |
Label and rate now return | | | You will receive additional ETA information. This is additive and has no negative impact unless your response parser assumes these fields are absent. |
Label | The label response returned both the FedEx tracking number and the USPS tracking number. | The label response now returns only the FedEx tracking number. | If you expect two tracking numbers or still use the USPS tracking number, you need to update your logic. |
Return labels now support | Return labels did not support | Return labels now trigger RMA generation and return a | For customers using the Shipping API, you can include |
USA domestic return labels paper size | For USA domestic return shipments, the system returned a cropped 4×6 label. | For USA domestic return shipments, the system now forces LabelStockType = PAPER_4x6, ignores the requested paper_size, and returns the original uncropped label from FedEx. | The label file size will always be A4 for USA domestic return labels. |
3.3. Migration Checklist - FedEx Ground® Economy
✅ If your workflow depends on the FedEx Ground® Economy (previously FedEx SmartPost) service_name, review the renamed services above and update any name-based rules.
✅ If your workflow depends on the old SmartPost naming, update any customer-facing references to the new FedEx Ground® Economy naming.
✅ If your workflow parses SmartPost label or rate responses, review the behavior changes table above and update any field expectations related to ETA, tracking numbers, QR code files, and return label output.
Updated on: 07/04/2026
