Enriquecedor de Transacciones

Resumen

Enriquecer las transacciones bancarias categorizándolas en categorías de gastos e ingresos puede proporcionar información valiosa para la gestión financiera tanto personal como empresarial. Este Neuron te permite categorizar las operaciones bancarias de los clientes (ya sean personas o empresas) en categorías de gastos e ingresos según la taxonomía de Dedomena, además de información del comerciante (merchant).

La taxonomía de Dedomena consta de 92 categorías: 11 relacionadas con ingresos y 81 relacionadas con gastos.

Ejemplos de Categorías:

  1. Categorías de Gastos: Supermercado y Alimentación, Taxi, VTC y Movilidad Compartida, Suministros de Oficina y Hogar, Farmacia.

  2. Categorías de Ingresos: Salario y Jubilación, Intereses y Dividendos, Ventas, Transferencias entrantes.

Casos de Uso

A continuación se proporcionan algunos casos de uso clave:

  • Presupuestación y Proyecciones: Ayuda a establecer y adherirse a presupuestos mediante el seguimiento de gastos en diversas categorías (ej. alimentación, entretenimiento, servicios). Asiste en la creación de presupuestos precisos y proyecciones financieras al analizar patrones históricos de gastos e ingresos.

  • Seguimiento y Gestión de Gastos: Permite a los usuarios monitorear y analizar patrones de gasto, identificar gastos innecesarios y ajustar hábitos para ahorrar dinero. Ayuda a monitorear y controlar gastos empresariales, identificando áreas donde se pueden reducir los costos.

  • Metas de Ahorro: Asiste en establecer y alcanzar metas de ahorro proporcionando una visión clara de los ingresos vs. gastos.

  • Preparación de Impuestos: Simplifica la declaración de impuestos categorizando las transacciones relevantes para las deducciones fiscales (ej. donaciones caritativas, gastos médicos).

  • Gestión de Deudas: Ayuda a gestionar y priorizar los pagos de deudas mediante el seguimiento de cuánto se paga hacia deudas versus otros gastos.

  • Monitoreo de la Salud Financiera: Proporciona una visión holística de la salud financiera mediante el seguimiento de los ingresos netos y la categorización de los gastos.

  • Análisis de Flujo de Caja: Realiza un seguimiento de los flujos de caja entrantes y salientes, ayudando a las empresas a gestionar la liquidez y planificar futuras necesidades de efectivo.

  • Análisis de Rentabilidad: Permite a las empresas evaluar la rentabilidad de diferentes departamentos o proyectos categorizando los ingresos y los gastos.

  • Cumplimiento Tributario: Simplifica la preparación de impuestos y asegura el cumplimiento categorizando las transacciones según las regulaciones fiscales.

  • Auditoría y Reportes: Facilita auditorías internas y externas y la presentación de informes financieros manteniendo registros de transacciones organizados y categorizados.

  • Detección de Fraude: Identifica transacciones inusuales que se desvían de los patrones normales de gasto o ingreso, señalando posibles actividades fraudulentas.

  • Planificación Financiera: Asiste en la planificación financiera a largo plazo proporcionando una imagen clara de las fuentes de ingresos y hábitos de gasto.

  • Asesoría Financiera Personalizada: Permite a los asesores financieros proporcionar consejos adaptados basados en categorizaciones de transacciones detalladas.

  • Alertas Automatizadas: Configura alertas para categorías de transacciones específicas, como cuando los gastos superan un cierto límite o cuando se depositan ingresos.

  • Integración con Herramientas Financieras: Mejora la funcionalidad de las aplicaciones y herramientas financieras proporcionando datos de transacciones categorizadas para un análisis y asesoramiento financiero más precisos.

Taxonomía

Por favor, encuentra la Taxonomía del Enriquecedor de Transacciones en la pestaña de Recursos.

API y Endpoints

La versión actual de este Neuron es la V6.0.0.

/v6/enricher

POST/v6/enricher/{region}

Esta ruta/endpoint permite clasificar una transacción bancaria o grupo de transacciones bancarias en una de las 92 categorías de la taxonomía de Dedomena. Puede usarse para categorizar una sola transacción o hasta 120,000 transacciones en una sola solicitud.

Parámetros de Ruta:

  • region (str): selecciona la región de la(s) transacción(es). Opciones: Spain.

Cabeceras (Headers):

text
Authorization: Bearer TU_TOKEN_DE_ACCESO

Esta cabecera debe incluirse en cada solicitud para autenticar al usuario.

  • **Nombre de cabecera:**Authorization

  • **Formato de cabecera:**Bearer <tu_token>

