Varianza de precio entre factura y pedido: cómo se calcula y cuándo parar el pago
ininvoice — La varianza de precio se calcula línea a línea con la fórmula varianza_precio = (precio_factura − precio_pedido) × cantidad_factura, siempre sobre precios unitarios pre-tax. La tolerancia estándar es 2% O 1,50€ por línea en modo OR (cualquiera de las dos cubre). Ejemplo: 200 unidades, precio pedido 1,00€, precio factura 1,05€ → varianza = (1,05 − 1,00) × 200 = 10€. Si supera la tolerancia, paras el pago y abres una excepción hacia compras.
Si eres DAF
La fórmula exacta y por qué comparar totales en lugar de líneas falla en cuanto entran tres SKUs.
Si eres controller
Tres ejemplos en EUR (pequeña, significativa y trampa de totales) con números que puedes verificar.
Si eres CEO de PYME
Cuándo NO paras el pago: redondeo de IVA, descuentos pronto pago y ajustes contractuales documentados.
La varianza de precio entre factura y pedido es uno de esos números que todo el mundo da por entendido hasta el día en que un proveedor pasa una factura por encima de lo pactado y el cuadre tarda dos semanas.
Este artículo explica la matemática con tres ejemplos en euros. Sin "magia de IA". Solo aritmética que un controller puede reproducir en una hoja de cálculo. Tesis: la varianza siempre se calcula línea a línea sobre precios unitarios pre-tax, nunca por totales de cabecera.
La fórmula
La definición operativa que usamos en three-way matching:
varianza_precio = (precio_factura − precio_pedido) × cantidad_factura
Tres detalles que importan:
- Pre-tax. Precios unitarios sin IVA. El IVA es un porcentaje que se aplica encima y no debe entrar en el cálculo. Mezclar con y sin IVA introduce ruido del orden del tipo aplicable.
- Unitario. Precio de una unidad, no total de línea. Si el proveedor te factura 100 unidades en lugar de 80 a precio correcto, la varianza de precio es cero (es de cantidad).
- Multiplicado por cantidad facturada. Para expresar el impacto en euros. 0,05€ sobre 200 unidades son 10€; sobre 20.000 son 1.000€. La fórmula te da euros, que es lo que decide si paras el pago.
Para separar precio de cantidad:
varianza_cantidad = (cantidad_factura − cantidad_pedido) × precio_pedido
Así cada excepción va al equipo correcto: precio a compras, cantidad a recepciones.
Ejemplo 1: discrepancia pequeña, conciliación automática
Pedido y factura por una sola línea de 200 unidades de un consumible con precio pactado de 1,00€ pre-tax. La factura llega con 1,05€ pre-tax.
| Campo | Pedido | Factura |
|---|---|---|
| Cantidad | 200 | 200 |
| Precio unitario pre-tax | 1,00€ | 1,05€ |
| Total línea pre-tax | 200,00€ | 210,00€ |
Cálculo:
varianza_precio = (1,05 − 1,00) × 200 = 10,00€
desviación_pct = (1,05 − 1,00) / 1,00 = 5,00%
5% supera el 2% y 10€ superan 1,50€: la línea queda fuera de tolerancia y se marca como excepción.
Si el precio facturado hubiera sido 1,005€, la varianza sería 1,00€ (200 × 0,005). Por debajo de 1,50€ absolutos: dentro de tolerancia aunque la desviación porcentual sea del 0,5%. El modo OR cubre redondeos pequeños a precios bajos sin bloquear pagos.
Ejemplo 2: discrepancia significativa, excepción a compras
Mismo escenario, pero el proveedor pasa la factura a 1,50€ pre-tax.
| Campo | Pedido | Factura |
|---|---|---|
| Cantidad | 200 | 200 |
| Precio unitario pre-tax | 1,00€ | 1,50€ |
| Total línea pre-tax | 200,00€ | 300,00€ |
Cálculo:
varianza_precio = (1,50 − 1,00) × 200 = 100,00€
desviación_pct = (1,50 − 1,00) / 1,00 = 50,00%
50% y 100€. La línea queda como excepción y la factura no se aprueba sin justificación del comprador (cambio contractual, error de tarifa, revisión de tarifa). El indicador más útil para el routing no es el porcentaje sino los euros: 100€ es accionable para compras.
Ejemplo 3: el total cuadra pero las líneas no
Este es el caso didáctico que demuestra por qué comparar por totales de cabecera es una trampa.
Pedido con tres líneas: A, B y C. Factura con las mismas tres líneas. Total de la factura igual al total del pedido.
| Línea | Cantidad | Precio pedido | Precio factura | Total pedido | Total factura |
|---|---|---|---|---|---|
| A | 100 | 2,00€ | 2,50€ | 200,00€ | 250,00€ |
| B | 100 | 3,00€ | 3,00€ | 300,00€ | 300,00€ |
| C | 100 | 5,00€ | 4,50€ | 500,00€ | 450,00€ |
| Total | 1.000,00€ | 1.000,00€ |
El total de cabecera dice 1.000€ en ambos lados. Cuadre perfecto. Si tu sistema cruza por totales, esta factura pasa. Línea a línea:
- Línea A: varianza = (2,50 − 2,00) × 100 = +50,00€
- Línea B: varianza = 0,00€
- Línea C: varianza = (4,50 − 5,00) × 100 = −50,00€
La A tiene 50€ de sobreprecio, la C 50€ de descuento. Se compensan en cabecera pero ocultan dos cambios contractuales que el proveedor no avisó. Si tu mix de compra cambia el mes siguiente, pierdes margen sin enterarte. Por eso el three-way matching honesto siempre es línea a línea: el total nunca miente, pero las líneas sí.
Tolerancia en modo OR: 2% o 1,50€
Tolerancia por línea: 2% O 1,50€ absolutos. Queda dentro si cualquiera cubre. No las dos a la vez. Por qué OR y no AND:
- Precios bajos. Un tóner de 2€ con desviación 0,05€ representa 2,5% (sobre umbral) pero solo 0,05€ absolutos. AND lo bloquea; OR lo deja pasar si los euros son pequeños.
- Precios altos. Equipamiento de 5.000€ con desviación 100€: 2% justos pero 100€ absolutos. AND lo deja pasar; OR aplica la condición más estricta.
El modo OR refleja cómo decide un controller a mano: si una de las dos es chica, no me peleo.
Tolerancia por tipo de compra
2% / 1,50€ es un default razonable. Para compras críticas conviene ajustar:
| Tipo de compra | Tolerancia % sugerida | Tolerancia € sugerida |
|---|---|---|
| Material de oficina, consumibles | 3% | 2,00€ |
| Equipamiento general | 2% | 1,50€ |
| Materia prima crítica | 0,5% | 1,00€ |
| Servicios profesionales | 5% | 5,00€ |
La materia prima crítica se aprieta porque pasa volumen alto. Los servicios profesionales se aflojan porque el detalle por línea es más impreciso. Configurable por categoría o proveedor.
Varianza precio vs varianza cantidad
Dos varianzas distintas, dos destinos distintos:
- Varianza de precio → compras. ¿Por qué me facturan a un precio distinto del pactado?
- Varianza de cantidad → almacén / recepciones. ¿Por qué he recibido una cantidad distinta de la pedida o facturada?
Si una factura tiene ambas, generas dos excepciones en paralelo. Mezclarlas en una sola alerta hace que el equipo equivocado mire el problema.
Cuándo NO paras el pago
No toda varianza es un error. Tres casos en los que la línea sale fuera de tolerancia pero la factura sigue pagable:
- Redondeo de IVA y bases. Calcular el unitario pre-tax dividiendo total de línea entre cantidad genera diferencias milésimas que el modo absoluto absorbe. El RD 1619/2012 de facturación establece cómo se desglosan bases e impuestos.
- Ajustes contractuales documentados. Anexo firmado, escalado de precio, revisión por índice. Si el pedido refleja todavía el precio anterior, la varianza es un artefacto de datos maestros desactualizados, no un error.
- Descuento por pronto pago. Si pactaste 2% por pago a 7 días y la factura llega con precio bruto, la varianza aparente es un descuento de pago, no una alerta de matching.
En estos casos la línea se marca como conciliada con justificación. Así no reaparece el mes siguiente con el mismo proveedor.
¿Y si te lo enseñamos sobre tus facturas reales?
ininvoice cruza línea a línea con tolerancia 2% / 1,50€ OR-mode, separa varianza de precio y de cantidad y exporta a tu contabilidad. Reserva tu plaza y mide cuántas facturas pasarían touchless hoy.
Routing: a quién va la excepción y en qué plazo
La excepción no la resuelve administración. La resuelve quien tiene contexto:
- Varianza de precio: al comprador responsable. Plazo: 48h hábiles. Sin respuesta, escalada al responsable.
- Varianza de cantidad: a almacén / recepción. Plazo: 24h. Suele ser albarán parcial o recepción no contabilizada.
- Doble varianza: ambas en paralelo, no en serie.
Las medias de resolución las publica IOFM: los equipos que cruzan línea a línea con routing automático resuelven excepciones en horas, no días.
Automatización: cómo lo aplica ininvoice sin re-keying
El cálculo de la varianza es trivial cuando los datos están estructurados. El problema real es tener cantidades, precios unitarios y descripciones limpias en factura, pedido y albarán a la vez. ininvoice resuelve la cadena completa:
- Ingesta automática desde Gmail u Outlook sin reenvíos manuales.
- Lectura estructurada de PDF, XML y FacturaE: prioriza el dato firmado sobre píxeles.
- Matching línea a línea por descripción con tolerancia 2% / 1,50€ OR configurable.
- Separación automática de varianza precio vs cantidad con routing diferenciado.
- Exportación a Holded, Sage y A3 con datos verificados.
Flujo completo en three-way matching, touchless accounts payable y conciliación de facturas y albaranes.
Preguntas frecuentes
- ¿Por qué comparar precios pre-tax y no precios con IVA?
- El IVA es un porcentaje sobre la base imponible. Comparar con IVA solo añade ruido. El BOE define el desglose en el RD 1619/2012 de facturación.
- ¿Por qué multiplicar por la cantidad de la factura y no por la del pedido?
- Porque expresas la desviación en euros realmente facturados. La diferencia 200 vs 100 unidades es varianza de cantidad y se calcula aparte.
- ¿Y si el precio de la factura es menor que el del pedido?
- La varianza sale negativa. Está a tu favor pero igualmente se marca y se justifica: descuento promocional o error del proveedor que reclamará en rectificativa.
- ¿Qué tolerancia recomienda IOFM?
- IOFM publica benchmarks anuales. Las tolerancias típicas mid-market están entre 1-3% y 1-5€ absolutos por línea. 2% / 1,50€ OR es un punto medio razonable.
- ¿Por qué modo OR y no AND?
- AND deja pasar lo que no debe a precio alto y bloquea lo que no debe a precio bajo. OR replica el sentido común del controller.
- ¿Cómo se hace el match línea a línea cuando las descripciones varían?
- Por similitud semántica de descripción más códigos de artículo cuando están disponibles. "Toner HP CF410A" debe machear con "HP 410A Tóner negro". Aquí IDP mejora claramente sobre OCR clásico.
- ¿Funciona la varianza línea a línea si no tengo pedido formal?
- Sin pedido no hay contra qué cruzar. La alternativa es matching contra histórico de precios pagados al proveedor, más débil pero útil. Para three-way matching de verdad, las compras pasan por pedido.
¿Cuántas de tus facturas pasarían touchless con varianza línea a línea hoy?
Conecta Gmail u Outlook y mide la tasa real sobre 30 días de facturas tuyas. Reservar plaza.
Tres cosas para recordar
- La varianza de precio se calcula línea a línea, sobre precios unitarios pre-tax, multiplicada por la cantidad facturada. Cabecera nunca.
- Tolerancia 2% O 1,50€ absolutos por línea, modo OR. AND deja pasar lo que no debe a precio alto y bloquea lo que no debe a precio bajo.
- Separa varianza de precio (a compras) de varianza de cantidad (a almacén). Mezclarlas hace que el equipo equivocado mire el problema.
Si quieres ver cómo queda esto sobre tus propias facturas, prueba ininvoice. También puedes mirar el precio y las funcionalidades en detalle.
Contenido relacionado
Ver demo con mis facturas
Conecta Gmail u Outlook. ininvoice ingesta, cruza línea a línea con tolerancia 2% / 1,50€ OR-mode y exporta a tu contabilidad.
Reservar plaza