Skip to Content
Qué lleva cada fila

Qué lleva cada fila

Esta página es el detalle campo por campo, pensada para el equipo técnico. Si usted va a armar las planillas a mano, con Qué le pedimos y Cómo enviarlo ya tiene todo lo que necesita.

Hay dos envíos distintos, cada uno con su archivo: ventas y stock. El grano es diario: cada fila de ventas corresponde a un día cerrado.

Lo que cambia según por dónde envíe:

Por archivoPor API
VentasUn envío por semana, con los siete días cerrados abiertos por díaUn envío por día, con un solo date
StockSólo la foto del domingo, en la misma entrega semanal y en su propio archivoUna foto por día, con un solo as_of
Grano de ventasDía × banner × tienda × SKU (modelo-color-talle)Día × banner × tienda × SKU (modelo-color-talle)
Grano de stockDomingo × depósito × SKU (modelo-color-talle)Día × depósito × SKU (modelo-color-talle)

Los campos son los mismos por los dos caminos. Lo que cambia es cada cuánto se envía y cuántas fotos de stock se piden. Por API es un ciclo por día: cada día se envían la venta del día cerrado y la foto de stock de ese mismo cierre, así que date y as_of coinciden.

El inventario de la tienda se debe reflejar en un depósito que coincida en el nombre con la tienda. Un artículo puede tener stock sin haber vendido. Ese caso sólo aparece en el envío de stock.

Cómo se reconoce una fila

No hay identificadores. Las filas se reconocen por su contenido.

EnvíoClave
Ventasdate + banner.name + point_of_sale.name + product.sku
Stockas_of + warehouse.name + product.sku

Reenviar la misma clave actualiza la fila.

Los nombres son la clave. Yupana Sport y YUPANA SPORT son dos banners distintos. Escríbalos siempre igual.

Campos del envío de ventas

CampoObl.Descripción
dateEl día al que corresponde la venta, en YYYY-MM-DD. Una fila por día
bannerMarca comercial que vendió. Ver abajo
point_of_saleLocal donde ocurrió la venta
warehouseNoDepósito desde el que se despachó
productArtículo vendido
currencyARS, USD o EUR
quantityUnidades vendidas, netas de devoluciones
total_amount_at_sale_price_excl_vatLo que se cobró por esas unidades, sin IVA
total_amount_at_list_price_excl_vatEsas mismas unidades a precio de lista, sin IVA
total_amount_at_cost_excl_vatNoEsas mismas unidades a costo, sin IVA

date es la fecha local del punto de venta en la que se cerró la operación. Para una venta de ecommerce, la de la orden, no la del despacho. Una venta de las 23:50 va al día que termina, no al siguiente. Suele ser la fecha del ticket.

Campos del envío de stock

CampoObl.Descripción
as_ofFecha de la foto. El domingo en el archivo; en la API, el día cerrado que se informa, el mismo que el date de las ventas de ese envío
warehouseDepósito
productArtículo
on_handUnidades disponibles
on_transitNoUnidades pedidas y no recibidas
unit_list_price_excl_vatNoPrecio de lista unitario a esa fecha, sin IVA
unit_cost_excl_vatNoCosto unitario a esa fecha, sin IVA
bannerNoVacío si el depósito abastece a varios banners

La marca comercial que vende. Un grupo opera varias y cada una se reporta por separado.

CampoObl.Ejemplo
nameYupana Sport
market_sellerNoyupanasport

market_seller es el slug del ecommerce de ese banner en nuestro catálogo público. Sirve para comparar lo que vendió contra el precio al que lo publica.

El banner va en todas las filas de venta, igual que el punto de venta: son las dos dimensiones por las que se abre la venta.

point_of_sale y warehouse

Son cosas distintas. El punto de venta es dónde se hizo la operación; el depósito es de dónde salió la mercadería. En un local coinciden; en una venta de ecommerce no.

point_of_saleObl.warehouseObl.
namename
type (physical | ecommerce)is_central
addressNoaddressNo
is_activeNo
closed_atNo

is_central separa el stock que está en una tienda del que está en un depósito que abastece a varias.