Si se omite o es incorrecto, el servidor responderá con un error 401 Unauthorized.

Cuerpo de la Solicitud (Request Body):

Una lista de transacciones a clasificar. Cada transacción debe incluir los siguientes campos:

  • transaction_id (str): cadena con un ID único para cada transacción.

  • date (datetime): variable datetime con la fecha de cada transacción.

  • desc (str): cadena con la descripción/concepto de la transacción.

  • amt (float): variable numérica con el importe de la transacción.

image

Cuerpo de la Solicitud - Arreglo JSON
json
[
  {
    "transaction_id": "txn-123",
    "date": "2024-10-10 10:10:10",
    "desc": "Payments to Dedomena AI",
    "amt": "-999"
  }
]

???+ example "Ejemplo usando Python y requests"

py
import pandas as pd
import requests

```text
# Leer los datos
data_request = pd.read_csv(...) ## Actualiza con la ruta del conjunto de datos y los parámetros necesarios.

# Cambiar nombres y tipos
data_request["columns"] = ["transaction_id", "date", "desc", "amt"] # Opcional: cambiar nombres de columnas.
data_request["transaction_id"] = data_request["transaction_id"].astype(str) # Opcional: convertir columna "transaction_id" a tipo string/object
data_request["amt"] = data_request["amt"].astype(str) # Opcional: convertir columna "amt" a tipo string/object

# Convertir a JSON desde dataframe de Pandas
data_json = data_request.sample(100).to_json(orient='records') ## Aquí se toman 100 filas de muestra del conjunto original. Por favor, modifícalo según conveniencia.

# Definir el Payload y guardar la solicitud en un objeto response
payload = {'region':'SPAIN'} 
headers = {
    "Authorization": f"Bearer {TU_TOKEN_DE_ACCESO}" ## Actualiza con el token de la pestaña de la API.
}
response = requests.post(url=f"{api_url}/v6/enricher", params=payload, data=data_json)
print(response)

# Transformar la respuesta de la solicitud a un dataframe de Pandas
enriched_data = pd.DataFrame(response.json(), 
                            columns=["transaction_id","date","desc","amt","pred_category","pred_category_name",
                            "pred_prob", "pred_category_parent","pred_category_parent_name"])

# Verificar los resultados
enriched_data
code

???+ note
Debes reemplazar los valores de TU_TOKEN_DE_ACCESO y api_url con la información correcta en el código anterior. Estos valores pueden encontrarse en la pestaña de la API de la plataforma de Dedomena.


<Admonition type="warning" isCollapsible={true} isOpen={true} title="warning">



</Admonition>

```text
Todos los valores deben pasarse como cadenas (strings).
Respuesta

200

json
[
  {
    "transaction_id": "txn-345",
    "pred_category": 164,
    "pred_category_name": "ATM, Cash",
    "pred_prob": 0.999999,
    "pred_category_parent": 161,
    "pred_category_parent_name": "Miscelaneous expenses",
  },
]

Descripción:

  • 'transaction_id': cadena con un ID único para cada transacción.

  • 'pred_category': variable numérica con el id de la categoría a la cual pertenece la transacción.

  • 'pred_category_name': cadena con el nombre de la categoría a la cual pertenece la transacción.

  • 'pred_prob': probabilidad de que la transacción pertenezca a la categoría predicha.

  • 'pred_category_parent': variable numérica con el id de la categoría padre a la cual pertenece la transacción.

  • 'pred_category_parent_name': cadena con el nombre de la categoría padre a la cual pertenece la transacción.

402

json
[
  {
  "detail": "Could not validate credentials"
  }
]

406

json
[
  {
    "detail": "The number of observations in the payload exceed the available quote"
  }
]

422

json
[
  {
    "detail": "Unprocessable Entity"
  }
]

429

json
[
  {
    "detail": "The maximum monthly number of calls or predictions for your account has been exceeded"
  }
]

/v2/merchant

POST/v2/merchant

Esta ruta/endpoint te permite extraer el comerciante (merchant) de la transacción bancaria.

Parámetros de Ruta:

  • region: selecciona la región de la(s) transacción(es). Opciones: Spain.

Cabeceras (Headers):

text
Authorization: Bearer TU_TOKEN_DE_ACCESO

Esta cabecera debe incluirse en cada solicitud para autenticar al usuario.

  • **Nombre de cabecera:**Authorization

  • **Formato de cabecera:**Bearer <tu_token>

Si se omite o es incorrecto, el servidor responderá con un error 401 Unauthorized.

Cuerpo de la Solicitud (Request Body):

