Categorizar gastos
Envíe sus movimientos de tarjeta o de banco y reciba cada uno en una categoría como viajes, material de oficina, software o comidas, a partir del comercio, el importe y la nota. También admite su propia lista de categorías. Paga por uso, sin suscripción.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Todo contador conoce la tarea tediosa: un archivo con quinientos movimientos de tarjeta, cada uno necesitando una categoría antes de cerrar el mes.
Por qué cuesta tanto clasificar los movimientos
Cualquier contable conoce la tarea: una hoja con quinientos movimientos de tarjeta, cada uno a la espera de su categoría antes de cerrar el mes. Las descripciones son crípticas. Un nombre de comercio como SQ *DARK ROAST LLC no le dice casi nada a una persona sin contexto, y etiquetar miles de filas a mano cada mes no es un trabajo que nadie quiera. La herramienta lee juntos el nombre del comercio, el importe y la nota, como lo haría un contable con experiencia, y asigna cada línea a su categoría: viajes, material de oficina, software, comidas y otras.
Sus categorías y un motivo que puede revisar
Puede enviar su propia lista de categorías para que el resultado coincida con las cuentas que ya usa, o dejar que se aplique un plan contable general sensato. Cada movimiento vuelve con su categoría y, cuando ayuda, con una breve nota de por qué se eligió, de modo que quien revisa puede comprobarlo sin rehacer el razonamiento. Los lotes grandes son lo habitual: el extracto bancario de fin de mes se ordena de una vez y llega al contable ya clasificado. La herramienta quita el trabajo de etiquetar, no el criterio del contable en los casos dudosos.
Quién necesita esto de verdad
Contadores que concilian cuentas de clientes, equipos financieros cerrando fin de mes, y herramientas de gestión de gastos que reciben movimientos crudos del banco chocan siempre con el mismo obstáculo: las descripciones de las transacciones son crípticas. Un texto como 'SQ *DARK ROAST LLC' no le dice casi nada a una persona sin contexto, y etiquetar manualmente miles de filas cada mes no es un trabajo que nadie quiera hacer.
La categorización de gastos existe para eliminar justo esa tarea, no para reemplazar el criterio del contador en los casos ambiguos.
Qué puede hacer con ella
Automatización del cierre mensual
Descargue el feed bancario, categorice todas las transacciones en un lote asíncrono y entréguele al contador un libro ya ordenado en vez de un archivo crudo.
Backends de apps de gastos
Etiquete automáticamente cada cargo de tarjeta de un empleado apenas llega, para que la cola de aprobación de reembolsos muestre una categoría y no un campo vacío.
Tableros de análisis de gasto
Alimente transacciones ya categorizadas a una herramienta de BI para graficar el gasto por departamento o tipo de proveedor sin etiquetar nada a mano primero.
Preguntas frecuentes
¿Cómo decide la categoría esta api de categorizar gastos?
Lee en conjunto la descripción del comercio, el monto y la nota, y los compara contra su plan de cuentas o contra una taxonomía contable general por defecto, devolviendo la categoría que mejor encaja en cada transacción.
¿Puedo usar mi propia lista de categorías en vez de la que viene por defecto?
Sí, envía su taxonomía en la solicitud y cada transacción se compara contra ella en lugar de usar la categoría por defecto.
¿Existe un plan gratuito?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Qué pasa si una transacción no se puede categorizar con certeza?
Igual se devuelve con una categoría de mejor esfuerzo y una nota que señala menor confianza, para que su proceso de revisión la detecte en vez de archivarla mal en silencio.
¿Esto reemplaza a un contador?
No: automatiza el paso repetitivo de clasificación para que su contador se enfoque en las decisiones de criterio y las excepciones, no en el etiquetado manual.
¿Puedo enviar lotes grandes con miles de transacciones?
Sí, los lotes grandes son el caso de uso esperado; envía un solo arreglo de transacciones y el precio escala linealmente por ítem, sin un límite arbitrario de lote.
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/text/expense-categorize \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","categories":["soporte","ventas","facturación"]}'const res = await fetch("https://api.kit.forhosting.com/text/expense-categorize", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"categories": [
"soporte",
"ventas",
"facturación"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/expense-categorize",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"categories": [
"soporte",
"ventas",
"facturación"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/expense-categorize", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","categories":["soporte","ventas","facturación"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","categories":["soporte","ventas","facturación"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/expense-categorize", 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
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"categories": [
"soporte",
"ventas",
"facturación"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.expense_categorize",
"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.
Límites
max_tokens | 20000 |
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. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |
Notas técnicas
Este endpoint lee el nombre del comercio, el monto y cualquier nota que envíe, y asigna cada línea a la cuenta contable que le corresponde —viáticos, insumos de oficina, software, comidas— para que su libro contable cierre más rápido y nadie tenga que adivinar.
Qué envía y qué recibe
Cada transacción vuelve con su categoría asignada y, cuando es útil, una nota breve explicando por qué se eligió esa cuenta, para que un revisor humano pueda verificarla sin rehacer la lógica. Envía un arreglo de transacciones —descripción, monto, moneda y, opcionalmente, su propia lista de categorías— mediante POST a /text/expense-categorize. La tarea corre de forma asíncrona: recibe un task_id de inmediato y el resultado categorizado llega después, ya sea a su webhook firmado o disponible en un enlace firmado válido por 24 horas.
Cómo funciona la categorización
El motor lee juntos el nombre del comercio, el monto y el texto de la nota, comparando patrones contra la taxonomía que suministre o contra un plan de cuentas general por defecto si no envía uno. Es el mismo instinto que aplica un contador con experiencia —'este cargo recurrente de $12.99 de un proveedor de software es una suscripción, no una compra única'— convertido en algo que puede invocar desde código en vez de desplazarse por una hoja de cálculo.
Cómo encaja en un flujo real
Los lotes grandes son el caso normal de uso, no una excepción: puede enviar 50 filas o 50,000, y el precio escala de forma predecible según el volumen, sin penalizar el tamaño de su libro contable. Al ser asíncrono y cobrarse por ítem, puede enviar un mes entero de transacciones en una sola llamada y dejar que el webhook avise a su sistema contable cuando termine, sin necesidad de consultar el estado repetidamente.
Dónde termina su alcance
Esa honestidad es justamente el punto: un clasificador que adivina mal en silencio es peor que uno que señala su incertidumbre. Esta es una categorización basada en patrones, no una asesoría fiscal ni una certificación de auditoría: las transacciones ambiguas (un cargo de $400 de un comercio general, por ejemplo) reciben una categoría de mejor esfuerzo con una señal de menor confianza incluida en el campo de nota, y su equipo financiero debería mantener un paso de revisión para todo lo que supere su umbral de materialidad.
Casos de integración
Firmas contables con múltiples clientes
Procese las transacciones de cada cliente contra su propio plan de cuentas enviando una taxonomía personalizada por solicitud.
Preguntas técnicas
¿Cuánto cuesta?
$0.003 por solicitud más $0.0135 por ítem categorizado, así que un lote de 200 transacciones tiene un costo fijo y predecible que puede calcular antes de enviarlo.
¿Cómo recibo los resultados?
La tarea corre de forma asíncrona y devuelve un task_id de inmediato; los resultados llegan a su webhook firmado o mediante un enlace firmado válido por 24 horas, según lo que configure.