ValorQué es
falseEl stock de un punto de venta: la trastienda de un local
trueNo es el stock de ninguna tienda, sino el de un depósito que abastece a varias

Es una propiedad del depósito, no de la fila: el mismo warehouse_name tiene que llevar siempre el mismo valor en todos los envíos.

Si el depósito es la trastienda de un local, que el nombre lo diga: sin identificadores es la única forma de relacionarlos.

product

CampoObl.Ejemplo
sku.modelFI310882
sku.variationNoNEGRO
sku.sizeNo42
sku.size_scaleNoAR, US, EU o UK
sku.retail_numberNoMB-4471
brandFila
nameNoMemory Speedchaser
eanNo7791234567890
supplier_codeNoCódigo del proveedor

model + variation identifican el producto; sumando size se llega al artículo físico.

Variación y talle pueden faltar los dos. Una mochila o una pelota se identifican sólo con el modelo, y ahí el sku es el modelo a secas. En ese caso retail_number suele ser lo único que separa un artículo de otro dentro del mismo modelo, así que mándelo si lo tiene.

retail_number es texto, no número. Puede llevar ceros a la izquierda, letras o guiones, y 007 no es lo mismo que 7.

brand es la marca del producto: Fila, Asics o Umbro. No confundir con banner, que es la marca del retailer.

Los importes

Dentro de un mismo día el mismo artículo se vende a precios distintos: promociones por medio de pago, una liquidación que arranca a media tarde, dos locales del mismo banner que no tienen el mismo cartel. Por eso no pedimos precio unitario, sino las mismas unidades valorizadas: a lo que cobró, a precio de lista y —si lo tiene— a costo.

descuento = 1 - (total_a_precio_de_venta / total_a_precio_de_lista) margen = 1 - (total_a_costo / total_a_precio_de_venta)

En el ejemplo de abajo, el Fila 42 del miércoles: 1 - 141308.54 / 163333.33 = 13% de descuento y 1 - 84000 / 141308.54 = 41% de margen.

El costo es el que calcula su sistema —promedio ponderado, última compra, lo que tenga—, sin IVA. Es opcional: sin él seguimos viendo el descuento, pero no si ese descuento se comió el margen.

Devoluciones

No se informan aparte: ya vienen descontadas. quantity y los importes van netos. Vendió 5, le devolvieron 2, informa 3.

Si en el día hubo devoluciones y ninguna venta de ese artículo, el neto queda negativo. Es válido. Lo que no vale es que la cantidad y los importes tengan signos distintos.

Ejemplo

Una semana con las tres marcas, abierta por día. El mismo Fila 42 aparece dos veces —el lunes y el miércoles, a precios distintos— y la última fila es una mochila: sin variación ni talle.

