Saltar al contenido principal

Obtener Tarifas de Envío

Calcula las tarifas de envío para paquetes dentro de Estados Unidos. Este endpoint permite obtener cotizaciones de FedEx y otros transportistas disponibles.

Solo Estados Unidos

Este endpoint solo funciona para envíos dentro de Estados Unidos. Para envíos en México u otros países, contacta a soporte para obtener tarifas.

Endpoint

POST /v1/client/shipment/rates

Descripción

Este endpoint te permite obtener tarifas de FedEx para envíos dentro de Estados Unidos. Necesitas proporcionar el token Bearer generado anteriormente.

Headers

HeaderTipoRequeridoDescripción
AuthorizationstringToken Bearer obtenido del endpoint /token/generate
Content-TypestringDebe ser application/json

Parámetros del Body

ParámetroTipoRequeridoMax. LengthDescripción
ratesobject-Objeto contenedor de todos los parámetros de cotización
rates.shippingServicestring-10Nombre del servicio de envío del cual quieres obtener las tarifas. Si no se especifica, devuelve tarifas de todos los servicios disponibles
rates.shipperobject-Información del remitente (almacén)
rates.shipper.warehouse_idinteger10ID del almacén desde el cual se enviarán los productos
rates.recipientobject-Información del destinatario
rates.recipient.addressobject-Dirección del destinatario
rates.recipient.address.addressLinestring-35Dirección de entrega del envío, necesaria solo si consultas UPS
rates.recipient.address.postalCodestring10Código postal de destino
rates.recipient.address.countryCodestring2Código de país de dos letras. Por defecto 'US'
rates.packageItemsarray99Uno o más paquetes con sus descripciones de atributos
rates.packageItems[].weightobject-Peso del paquete
rates.packageItems[].weight.unitsstring-Unidad de peso. Valores válidos: 'KG' o 'LB'
rates.packageItems[].weight.valuedouble99Valor del peso del paquete

Ejemplos

cURL

curl -X POST https://apisandbox.eonwms.com/v1/client/shipment/rates \
-H "Authorization: Bearer TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rates": {
"shippingService": "FEDEX",
"shipper": {
"warehouse_id": 3
},
"recipient": {
"address": {
"addressLine": "123 Main St",
"postalCode": "77384",
"countryCode": "US"
}
},
"packageItems": [
{
"weight": {
"units": "LB",
"value": 3
}
}
]
}
}'

JavaScript

const rateRequest = {
rates: {
shippingService: "FEDEX", // Opcional, omitir para obtener todas las tarifas
shipper: {
warehouse_id: 3 // Almacén en USA
},
recipient: {
address: {
addressLine: "123 Main St", // Requerido solo para UPS
postalCode: "77384",
countryCode: "US"
}
},
packageItems: [
{
weight: {
units: "LB",
value: 3
}
}
]
}
};

const response = await fetch('https://apisandbox.eonwms.com/v1/client/shipment/rates', {
method: 'POST',
headers: {
'Authorization': 'Bearer TU_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify(rateRequest)
});

const rates = await response.json();
console.log(`Tarifa total: $${rates.totalNetCharge} USD`);

Python

import requests

rate_request = {
"rates": {
"shippingService": "FEDEX", # Opcional
"shipper": {
"warehouse_id": 3 # Almacén en USA
},
"recipient": {
"address": {
"addressLine": "123 Main St", # Requerido solo para UPS
"postalCode": "77384",
"countryCode": "US"
}
},
"packageItems": [
{
"weight": {
"units": "LB",
"value": 3
}
}
]
}
}

response = requests.post(
'https://apisandbox.eonwms.com/v1/client/shipment/rates',
headers={
'Authorization': 'Bearer TU_TOKEN',
'Content-Type': 'application/json'
},
json=rate_request
)

rates = response.json()
print(f"Tarifa total: ${rates['totalNetCharge']} USD")

Respuestas

200 - Éxito

{
"status": 200,
"rateType": "LIST",
"totalDiscounts": 0,
"totalBaseCharge": 14.38,
"totalNetCharge": 21.9,
"shipmentDetail": {
"rateZone": "5",
"totalBillingWeight": {
"units": "LB",
"value": 3
},
"currency": "USD"
}
}

401 - No autorizado

{
"code": 401,
"fault": {
"arguments": {
"Authorization": "invalid"
},
"type": "InvalidAuthorizationException",
"message": "La solicitud no está autorizada, el token de acceso es inválido."
}
}

422 - Sin cobertura de entrega

{
"code": 422,
"fault": {
"arguments": {
"postalCode": "00000"
},
"type": "getRates.noDeliveryCoverage",
"message": "El servicio de FedEx no está disponible actualmente para esta combinación de origen/destino."
}
}

Estructura de la Respuesta

Campos Principales

  • status: Código de estado HTTP
  • rateType: Tipo de tarifa (generalmente "LIST")
  • totalDiscounts: Descuentos aplicados
  • totalBaseCharge: Cargo base sin impuestos ni recargos
  • totalNetCharge: Cargo total a pagar (incluye todos los cargos)

Detalles del Envío

El objeto shipmentDetail incluye:

  • rateZone: Zona tarifaria (1-8 para envíos domésticos en USA)
  • totalBillingWeight: Peso de facturación
    • units: Unidad de peso (LB o KG)
    • value: Valor del peso
  • currency: Moneda (siempre USD)

Consideraciones de Peso

Peso Dimensional vs Peso Real

FedEx y otros transportistas usan el mayor entre:

  1. Peso real: El peso físico del paquete
  2. Peso dimensional: (Largo × Ancho × Alto) / Factor dimensional
Factor Dimensional
  • FedEx Ground: 139
  • FedEx Express: 139
  • UPS: 166 (puede variar)

Ejemplo de Cálculo

// Calcular peso dimensional
function calcularPesoDimensional(largo, ancho, alto, factor = 139) {
const volumen = largo * ancho * alto;
const pesoDimensional = volumen / factor;
return Math.ceil(pesoDimensional);
}

// Ejemplo: Caja de 16" x 12" x 10"
const pesoDim = calcularPesoDimensional(16, 12, 10); // = 14 lbs
const pesoReal = 3; // 3 lbs

// FedEx cobrará por 14 lbs (el mayor)

Múltiples Paquetes

Para cotizar envíos con múltiples paquetes:

const multiPackageRequest = {
rates: {
shipper: {
warehouse_id: 3
},
recipient: {
address: {
postalCode: "77384",
countryCode: "US"
}
},
packageItems: [
{
weight: {
units: "LB",
value: 5
}
},
{
weight: {
units: "LB",
value: 3
}
},
{
weight: {
units: "LB",
value: 10
}
}
]
}
};

Almacenes Disponibles en USA

Para usar este endpoint necesitas un almacén en Estados Unidos. Consulta los almacenes disponibles con el endpoint Get Available Warehouses.

Tarifas para México

Para obtener tarifas de envío en México:

  1. Las tarifas están predefinidas por contrato
  2. Contacta a soporte para obtener tu tabla de tarifas
  3. Usa el servicio de envío apropiado al crear la orden

Comparación de Servicios

Si no especificas shippingService, el endpoint puede devolver tarifas para múltiples servicios, permitiéndote comparar:

  • FedEx Ground: Más económico, 1-5 días hábiles
  • FedEx Express: Más rápido, entrega al siguiente día
  • UPS Ground: Alternativa a FedEx Ground
  • UPS Next Day Air: Entrega garantizada al siguiente día