Divisor de gastos compartidos
Tickets de 45,5, 30 y 24,5 compartidos entre tres personas, una de ellas con peso doble, quedan en 25, 25 y 50. Anote cada gasto y dé un peso a cada persona para ver cuánto debe cada una. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Cenas compartidas, alquileres en grupo, suministros de piso y viajes de fin de semana terminan igual: alguien tiene una lista de tickets y un chat lleno de personas que no consumieron lo mismo. Un divisor de gastos compartidos toma cada importe detallado, multiplica el gran total por el peso de cada persona sobre la suma de pesos y devuelve una cifra clara de lo que debe cada participante. Compañeros de piso en igualdad usan peso uno para todos; parejas que invitan a amigos pueden dar peso dos a la pareja y peso uno a solteros; padres que reparten con hijos pueden poner a cero el peso de un niño para que solo paguen los adultos. Cuando todos los pesos son cero la petición falla con error de validación porque la división por una suma de pesos cero no está definida.
Cómo funciona el reparto ponderado de gastos compartidos
Comience con la lista del dinero ya gastado en nombre del grupo. Cada entrada es un importe de partida en una moneda acordada, como compra, cuenta de restaurante, trayecto compartido o factura de suministros. Puede enviar números sueltos u objetos pequeños con amount y una description opcional; solo los importes entran en el cálculo.
Sume esos importes para obtener el total de gasto que hay que recuperar. A continuación liste un peso de reparto por persona. Un peso es un número finito no negativo que codifica la responsabilidad relativa, no una unidad monetaria.
El reparto igual entre tres personas es pesos uno, uno y uno. Una pareja más un invitado que deba pagar la mitad podría usar dos, dos y uno. Quien no pague en esta ronda puede mantener peso cero mientras otros tienen pesos positivos.
Cuando esa suma es exactamente cero, o numéricamente indistinguible de cero, la petición falla con entrada inválida: la parte de cada persona es total por peso dividido por la suma de pesos, y ese cociente no está definido cuando nadie tiene una parte positiva. Cuando la suma es positiva, la persona i debe el total de gasto multiplicado por el peso i dividido por la suma de pesos. Las ratios de reparto se informan junto a los importes en moneda para auditar la proporción con independencia de la escala.
Se rechazan importes de gasto negativos y pesos negativos porque este modelo describe dinero gastado y participaciones relativas no negativas, no reembolsos ni responsabilidades invertidas. Las listas de gastos vacías y de pesos vacías fallan pronto. Se omiten símbolos de moneda para que el mismo motor funcione con USD, EUR o cualquier unidad que el grupo haya elegido fuera de línea.
Qué puede hacer con ella
Liquidación mensual de piso
Detalle alquiler, suministros y compra, asigne pesos por noches presentes y publique lo que debe cada persona sin una hoja compartida.
Cuenta desigual de restaurante o bar
Reparta una cuenta de varios platos por peso para que bebedores intensos o parejas paguen su parte justa mientras el grupo ve ratios claras.
Bots de gastos de viaje y eventos
Alimente totales de tickets y pesos de participantes en un bot de backend para que las solicitudes de pago coincidan con la misma matemática que la herramienta gratuita del navegador.
Preguntas frecuentes
¿Cómo se calcula la parte de cada persona?
Sume todos los importes de gasto detallados para obtener el total. Cada persona debe total × (su peso ÷ suma de todos los pesos). Pesos iguales significan reparto igual.
¿Qué ocurre si todos los pesos son cero?
Una suma de pesos cero dividiría por cero, así que la calculadora se niega a inventar partes.
¿Pueden algunas personas tener peso cero?
Sí, siempre que al menos un peso sea positivo. Las personas con peso cero deben cero en esta liquidación mientras otras cubren el total.
¿Cuánto cuesta?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Qué peso le doy a una pareja frente a una persona sola?
Dé peso 2 a la pareja y peso 1 a cada persona sola. Con un total de 100 y pesos 1, 1 y 2, las partes quedan en 25, 25 y 50.
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/expense-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"expenses":[45.5,30,24.5],"weights":[1,1,2]}'const res = await fetch("https://api.kit.forhosting.com/life/expense-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/expense-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/expense-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"expenses":[45.5,30,24.5],"weights":[1,1,2]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"expenses":[45.5,30,24.5],"weights":[1,1,2]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/expense-split", 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
{
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.expense_split",
"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
Cómo funciona el reparto ponderado de gastos compartidos
La calculadora forma weight_sum como la suma de todos los pesos. Todo es aritmética de punto flotante determinista sin llamadas de red, sin semillas aleatorias y sin marcas de reloj, de modo que entradas idénticas producen siempre el mismo JSON.
Qué envía y qué recibe de vuelta
Envíe dos campos obligatorios y uno opcional. Comprobaciones clásicas incluyen total cien con pesos uno y uno para cincuenta cada uno, o noventa con pesos uno, uno y dos de modo que la tercera persona pague cuarenta y cinco. Conecte el formulario gratuito del navegador para chats de piso y mesas de cena, luego invoque el contrato idéntico desde scripts cuando un bot o backend necesite los mismos números. El campo expenses es un array no vacío de importes finitos no negativos, u objetos con un campo amount finito no negativo, o una cadena JSON de ese array. El campo weights es un array no vacío de números finitos no negativos, una entrada por persona, o una cadena JSON de ese array. El campo opcional names es un array de cadenas de visualización con la misma longitud que weights; si se omite, las personas se etiquetan Persona 1, Persona 2, y así sucesivamente. Campos obligatorios ausentes, cadenas no numéricas, NaN, Infinity, arrays vacíos, importes negativos, pesos negativos, una longitud de names que no coincide con weights, y una suma de pesos cero fallan con invalid_input y no se cobran. En éxito la respuesta devuelve expense_count, la lista limpia de expenses con index, amount y description opcional, expense_total, person_count, los weights limpios y weight_sum, los names resueltos, un array people de objetos con name, weight, share_ratio y owes, más un array paralelo owes para scripts. La cadena method weighted_expense_split y la cadena formula que reafirma que owes equals total times weight over sum of weights documentan el contrato. El precio de las llamadas API exitosas es la base publicada de $0.002 por ítem; los fallos de validación no consumen saldo prepago.
Dónde aparecen los divisores de gastos compartidos en el trabajo real
Compañeros de piso que liquidan alquiler mensual, suministros y compra necesitan una respuesta confiable de cuánto debe cada persona tras detallar cada ticket, sobre todo cuando un compañero estuvo fuera media mes y debe llevar un peso menor. Grupos de amigos que reparten una cuenta larga de restaurante con partes desiguales por vino o menús infantiles usan pesos en lugar de calculadoras a mano para que nadie rederive la aritmética en el chat. Parejas que reciben invitados pueden asignar peso doble a un asiento compartido y peso simple a cada invitado, y publicar el array people directamente en una solicitud de pago. El slug SEO apunta a quienes buscan un divisor de gastos compartidos con costes detallados y pesos personalizados, intención distinta de calculadoras iguales de combustible y peajes de viaje, divisores de propina o herramientas LLM que solo categorizan transacciones. Las tuberías de automatización de gastos almacenan expense_total, weight_sum, ratios de reparto y owes por persona para auditoría tras cada evento compartido. Como esta capacidad es un motor parse puro, el precio API es la base publicada de $0.002 por ítem exitoso y la validación fallida no consume saldo. Mantenga el aterrizaje centrado en la recuperación ponderada de un total detallado para que la página posicione por esa frase y el contrato JSON siga siendo lo bastante pequeño para widgets y bots SMS.
Preguntas técnicas
¿Cómo formato expenses y weights?
Envíe expenses como array de números (p. ej. [45.5, 30, 24.5]) u objetos con amount, y weights como array numérico del mismo estilo (p. ej. [1, 1, 2]). Los names opcionales etiquetan a cada persona.