Saltar al contenido
API v1 · https://bentho.org/api
POST/api/mod/comercial/{espacio}/cotizar

Cotiza el envío de un pedido

Le das el pedido, la ciudad y el método de pago, y te devuelve el envío, lo que el cliente paga hoy, lo que cobra el mensajero y el total, con un desglose listo para enseñar. Es lo que va a la orden de Facturación.

  • PERMISOescribe
  • CRÉDITOSno gasta
  • AUTENTICACIÓNBearer bth_…

PARÁMETROS

CAMPOTIPOREQUERIDOQUÉ ES
espaciostringSÍEl id del espacio (sale en GET /api/companies). Tiene que tener el módulo Comercial.

CUERPO · JSON

CAMPOTIPOREQUERIDOQUÉ ES
ciudad_destinostringSÍAdónde va. Sin importar tildes ni mayúsculas; también vale una dirección que empiece por la ciudad («Bogotá, Calle 10 # 20-30»).
metodo_pago"contra" | "transferencia" | "mixto"SÍcontra: paga todo al mensajero. transferencia: paga todo por adelantado. mixto: los productos por transferencia y el envío al mensajero.
lineas[{ sku, nombre, cantidad, precio_unitario }]ESTA O SUBTOTALEl pedido, con los precios de Productos. cantidad es entera (por defecto 1). Si la mandas, el subtotal sale de aquí y el peso, de peso_sku.
subtotalstringESTA O LINEASEl subtotal de los productos, si no mandas lineas.
peso_kgstringnoEl peso del pedido en kilos. Manda sobre peso_sku y sobre el de fábrica.
envio_gratisbooleannoSi un beneficio da envío gratis. Por defecto false.
descuentostringnoEl descuento de los beneficios, en monto. Por defecto 0.

RESPUESTA 200

CAMPOTIPOQUÉ ES
metodo_pago · ciudad_destinostringEl método y la ciudad, con el nombre que tiene en tu tabla si se encontró.
zona · rango_pesostring | nullLa zona del destino y el rango de peso de la tabla que se usó.
peso_kg · monedastringEl peso usado y la moneda.
subtotalstringEl de los productos.
base_enviostringLa tarifa de tu tabla para esa zona y ese peso. 0 con envío gratis.
cargo_fijo · iva_enviostringContraentrega bajo el umbral: el cargo fijo. Contraentrega desde el umbral: el IVA del envío. Si no, 0.
comision_recaudostringContraentrega desde el umbral: la comisión de recaudo. Si no, 0.
descuento · envio_gratisstring · booleanLos que mandaste.
total_enviostringEl envío con ese método. Es el envio de la orden en Facturación.
total_a_pagar_hoystringLo que el cliente paga ya: todo en transferencia, los productos menos el descuento en mixto, 0 en contraentrega.
total_mensajerostringLo que cobra el mensajero: todo en contraentrega, el envío en mixto, 0 en transferencia.
total_pedidostringsubtotal + total_envio − descuento. Nunca negativo.
lineas[]{ concepto, monto, tipo }El desglose listo para enseñar. tipo: producto, envio, cargo, iva, comision, beneficio o total.
tarifa_versionstring | nullLa versión de la tabla activa. Pásala a la orden con el envío.
degradado · notasboolean · string[]degradado: true: no hay tarifa para ese destino y el envío no está calculado; notas dice por qué. También avisan de un peso estimado o fuera de la tabla.
ciudad_sugeridastring | nullSi la ciudad no se encontró pero hay una sola muy parecida en tu tabla: pregúntale al cliente si es esa.

ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}

STATUSCUÁNDODETAIL LITERAL
403El espacio no tiene el módulo Comercialmódulo no habilitado para este espacio.
403La clave es de solo lecturaTu cuenta es de solo lectura en este espacio.
422Falta ciudad_destino, o metodo_pago no es contra, transferencia ni mixto—
422Falta un campo obligatorio o uno no es de su tipo (detail es una lista)—

Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.

CONVIENE SABER

  • Solo calcula: no guarda nada. Aun así pide una clave escribe, porque es un POST.
  • Un destino sin tarifa no es un error: responde 200 con degradado: true. No cobres ese envío: confírmalo a mano.
  • Las cifras van como texto, redondeadas a unidades enteras de la moneda (la mitad, hacia arriba).
  • Los beneficios no se deciden aquí: evalúalos antes con beneficios y pasa su descuento y su envio_gratis.