Presupuesto de compras
Con un presupuesto de 100 y leche, pan, huevos y manzanas por 10,53 en total, le quedan 89,47. Tras cada artículo verá el saldo restante, así sabe cuál le haría pasarse antes de llegar a la caja. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Presupuesto
- 100
- Cantidad de elementos
- 4
- Total gastado
- 10,53
- Restante
- 89,47
- Importe excedido
- 0
Un rastreador de presupuesto de compras responde una pregunta práctica antes de llegar a la caja: tras esta lista de precios de artículos, ¿cuánto dinero le queda y ya se ha pasado del límite? Compradores, planificadores del hogar y herramientas de retail pequeñas necesitan una respuesta determinista que no raspe catálogos ni invente impuestos. Esta calculadora de presupuesto de compras acepta un presupuesto total y una o más líneas del carrito con precios, suma el gasto, lo resta del presupuesto y devuelve el saldo restante, si se ha superado el límite, cuánto se ha excedido y un saldo residual tras cada línea para ver qué adición desbordó el carrito.
Cómo se calculan el saldo restante y el exceso de presupuesto
Parta de un presupuesto de compras no negativo en la misma unidad monetaria que ya usa en los precios de estantería: la calculadora no convierte divisas ni aplica tipos de cambio. Por cada línea del carrito tome un precio finito no negativo; los nombres opcionales etiquetan la línea para la pantalla. El total gastado es la suma de todos los precios de la lista.
El saldo restante es el presupuesto menos ese total. Cuando el restante es cero o positivo, usted sigue dentro del presupuesto; cuando es estrictamente negativo, el presupuesto se ha superado y el importe de exceso es el valor absoluto del restante. Se admite presupuesto cero: cualquier gasto positivo se reporta como exceso, acorde a reglas de sobres donde la asignación ya estaba agotada.
Las muestras gratuitas a precio cero se aceptan y no cambian el total. Presupuestos y precios negativos se rechazan porque no describen una asignación de compra ni un precio de estantería en este producto.
Qué puede hacer con ella
Sobre semanal de la compra
Introduzca su presupuesto alimentario semanal y los precios de pasillo mientras compra; observe el saldo restante y deténgase cuando el carrito se pasaría.
Carrito compartido del hogar
Los compañeros de piso publican un presupuesto común y una lista conjunta para que todos vean el mismo total gastado, el restante y la marca de exceso.
Preguntas frecuentes
¿Cómo funciona la calculadora de presupuesto de compras?
Envíe un presupuesto no negativo y una lista no vacía de precios.
¿Pueden ser cero los precios de los artículos?
Sí. Se permiten muestras o líneas promocionales a precio 0.
¿Necesito nombres en cada línea del carrito?
No. Los nombres son opcionales. Los números sueltos se tratan como precios y las líneas sin nombre reciben etiquetas estables como Item 1 para la pantalla.
¿Qué pasa si me paso del presupuesto?
El saldo restante se vuelve negativo, la calculadora marca el presupuesto como superado y le indica en cuánto se ha excedido, que es ese saldo negativo sin el signo menos.
¿Cómo sé qué artículo me hizo pasar del presupuesto?
Fíjese en el saldo que aparece después de cada línea. Los precios se restan en orden, así que la primera línea en la que el saldo baja de cero es la del artículo que desbordó el carrito.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/life/shopping-budget \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"budget":100,"items":[{"name":"Milk 1 L","price":1.49},{"name":"Bread","price":2.25},{"name":"Eggs (12)","price":3.8},{"name":"Apples 1 kg","price":2.99}]}'const res = await fetch("https://api.kit.forhosting.com/life/shopping-budget", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"budget": 100,
"items": [
{
"name": "Milk 1 L",
"price": 1.49
},
{
"name": "Bread",
"price": 2.25
},
{
"name": "Eggs (12)",
"price": 3.8
},
{
"name": "Apples 1 kg",
"price": 2.99
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/shopping-budget",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"budget": 100,
"items": [
{
"name": "Milk 1 L",
"price": 1.49
},
{
"name": "Bread",
"price": 2.25
},
{
"name": "Eggs (12)",
"price": 3.8
},
{
"name": "Apples 1 kg",
"price": 2.99
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/shopping-budget", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"budget":100,"items":[{"name":"Milk 1 L","price":1.49},{"name":"Bread","price":2.25},{"name":"Eggs (12)","price":3.8},{"name":"Apples 1 kg","price":2.99}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"budget":100,"items":[{"name":"Milk 1 L","price":1.49},{"name":"Bread","price":2.25},{"name":"Eggs (12)","price":3.8},{"name":"Apples 1 kg","price":2.99}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/shopping-budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"budget": 100,
"items": [
{
"name": "Milk 1 L",
"price": 1.49
},
{
"name": "Bread",
"price": 2.25
},
{
"name": "Eggs (12)",
"price": 3.8
},
{
"name": "Apples 1 kg",
"price": 2.99
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.shopping_budget",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La validación fallida—presupuesto ausente, listas vacías, precios negativos—se rechaza como invalid_input y no se factura.
Cómo se calculan el saldo restante y el exceso de presupuesto
El endpoint también informa el porcentaje de presupuesto usado cuando el presupuesto es mayor que cero, de modo que un carrito de treinta sobre un tope de cien muestra un treinta por ciento usado sin forzar a los clientes a recalcular ratios. El redondeo fijo a doce decimales en campos monetarios mantiene estables los goldens del navegador y de la API entre runtimes sin ruido de coma flotante en sumas simples.
Contrato de entrada, forma de la respuesta y errores
Cada línea puede ser un número suelto tratado como precio, o un objeto con price obligatorio y name opcional. Las listas de más de quinientas líneas se rechazan para acotar el trabajo pure-parse. Envíe por POST un cuerpo JSON con dos campos obligatorios: budget, un número finito mayor o igual que cero, e items, un array no vacío de líneas del carrito. Price también acepta alias habituales como cost o amount; el campo de lista acepta alias cart, prices, lines y list. Budget acepta alias limit, max, total_budget y allowance para reutilizar vocabulario de otras herramientas de dinero. En caso de éxito el cuerpo devuelve el presupuesto, el recuento de artículos, cada línea con nombre estable, precio redondeado y restante acumulado tras esa línea, más total_spent, remaining, over_budget, over_amount, within_budget, percent_used, una cadena de fórmula, un mensaje legible y pasos ordenados para hojas de trabajo. Ejemplo: presupuesto cien con leche a one point four nine, pan a two point two five, huevos a three point eight y manzanas a two point nine nine produce total gastado ten point five three y restante eighty-nine point four seven con over_budget false. Si el mismo presupuesto se empareja con líneas que suman más de cien, over_budget es true y over_amount indica cuánto se pasó del límite—sigue siendo una respuesta correcta, no un error, porque superar el presupuesto es la pregunta que responde el rastreador. Presupuesto ausente, items vacíos, números no finitos o precios negativos fallan con invalid_input nombrando el campo y no se facturan.
Dónde aporta valor un rastreador de presupuesto de compras
Las apps del hogar y las listas de la compra compartidas usan un rastreador de presupuesto para que los compañeros de piso vean el saldo al marcar artículos sin abrir una hoja de cálculo. Los kioscos de demostración retail y los sandboxes de formación POS necesitan un oráculo determinista de fondos restantes que nunca llame a APIs de precios en vivo. Mantenga las peticiones pequeñas, fije los totales redondeados en las pruebas y obtendrá saldos reproducibles para listas móviles, plugins LMS y workers en el borde sin montar una contabilidad propia. Los cursos de finanzas personales asignan ejercicios de carrito frente a presupuesto; una API con restante acumulado ordenado tras cada línea permite calificar qué adición superó el límite primero. Scripts de automatización que construyen menús semanales pueden enviar totales de ingredientes y detener reposición cuando over_budget pasa a true. Como la implementación es pure parse de nivel A, cada llamada correcta cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.
Casos de integración
Automatización del menú semanal
Los scripts envían precios planificados de ingredientes contra un tope fijo y detienen la reposición cuando over_budget pasa a true.
Preguntas técnicas
¿Qué ocurre si me paso del presupuesto?
La llamada sigue siendo correcta. remaining es negativo, over_budget es true y over_amount indica cuánto se pasó del límite. Superar el presupuesto no se trata como invalid_input.
¿Cuánto cuesta el rastreador de presupuesto de compras?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada correcta; la entrada inválida no se factura.