Skip to content

Lo que sorprende ​

Comportamientos de la API que conviene conocer antes de mandar pedidos reales.

Los totales los calcula Redfloral ​

total_products = Σ price × quantity y total = total_products - discount + shipping_cost. Si mandas totales, se ignoran. Compara los de la respuesta con los tuyos para conciliar.

El precio lo mandas tú ​

El price de cada línea es lo que le cobraste a tu cliente: no se reemplaza por el del catálogo. price: 0 se acepta (regalo). Las excepciones son los productos con variantes y los productos por unidad, más abajo.

Descuentos ​

Si le hiciste un descuento a tu cliente (cupón de tu tienda, promoción), manda el precio de lista en cada línea y el monto total rebajado en discount. Así el total de la página de seguimiento y del email coincide con lo que cobraste, y el descuento aparece como tal.

  • Es un monto en pesos, no un porcentaje ni un código de cupón.
  • Se resta de los productos, no del despacho. Para envío gratis manda shipping_cost: 0.
  • Vuelve en la respuesta como total_discount.
  • Si es negativo o mayor que total_products, el pedido no se crea: 400 con el motivo en fields.discount.
  • No cambia lo que Redfloral le cobra a la florería por el pedido.

Productos libres ​

Una línea sin product_id y con name se acepta: sirve para lo que vendes y no está en tu catálogo de Redfloral. No descuenta stock ni aparece en tus estadísticas por producto, así que usa product_id cuando lo tengas. variant_id solo se acepta junto a product_id.

Productos con variantes (type: 3) ​

La línea debe traer la variante que eligió tu cliente:

json
{ "product_id": 8893, "variant_id": 51, "quantity": 1 }

Los id y atributos de cada variante están en GET /products/<id>, y el precio de cada fecha en GET /products/prices. En estas líneas el precio lo calcula Redfloral: el de la variante para la fecha de despacho, con el recargo de alta demanda. Si mandas price, se ignora; compara el de la respuesta con lo que cobraste.

  • Si falta variant_id, la variante no es de ese producto o no tiene precio, el pedido no se crea: 400 con el motivo en fields["products.N.variant_id"].
  • Si lo que falta es stock, el pedido se crea igual (ya cobraste) con el aviso variant_stock_insufficient. Avísale a la florería.

Productos por unidad (type: 2) ​

La línea debe traer las opciones que eligió tu cliente:

json
{ "product_id": 8892, "quantity": 1, "options": [{ "id": 501, "quantity": 10 }] }

Los id y los límites (personalized_min, personalized_max, personalized_max_combinations) están en GET /products/<id>, y el precio por opción de cada fecha en GET /products/prices. El precio lo calcula Redfloral: la suma de quantity × precio de cada opción para la fecha de despacho, con el recargo de alta demanda.

  • Si falta options, una opción no existe o está inactiva, o no se cumplen los límites, el pedido no se crea: 400 con el motivo en fields["products.N.options"].
  • Si lo que falta es stock, el pedido se crea igual con el aviso options_stock_insufficient. Avísale a la florería, que puede tener que reemplazar esas opciones.

La comuna se resuelve por texto exacto ​

Sin importar mayúsculas ni acentos: "NUÑOA" = "Ñuñoa" = "nunoa". Pero "Santiago" no coincide con "Santiago Centro": preferimos dejar la zona vacía antes que asignar una equivocada.

  • Si mandas zone_id, ese manda (y debe ser una comuna activa de tu florería, si no 400).
  • Si el texto no coincide, el pedido se crea igual, sin zona, con el aviso zone_not_matched. La florería lo corrige en el panel, pero mientras no tenga zona no entra bien en las rutas ni en los reportes por comuna. Para evitarlo, mapea tus comunas con GET /zones y manda zone_id.

Horarios ​

Manda el shipping_schedule_id que te dio delivery-availability. Si prefieres texto, schedule_text debe ser exacto ("10:00 - 14:00"); si no coincide con un horario real, el pedido se crea con el aviso schedule_not_matched y sin horario, y no entra bien en la armada de rutas.

Fecha no disponible ​

Si la comuna y el horario son reales pero Redfloral no despacha ese día, el pedido también se crea (ya cobraste) con el aviso date_not_available y un reason. Consulta delivery-availability antes de dejar que tu cliente elija la fecha.

Notificaciones al cliente ​

Por defecto Redfloral no le manda email ni WhatsApp a tu cliente: es tu cliente. Si quieres que lo haga, actívalo en la key desde Integraciones.

Estados ​

Solo Redfloral y la florería avanzan los estados (processing → in_transit → delivered…); tú los lees. El pedido creado por la API nace en processing.

Es una venta local ​

El pedido aparece en tu panel como cualquier venta local cargada a mano, con ruta, estados, foto de entrega y liquidación, marcado como "pedido por API". Cuenta para tu cupo de ventas locales: ver Cupo y excedente.

Zona horaria ​

updated_since sin zona se interpreta en hora de Chile (America/Santiago). Envía siempre ISO 8601 con zona: 2026-10-23T12:00:00-03:00.

Campos nuevos ​

Los campos desconocidos que mandes se ignoran, y la API puede agregar campos nuevos a las respuestas. Tu integración no debe romperse por un campo que no conoce.

API de socios de Redfloral, versión 1 (beta).