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
Authorizationstring✓Token Bearer obtenido del endpoint /token/generate
Content-Typestring✓Debe 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_idinteger✓10ID 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.postalCodestring✓10Código postal de destino
rates.recipient.address.countryCodestring✓2Código de país de dos letras. Por defecto 'US'
rates.packageItemsarray✓99Uno 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.valuedouble✓99Valor 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