[ { "date": "2026-08-03", "banner": { "name": "Yupana Sport", "market_seller": "yupanasport" }, "point_of_sale": { "name": "Yupana Sport Palermo", "type": "physical" }, "warehouse": { "name": "Trastienda Palermo", "is_central": false }, "product": { "sku": { "model": "FI310882", "variation": "NEGRO", "size": "42", "size_scale": "AR" }, "brand": "Fila", "name": "Memory Speedchaser", "ean": "7791234567890" }, "currency": "ARS", "quantity": 1, "total_amount_at_sale_price_excl_vat": 81666.67, "total_amount_at_list_price_excl_vat": 81666.67, "total_amount_at_cost_excl_vat": 42000.00 }, { "date": "2026-08-04", "banner": { "name": "Yupana Sport", "market_seller": "yupanasport" }, "point_of_sale": { "name": "Yupana Sport Palermo", "type": "physical" }, "warehouse": { "name": "Trastienda Palermo", "is_central": false }, "product": { "sku": { "model": "AS740119", "variation": "AZUL", "size": "41", "size_scale": "AR" }, "brand": "Asics", "name": "Gel-Contend" }, "currency": "ARS", "quantity": 1, "total_amount_at_sale_price_excl_vat": 103305.79, "total_amount_at_list_price_excl_vat": 103305.79, "total_amount_at_cost_excl_vat": 53000.00 }, { "date": "2026-08-05", "banner": { "name": "Yupana Sport", "market_seller": "yupanasport" }, "point_of_sale": { "name": "Yupana Sport Palermo", "type": "physical" }, "warehouse": { "name": "Trastienda Palermo", "is_central": false }, "product": { "sku": { "model": "FI310882", "variation": "NEGRO", "size": "42", "size_scale": "AR" }, "brand": "Fila", "name": "Memory Speedchaser", "ean": "7791234567890" }, "currency": "ARS", "quantity": 2, "total_amount_at_sale_price_excl_vat": 141308.54, "total_amount_at_list_price_excl_vat": 163333.33, "total_amount_at_cost_excl_vat": 84000.00 }, { "date": "2026-08-07", "banner": { "name": "Yupana Outlet", "market_seller": "yupanaoutlet" }, "point_of_sale": { "name": "Yupana Outlet Online", "type": "ecommerce" }, "warehouse": { "name": "Depósito Central", "is_central": true }, "product": { "sku": { "model": "UM220145", "variation": "BLANCO", "size": "M" }, "brand": "Umbro", "name": "Neo Training" }, "currency": "ARS", "quantity": 2, "total_amount_at_sale_price_excl_vat": 90743.80, "total_amount_at_list_price_excl_vat": 123800.00, "total_amount_at_cost_excl_vat": 62000.00 }, { "date": "2026-08-08", "banner": { "name": "Yupana Outlet", "market_seller": "yupanaoutlet" }, "point_of_sale": { "name": "Yupana Outlet Online", "type": "ecommerce" }, "warehouse": { "name": "Depósito Central", "is_central": true }, "product": { "sku": { "model": "UM905512", "retail_number": "MB-4471" }, "brand": "Umbro", "name": "Mochila Neo 25L" }, "currency": "ARS", "quantity": 4, "total_amount_at_sale_price_excl_vat": 148760.33, "total_amount_at_list_price_excl_vat": 148760.33, "total_amount_at_cost_excl_vat": 76000.00 } ]

Y el stock del domingo de esa misma semana, que es el que va en el archivo:

[ { "as_of": "2026-08-09", "banner": { "name": "Yupana Sport" }, "warehouse": { "name": "Trastienda Palermo", "is_central": false }, "product": { "sku": { "model": "FI310882", "variation": "NEGRO", "size": "42", "size_scale": "AR" }, "brand": "Fila" }, "on_hand": 7, "on_transit": 12, "unit_list_price_excl_vat": 81666.67, "unit_cost_excl_vat": 42000.00 }, { "as_of": "2026-08-09", "banner": { "name": "Yupana Sport" }, "warehouse": { "name": "Trastienda Palermo", "is_central": false }, "product": { "sku": { "model": "FI310882", "variation": "NEGRO", "size": "44", "size_scale": "AR" }, "brand": "Fila" }, "on_hand": 5, "on_transit": 0, "unit_list_price_excl_vat": 81666.67, "unit_cost_excl_vat": 42000.00 }, { "as_of": "2026-08-09", "warehouse": { "name": "Depósito Central", "is_central": true }, "product": { "sku": { "model": "UM220145", "variation": "BLANCO", "size": "M" }, "brand": "Umbro" }, "on_hand": 44 } ]

Qué dice: el Fila 42 vendió una unidad el lunes a precio lleno, con 49% de margen, y dos el miércoles con 13% de descuento, que le baja el margen al 41% — la misma semana agregada mostraría 9% de descuento y 43% de margen, sin decir cuándo cambió el precio. Del Fila 42 le quedan 7 en el local.

El jueves y el domingo no tienen ninguna fila: esos dos días no vendió nada de Dass. Que un artículo no aparezca un día en el que sí hay otras filas significa lo mismo: ese día no vendió.

El Fila 44 tiene 5 unidades y no vendió ninguna en toda la semana. El Asics vendió 1 el martes a precio lleno; el Umbro, 2 online el viernes con 27% de descuento, que le baja el margen al 32%, y quedan 44 en el centro de distribución, que no lleva banner porque abastece a los dos ni costo porque ahí no lo tenían; y la mochila vendió 4 el sábado a precio lleno, identificada sólo por modelo y número de artículo.