Contract and Rate Management
How to Set Up the FedEx Rating Engine
The FedEx rating engine provides the external rates and transit details using the FedEx API that OTM can use to calculate a shipment's rate and transit time. The request calls can be made from OTM to get the rates via REST web service.
Setting up FedEx Rates and Transit API
Note: Direct integration with FedEx is not supported for international rates. It is not possible to create an external system that can directly access the FedEx REST API. Instead, you must implement an External Rating Engine (ERE) as defined in the External Rating Engine Chapter of the External Programming Interface Guide.
The following configurations must be done for setting up the FedEx API in OTM:
- Create an External System with the API URL and authorization details. While creating the External System, you must provide the FedEx-specific inputs as follows:
- Select the Authentication Type as OAuth 2.0 - Client Credentials and then select the Client Credentials in Message option from the Authorization Service Authentication Type drop-down list.
- Authorization Service URL: https://apis.fedex.com/oauth/token
- URL: https://apis.fedex.com/rate/v1/comprehensiverates/quotes
- Enter the Client ID, and Client Secret provided by FedEx.
Note: Refer to API Authorization Documentation | FedEx Developer Portal for the FedEx authorization detail.
- Create a Rate Service with the rate service ID the same as the service types the FedEx API support. Refer to Reference Guide | FedEx Developer Portal for the FedEx-provided service types. In the Rate Header tab, you have to choose Rate Service Type as EXTERNALTRANSITDAYS to get the transit time details.
- Create an External Rating Engine FieldSet for FedEx. While creating the External Rating Engine FieldSet, you must provide the FedEx-specific inputs as follows:
- Select the external rating engine FEDEX from the Valid External Rating Engine ID drop-down list.
- Enter the java class as glog.business.rate.rateengine.external.REXFedEx in the Implementing Java Class field.
- Enter the External System ID created in Step 1.
- Create a Rate Offering with the Rate Offering type which has the rate attribute "EXTERNALRATINGENGINE". Provide the FedEx-specific inputs as follows:
- Select the Rate Service created in Step 2.
- In the Attributes tab, select External Rating Engine ID as "FEDEX" and provide the External Rating Engine FieldSet ID created in Step 3.
- Create a Rate Record using the Rate offering created in step 4.
- Create an Order Release between the location pair or inquire about the rates using Rate Inquiry for getting the rate and transit details.
Additional Configurations
The request parameters OTM supports for getting the rates from FedEx are as follows:
Request Parameters |
Configuration Details |
---|---|
“accountNumber” |
The accountNumber is a mandatory request parameter. This is configured against a reference number qualifier ID configured against the property glog.RatingEngine.fedex.accountNumberQual. Refnum Qualifier with this ID should be configured either on Source stop location, shipment, or order release. The default Refnum Qualifier ID for the property is FEDEX_ACCOUNT_NUMBER. The application fetches the value for the reference number qualifier using the following order: 1. Shipment 2. Order Release 3. Source stop location. Refer to Getting Started | FedEx Developer Portal to get the account numbers specific to your FedEx account. |
"carrierCodes" |
The carrierCodes is an optional request parameter. You can configure it on the service provider to pick a specific carrier. This can be configured as the SCAC code on the service provider or as a value against the service provider alias qualifier ID as SC. This specifies the four letter code of a FedEx operating company that meets your requirements.
Note: If you don't specify the carrierCodes in the FedEx request, the application gets the list of carriers and picks the random one. |
"customsClearanceDetail": { (The customsClearanceDetail is an optional request parameter.) | |
"commercialInvoice": { | |
"shipmentPurpose": "GIFT" |
For the customsClearance special service, the refnum qualifier for shipmentPurpose will be defined from either of the following in priority order:
It looks for the reference number on the shipment with the specified reference number qualifier. Otherwise, It looks for the reference number on one of the corresponding order releases with the specified reference number qualifier. The refnum qualifier for shipmentPurpose is to be defined against the property "glog.RatingEngine.fedex.shipmentPurposeRefNumQual". The value of the reference number can either be "GIFT" or "NOT_SOLD" or "PERSONAL_EFFECTS" or "REPAIR_AND_RETURN" or "SAMPLE" or "SOLD" or "COMMERCIAL" or "RETURN_AND_REPAIR" or "PERSONAL_USE". |
}; | |
"freightOnValue": "CARRIER_RISK", |
For the customsClearance special service, the refnum qualifier for freightOnValues should be defined from either of the following in priority order:
It looks for the reference number on the shipment with the specified reference number qualifier. Otherwise, It looks for the reference number on one of the corresponding order releases with the specified reference number qualifier. The refnum qualifier for freightOnValues should be defined against the property "glog.RatingEngine.fedex.freightOnValueRefNumQual", and the values of the reference number can either be "CARRIER_RISK" or "OWN_RISK". |
"commodities": [ | Each commodity is a shipment ship unit line if the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line) and it is a shipment ship unit if the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit). |
{ | |
"description": "DOCUMENTS", | The value of the description attribute is fetched from description of the item corresponding to the Packaged Item of the order release line corresponding to a shipment ship unit line when the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line). If it is set to "U" (Ship Unit) the description attribute is not populated. |
"weight": { |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the weight is total weight . If not available, then the weight is aggregated line item weight divided by the total package count. When it is set to "U" (Ship Unit), then the weight is total weight . If not available, then the weight is aggregated ship unit weight divided by the ship unit count. |
"units": "LB", |
weight UOM. |
"value": 22 | weight value. |
}, | |
"quantity": 1, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is item package count of the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), it is ship unit count of the shipment ship unit. |
"customsValue": { | |
"amount": "100", |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is declared value on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the aggregate the declared value of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"currency": "USD" | unit of currency. |
}, | |
"unitPrice": { | |
"amount": "100", |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is declared value on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it will aggregate the declared value of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"currency": "USD" | Unit of currency. |
}, | |
"numberOfPieces": 1, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is item package count of the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), it is ship unit count of the shipment ship unit. |
"quantityUnits": "PCS", |
If the "Package Count Is determined by" field in the Rate Offering is set to "L"(Ship Unit Line), then you will fetch the code of UOM of Type field on the order release line. When it is "U" (Ship Unit), it will be ship unit specification ID. |
"harmonizedCode": "080211", |
The refnum qualifier will be fetched based on the "Package Count Is determined by" field from the Rate Offering using the property "glog.RatingEngine.fedex.harmonizedCodeRefNumQual".
|
} | |
] | |
}, | |
"smartPostInfoDetail": { (The smartPostInfoDetail is an optional request parameter.) | |
hubId": "5531", |
For the smartPostInfo special service, the refnum qualifier for hubid should be defined against the property "glog.RatingEngine.fedex.hubIdRefNumQual", and checked on destination Location reference number. |
"indicia": "MEDIA_MAIL", |
For the smartPostInfo special service, the refnum qualifier for indicia should be defined from either of the following in priority order:
It looks for the reference number on the shipment with the specified reference number qualifier. Otherwise, It looks for the reference number on one of the corresponding order releases with the specified reference number qualifier. The value of the reference number can be either "MEDIA_MAIL" or "PARCEL_RETURN" or "PARCEL_SELECT" or "PRESORTED_BOUND_PRINTED_MATTER" or "PRESORTED_STANDARD". Note: Please check the FedEx website for more allowed values. |
groundShipment": false | You set this checkbox based on the mode of shipment either "U" or "L". |
}, | |
"documentShipment": false, |
The refnum qualifier for documentShipment should be defined against the property "glog.RatingEngine.fedex.documentShipmentRefnumQual", and checked on either of the following in priority order:
It looks for the reference number on the shipment with the specified reference number qualifier. Otherwise, It looks for the reference number on one of the corresponding order releases with the specified reference number qualifier. Note: This will be sent in the fedex request only when the value of this property is set to true. |
"packagingType":"YOUR_PACKAGING", |
The packagingType is an optional request parameter. Packaging type is configured as the value for the reference number qualifier “PACK_TYPE” on Order Release Ship Unit or Order Release Line Item using the property glog.RatingEngine.fedex.packagingTypeQualifier. The refnum qualifier/remark qualifier will be fetched based on the "Package Count Is determined by" field from the Rate Offering.
If Reference Number Qualifier "PACK_TYPE" is not present then it will look for the Remark Qualifier with ID "PACK_TYPE". The value for the Reference Number Qualifier or Remark Qualifier should be same on all the ship units or line items i.e. all the ship units or ship unit lines on the shipment must have the same packaging type. |
"totalPackageCount": 3, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it will aggregate item package count of all the Order Release Lines corresponding to the shipment ship unit lines. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it will aggregate ship unit count of all the order release ship units corresponding to the shipment ship units. |
"totalWeight": 87.5, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the weight is total weight . If not available, then the weight is aggregated line item weight divided by the total package count. The total weight is the average of all the line items weight. When it is set to "U" (Ship Unit), then the weight is total weight . If not available, then the weight is aggregated ship unit weight divided by the ship unit count. The total weight is the average of all the ship units weight. |
"pickupType":"DROPOFF_AT_FEDEX_LOCATION" |
The pickupType is a mandatory request parameter. The Refnum Qualifier ID PICKUP_TYPE should be defined using the property glog.RatingEngine.fedex.pickUpTypeRefnumQual. When this property is configured, the application fetches the reference number qualifier from either of the following in priority order: It looks for the reference number on the shipment with the specified reference number qualifier. If not found, It looks for the reference number on one of the corresponding order releases with the specified reference number qualifier. Otherwise, It looks for the reference number on the source stop location with the specified reference number qualifier. Pick up types can be one of CONTACT_FEDEX_TO_SCHEDULE, DROPOFF_AT_FEDEX_LOCATION, USE_SCHEDULED_PICKUP, ON_CALL, PACKAGE_RETURN_PROGRAM, and REGULAR_STOP. |
"packageSpecialServices": { |
The packageSpecialServices is an optional request parameter. The required information for different special services will have to be defined as accessorial codes and remarks.
The attribute required to be added to the payload for special service, can be identified using the properties Naming convention for adding the property for the accessorial code should be "glog.RatingEngine.fedex.pkgSplSrvc.accCode.<<spclService>> = <<spclServiceAccessorialCode>>", and Naming convention for adding the property for the accessorial remark qualifier should be "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.<<spclService>>.<<spclServiceRelatedRemarkKey>> =<<spclServiceRelatedRemarkQualifier>>". |
"alcoholDetail": {
The alcoholDetail is an optional request parameter. For the alcohol special service, the FedEx request uses the key "alcoholDetail". Define the accessorial code to retrieve the value of this key, and configure it using the property "glog.RatingEngine.fedex.pkgSplSrvc.accCode.alcoholDetail". The following remark qualifiers must then be specified for the associated properties:
|
|
"alcoholRecipientType": "LICENSEE", |
For the alcohol special service, the accessorial remark qualifier for alcoholRecipientType should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.alcoholDetail.alcoholRecipientType" Note: Please check the FedEx website for more allowed values. |
"shipperAgreementType": "Retailer" |
For the alcohol special service, the accessorial remark qualifier for shipperAgreementType should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.alcoholDetail.shipperAgreementType" Note: Please check the FedEx website for more allowed values. |
} | |
"batteryDetails": [
The batteryDetails refers to an optional request parameter. For the battery special service, the FedEx request uses the key "batteryDetails". Define the accessorial code to retrieve the value of this key, and configure it using the property "glog.RatingEngine.fedex.pkgSplSrvc.accCode.batteryDetails". The following remark qualifiers must then be specified for the associated properties:
|
|
{ | |
"material": "LITHIUM_METAL", | For the battery special service, the accessorial remark qualifier for material should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.batteryDetails.material" and the values for the accessorial remark qualifier must be either "LITHIUM_METAL" or "LITHIUM_ION" |
"regulatorySubType": "IATA_SECTION_II", |
For the battery special service, the accessorial remark qualifier for regulatorySubType should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.batteryDetails.regulatorySubType" and the value for the accessorial remark qualifier must be "LITHIUM_SECTION_II". |
"packing": "CONTAINED_IN_EQUIPMENT" |
For the battery special service, the accessorial remark qualifier for packing is to be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.batteryDetails.packing" and the values against the accessorial remark qualifier should be either "CONTAINED_IN_EQUIPMENT" or "PACKED_WITH_EQUIPMENT". |
} | |
] | |
"pieceCountVerificationBoxCount": 0, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line) or "U" (Ship Unit), and if you are using the battery special services, then the value of this attribute is always 1. |
"dryIceWeight": {
The dryIceWeight is an optional request parameter. For the dryIce special service, the FedEx request uses the key "dryIceWeight". Define the accessorial code to retrieve the value using the property "glog.RatingEngine.fedex.pkgSplSrvc.accCode.dryIceWeight". The following remark qualifiers can be specified for the associated properties:
|
|
"units": "LB", | For the dryIce special service, the accessorial remark qualifier for units should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.dryIceWeight.units". |
"value": 10 | For the dryIce special service, the accessorial remark qualifier for value should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.dryIceWeight.value". |
} | |
"dangerousGoodsDetail": {
The dangerousGoodsDetail is an optional request parameter. For the dangerousGoods special service, the FedEx request uses the key "dangerousGoodsDetail". Define the accessorial code to retrieve the value using the property "glog.RatingEngine.fedex.pkgSplSrvc.accCode.dangerousGoodsDetail". The following remark qualifiers can be specified for the associated properties:
|
|
"accessibility": "ACCESSIBLE", | For the dangerousGoods special service, the accessorial remark qualifier for accessibility should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.dangerousGoodsDetail.accessibility" and the values for the accessorial remark qualifier must be either "ACCESSIBLE" or "INACCESSIBLE". |
options": [ ] | For the dangerousGoods special service, the accessorial remark qualifier for options should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.dangerousGoodsDetail.options" and the values for the accessorial remark qualifier must be either "HAZARDOUS_MATERIALs" or "BATTERY" or "ORM_D" or "REPORTABLE_QUANTITIES" or "SMALL_QUANTITY_EXCEPTION" or "LIMITED_QUANTITIES_COMMODITIES" if you take an example of BATTERY. |
"regulation": "ADR", | For the dangerousGoods special service, the accessorial remark qualifier for regulation should be defined against the property "glog.RatingEngine.fedex.pkgSplSrvc.accRemQual.dangerousGoodsDetail.regulation" and the values. |
"containers": [ | Retrieved based on the field "Package Count Is determined by" from Rate Offering to decide whether to get from "L" (Ship Unit Line) or "U" (Ship Unit) . |
{ | |
"hazardousCommodities": [ | Documents the kinds and quantities of all hazardous commodities in the current package. |
{ | |
"quantity": { | Identifies amount and units for quantity of hazardous commodities. |
"quantityType": "GROSS" | You will receive data from a property "glog.RatingEngine.fedex.pkgSplSrvc.dangerousGoodsDetail.containers.quantityType", and the values should be either "GROSS" or "NET". |
"amount": 0, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it represents the declared volume on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the aggregate declared volume of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"units": "LB" | Units of declared volume. |
}, | |
"innerReceptacles": [ | Specifies a hollow container designed to hold an item, but it requires an outer packaging to ensure proper containment. |
{ | |
"quantity": { | |
"quantityType": "GROSS" | You will receive data from a property "glog.RatingEngine.fedex.pkgSplSrvc.dangerousGoodsDetail.containers.quantityType", and the values should be either "GROSS" or "NET". |
"amount": 0, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it represents the declared volume on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the aggregate declared volume of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"units": "LB" | Units of declared volume. |
} | |
} | |
] | |
numberOfContainers": 10, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it represents the Total Package Count. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the Ship Unit Count. |
"containerType": "Copper Box", |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is ship unit line package item type. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it will not have any containerType. |
"packaging": { | |
"count": 20, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it represents the Total Package Count. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the Ship Unit Count. |
} | |
], | |
}, | |
"rateRequestControParameters":{"returnTransitTimes":true} | The value for returnTransitTimes is set as true by default to receive the transit details always from FedEx. |
"rateRequestType":["ACCOUNT"] | The value is set as 'ACCOUNT' by default to receive only the account specific rates. |
"requestedPackageLineItems": [ | The requestedPackageLineItems is an optional request parameter. |
{ | |
"subPackagingType": "BAG", |
The reference number qualifier should be defined for the sub-packaging type of a FedEx package using the property glog.RatingEngine.fedex.subPkgTypeRefNumQualifier. The refnum qualifier will be fetched based on the "Package Count Is determined by" field from the Rate Offering.
|
"groupPackageCount": 1, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it represents the Total Package Count. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the Ship Unit Count. |
"declaredValue": { |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is declared value on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the aggregate the declared value of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"amount": "100", |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then it is declared value on the Order Release Line corresponding to the shipment ship unit line. If the "Package Count Is determined by" field in Rate Offering is set to "U" (Ship Unit), then it is the aggregate the declared value of all the order release lines corresponding to the shipment ship unit lines divided by the ship unit count. |
"currency": "USD" | Unit of currency. |
}, | |
"weight": { |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the weight is total weight . If not available, then the weight is aggregated line item weight divided by the total package count. When it is set to "U" (Ship Unit), then the weight is total weight . If not available, then the weight is aggregated ship unit weight divided by the ship unit count. |
"units": "LB", | Weight UOM. |
"value": 4.4092452 | Weight value. |
}, | |
"dimensions": { |
Based on "Package Count Is determined by" field in Rate Offering, you will get the following values. |
"length": 12, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the length is package length . If not available, then the length is package item unit length. When it is set to "U" (Ship Unit), then the length is "length per ship unit". |
"width": 12, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the width is package width . If not available, then the width is package item unit width. When it is set to "U" (Ship Unit), then the width is "width per ship unit". |
"height": 12, |
If the "Package Count Is determined by" field in Rate Offering is set to "L" (Ship Unit Line), then the heigth is package heigth . If not available, then the heigth is package item unit heigth. When it is set to "U" (Ship Unit), then the heigth is "heigth per ship unit". |
"units": "IN" | The UOM for the dimensions is defined by the property glog.RatingEngine.fedex.LengthUOM. Default value is I. If property value is 'I' then unit is "IN" else the unit is "CM". |
}, | |
"requestedShipment": { "shipper":{"address":{"city":"LAS VEGAS","stateOrProvinceCode":"NV","postalCode":"89119","countryCode":"US","residential":false}}, "recipient":{"address":{"city":"LOS ANGELES","stateOrProvinceCode":"CA","postalCode":"90009","countryCode":"US","residential":false} } |
Used to specify the shipper and recipient addresses.
|
"ServiceType" | The ServiceType is a mandatory request parameter. This is configured as RateService XID specified in the Rate Offering. Refer to Reference Guide | FedEx Developer Portal for the FedEx-provided service types. In the Rate Header tab, you have to choose Rate Service Type as EXTERNALTRANSITDAYS to get the transit time details. |
"totalPackageCount":2 |
This specifies the total number of packages of the shipment. The totalPackageCount is used to get the total number of packages either in a Ship unit or a Ship unit line. |
Note: You can create the refnum/remark qualifiers at the different levels according to the configurations defined against the property.
Note: The Rate Inquiry will not support FedEx.
The sample FedEx Request is as follows:
{
"accountNumber": {
"value": "740561073"
},
"rateRequestControParameters": {
"returnTransitTimes": true
},
"requestedShipment": {
"shipper": {
"address": {
"city": "LAS VEGAS",
"stateOrProvinceCode": "NV",
"postalCode": "89119",
"countryCode": "US",
"residential": false
}
},
"recipient": {
"address": {
"city": "LOS ANGELES",
"stateOrProvinceCode": "CA",
"postalCode": "90009",
"countryCode": "US",
"residential": false
}
},
"serviceType": "FEDEX_EXPRESS_SAVER",
"rateRequestType": [
"ACCOUNT"
],
"shipDateStamp": "2023-04-27",
"pickupType": "DROPOFF_AT_FEDEX_LOCATION",
"requestedPackageLineItems": [
{
"weight": {
"units": "LB",
"value": 4.4092452
},
"dimensions": {
"length": 12,
"width": 12,
"height": 12,
"units": "IN"
}
},
{
"weight": {
"units": "LB",
"value": 2.2046226
},
"dimensions": {
"length": 12,
"width": 12,
"height": 12,
"units": "IN"
}
}
],
"packagingType": "FEDEX_SMALL_BOX",
"totalPackageCount": 2
},
"carrierCodes": [
"FDXE"
]
}
Response from FedEx
OTM captures the following response for calculating the rate and transit time of a shipment:
- totalBaseCharge: The totalBaseCharge received in the response from FedEx is created as the base cost.
- totalFreightDiscount: The totalFreightDiscount received in the response from FedEx is considered as the discount amount.
- surCharges: The surCharges received in response are created as an individual accessorial cost. For these surcharges, OTM has Charge Tokens defined. In Charge Tokens, the type of surcharge is mapped to the charge token value. The Charge Tokens have corresponding accessorial codes defined in the Charge Token Set. Based on these mappings, an accessorial cost is created for each surcharge.
- UnCategorized charges: The extra charges apart from the surCharges are considered uncategorized charges or other charges.
-
Transit Details: The DeliveryDate received in the response from FedEx is considered for calculating the transit days.