Una lista de transacciones a clasificar. Cada transacción debe incluir los siguientes campos:

  • transaction_id: cadena con un ID único para cada transacción.

  • date: variable datetime con la fecha de cada transacción.

  • desc: cadena con la descripción/concepto de la transacción.

  • amt: variable numérica con el importe de la transacción.

Cuerpo de la Solicitud - Arreglo JSON
json
[
  {
    "transaction_id": "txn-123",
    "date": "2024-10-10 10:10:10",
    "desc": "Payments to Dedomena AI",
    "amt": "-999"
  }
]

???+ example "Ejemplo usando Python y requests"

py
import pandas as pd
import requests

```text
# Leer los datos
data_request = pd.read_csv(...) ## Actualiza con la ruta del conjunto de datos y los parámetros necesarios.

# Cambiar nombres y tipos
data_request["columns"] = ["transaction_id", "date", "desc", "amt"] # Opcional: cambiar nombres de columnas.
data_request["transaction_id"] = data_request["transaction_id"].astype(str) # Opcional: convertir columna "transaction_id" a tipo string/object
data_request["amt"] = data_request["amt"].astype(str) # Opcional: convertir columna "amt" a tipo string/object

# Convertir a JSON desde dataframe de Pandas
data_json = data_request.sample(100).to_json(orient='records') ## Aquí se toman 100 filas de muestra del conjunto original. Por favor, modifícalo según conveniencia.

# Definir el Payload y guardar la solicitud en un objeto response
payload = {'region':'SPAIN'} ## Actualiza con la región de la pestaña de la API.
headers = {
    "Authorization": f"Bearer {TU_TOKEN_DE_ACCESO}" ## Actualiza con el token de la pestaña de la API.
}
response = requests.post(url=f"{api_url}/v2/merchant", params=payload, data=data_json)
print(response)

# Transformar la respuesta de la solicitud a un dataframe de Pandas
merchant_data = pd.DataFrame(response.json(), columns=["transaction_id","merchant"])

# Verificar los resultados
merchant_data
code

???+ note
Debes reemplazar los valores de TU_TOKEN_DE_ACCESO y api_url con la información correcta en el código anterior. Estos valores pueden encontrarse en la pestaña de la API de la plataforma de Dedomena.

???+ warning
Todos los valores deben pasarse como cadenas (strings).

##### Respuesta

200

```json
[
  {
    "transaction_id": "txn-123",
    "merchant": "MERCADONA"
  }
]

Descripción:

  • 'transaction_id': cadena con un ID único para cada transacción.

  • 'merchant': cadena con el comerciante identificado en las transacciones.

402

json
[
  {
  "detail": "Could not validate credentials"
  }
]

406

json
[
  {
    "detail": "The number of observations in the payload exceed the available quote"
  }
]

422

json
[
  {
    "detail": "Unprocessable Entity"
  }
]

429

json
[
  {
    "detail": "The maximum monthly number of calls or predictions for your account has been exceeded"
  }
]

/metrics

POST/metrics

Esta ruta/endpoint te permite ver la cuota disponible para llamadas y predicciones de la API, tal como se ve en la pestaña de Métricas.

cabeceras (headers):

text
Authorization: Bearer TU_TOKEN_DE_ACCESO

Esta cabecera debe incluirse en cada solicitud para autenticar al usuario.

  • **Nombre de cabecera:**Authorization

  • **Formato de cabecera:**Bearer <tu_token>

Si se omite o es incorrecto, el servidor responderá con un error 401 Unauthorized.

image

Respuesta

200

json
{
  "MonthlyRequestsLimit": 10,
  "CurrentRequestsCount": 2,
  "MonthlyOutputsLimit": 10,
  "CurrentOutputsCount": 5
}

Descripción:

  • 'MonthlyRequestsLimit': Límite de solicitudes/llamadas disponibles según el plan contratado por mes.

  • 'CurrentRequestsCount': Número de solicitudes/llamadas consumidas en el período actual.

  • 'MonthlyOutputsLimit': Límite de resultados/predicciones disponibles según el plan contratado por mes.

  • 'CurrentOutputsCount': Número de resultados/predicciones consumidas en el período actual.

402

json
[
  {
  "detail": "Could not validate credentials"
  }
]

422

json
[
  {
    "detail": "Unprocessable Entity"
  }
]

Métricas de Modelo de IA

A continuación, puedes encontrar métricas calculadas comunes para medir el rendimiento de modelos de IA y ML. Se siguieron las mejores prácticas, como métodos hold-out utilizando conjuntos de datos de prueba y validación, para calcular las métricas resultantes.

AccuracyF1-ScoreRecall
0.960.980.96
Enriquecedor de Transacciones | Dedomena AI Documentation | Dedomena AI