Crear transacción
Referencia API
Crear transacción
Crea una nueva transacción financiera para monitoreo y análisis — en la API de monitoreo transaccional gu1 para fraude y AML, con ejemplos para create.
POST
Crear transacción
Documentation Index
Fetch the complete documentation index at: https://docs.gu1.ai/llms.txt
Use this file to discover all available pages before exploring further.
Resumen
Crea una nueva transacción. ConexecuteRules: true (por defecto), se ejecuta el motor de reglas y la respuesta incluye rulesExecutionSummary en la raíz cuando se ejecutan las reglas.
Endpoint
Autenticación
Requiere una API key válida en el header Authorization:Cuerpo de la petición
Campos requeridos
Tu identificador único para esta transacción en tu sistema
Tipo de transacción. Opciones:
PAYMENT- PagoTRANSFER- TransferenciaWITHDRAWAL- RetiroDEPOSIT- DepósitoREFUND- ReembolsoCHARGEBACK- ContracargoREVERSAL- ReversiónFEE- ComisiónADJUSTMENT- AjusteOTHER- Otro
Monto (debe ser cero o positivo)
Código de moneda (3-4 caracteres, ej. “USD”, “EUR”, “BRL”)
Campos opcionales
Estado. Opciones:
CREATED- Creada (por defecto)PROCESSING- En procesoSUSPENDED- SuspendidaSENT- EnviadaEXPIRED- ExpiradaDECLINED- RechazadaREFUNDED- ReembolsadaSUCCESSFUL- Exitosa
Método de pago. Opciones:
CARD, ACH, PIX, TED, BOLETO, WALLET, SWIFT, IBAN, CBU, CVU, DEBIN, GENERIC_BANK_ACCOUNT, MPESA, UPI, CHECK, ECHECK, QR_CODE, ONLINE_PAYMENT, WITHDRAWAL_ORDERDescripción o notas
Categoría de la transacción
Fecha/hora ISO 8601 del hecho (por defecto: momento de creación). Se guarda en UTC. Usá
Z u offset ±HH:MM en el string, o datetime sin offset junto con timeZone (hora local en ese huso).Si se ejecuta el motor de reglas para esta transacción
Con
false (por defecto): si enviás originExternalId / destinationExternalId (o tax en raíz) y no hay entidad, la transacción se crea igual (sin vínculo), igual que antes.Con true: solo se valida un extremo (origen o destino) si enviaste al menos un identificador para ese extremo (originEntityId, originExternalId o originTaxId; lo mismo para destino). Cada campo enviado debe resolver a una persona/empresa existente en tu organización; si no, la API responde 400 con INVALID_ENTITY_REFERENCES y no crea la transacción. Si no enviás ningún identificador de origen (o de destino), ese extremo no se valida.Matrices de riesgo (opcional)
Compatible con clientes legacy: un UUID o un array de UUIDs de matrices de la organización. Si se envía una lista no vacía, solo se evalúan reglas activas asociadas a esas matrices (sin mezclar con reglas “sueltas” solo por triggers). Omití
riskMatrixId y riskMatrixIds para conservar el comportamiento histórico basado en triggers.Forma preferida para varias matrices: lista ordenada de UUIDs. Tiene precedencia sobre
riskMatrixId cuando viene informada y no vacía.Origen (entidad)
Cómo se vincula el origen en gu1 (en orden; se aplica el primer criterio que resuelva):
(En
- ID de entidad — si enviás
originEntityId, se usa esa entidad (debe existir en tu organización). - ID externo — si no enviaste
originEntityIdpero síoriginExternalIdy existe una persona/empresa con el mismoexternalId, se vincula automáticamente. - Tercer fallback: tax / documento (root) — si aún no hay vinculación, pero enviás en la raíz de la transacción
originTaxId, el API busca una persona/empresa cuyotaxIdcoincida tras normalizar (solo letras y números, sin puntuación ni espacios; la comparación ignora mayúsculas).
originEntityId y, si no los enviaste, se pueden completar originName y originCountry desde la entidad.Si no hay coincidencia, la transacción se crea igual (comportamiento por defecto); quedan guardados los campos que enviaste, sin enlace a entidad. Con validateExistingEntity: true, si enviaste algún identificador de origen y no hay entidad, la API responde 400 y no crea la transacción.(En
originDetails también podés enviar un tax para el grafo, pero eso no vincula entidades: para vincular por documento usá originTaxId a nivel raíz.)UUID de la entidad origen en gu1
Tu ID externo de la entidad origen
CUIT o identificador fiscal / documento del origen a nivel raíz (no dentro de
originDetails). Es el tercer criterio, después de originEntityId y originExternalId. Se compara con el taxId de entidades (persona/empresa) con la misma normalización alfanumérica. Si hay match, se rellenan enlace, nombre y país. Opcional, máx. 50 caracteres.Nombre del origen
Código de país ISO 2 del origen (ej. “US”, “BR”, “AR”)
Detalles del origen (dispositivo, cuenta, etc.). Ver Esquema de payment details para estructuras sugeridas. Campos extra permitidos. Si el origen no es una entidad en gu1, puedes enviar opcionalmente
taxId y/o accountNumber en originDetails o originDetails.paymentDetails para mejorar la visualización en grafos de red (nodos “pseudo” agrupados por el mismo identificador).Destino (entidad)
UUID de la entidad destino en gu1
Tu ID externo de la entidad destino
CUIT o documento del destino a nivel raíz; tercer criterio de vinculación, después de
destinationEntityId y destinationExternalId. Misma lógica que originTaxId (normalización, enriquecimiento de nombre y país). Opcional, máx. 50 caracteres.Nombre del destino
Código de país ISO 2 del destino
Detalles del destino (comercio, cuenta, etc.). Campos opcionales:
mcc, merchantId, merchantName, deviceId, accountNumber, bankCode, bankName, etc. Campos extra permitidos. Si el destino no es una entidad en gu1, puedes enviar opcionalmente taxId y/o accountNumber en destinationDetails o destinationDetails.paymentDetails para mejorar la visualización en grafos de red (nodos “pseudo” agrupados).Ubicación y dispositivo
Ubicación:
country, city, region, address, latitude, longitude, postalCode, etc.Dispositivo:
deviceId, platform, osName, model, ipAddress, isVpn, isTor, etc.Canal (máx. 50 caracteres):
mobile_app, web_browser, pos_terminal, api, atm, etc.Motivo del resultado (opcional). Ver Enum de motivos. Si se omite se usa
WITHOUT_REASON.Zona horaria IANA opcional (independiente de
operationalHours de la entidad). Valores de transaction_time_zone. Si se omite, queda null.Normalización de transactedAt: si transactedAt trae Z (como exige el validador de este endpoint), se guarda ese instante en UTC; timeZone es metadata opcional y no se usa para parsear. Con datetime local + timeZone (herramientas internas/lote), la API puede convertir hora local a UTC. Las integraciones que no envían timeZone siguen igual que antes. Las reglas de horario operativo usan el instante guardado + operationalHours.timezone de la entidad, no transaction.timeZone.Lista completa: Enum zona horaria.Metadatos adicionales:
tags, purpose, enhanced_due_diligence, block_reason, compliance_alert, etc. Campos custom permitidos.Respuesta
La transacción creada (objeto). Incluye:
id, externalId, organizationId, type, amount (string), currency, status, riskScore (string), flagged, channel, reason, timeZone (string | null), originDetails, destinationDetails, locationDetails, deviceDetails, processingTimeMs, processedAt, transactedAt, createdAt, updatedAt.Solo si executeRules es true y el motor de reglas se ejecutó. No se incluye cuando
executeRules es false. Incluye rulesHit, rulesNoHit, actionsExecuted (opcional), totalScore, scoreResult, riskMatrixName, executionTimeMs, trigger, matchedRulesCount. Ver Resumen de Ejecución de Reglas para la estructura completa y un ejemplo con todos los campos.Ejemplo básico
Ejemplo de respuesta
Errores
400 - Datos inválidos
409 - Transacción duplicada
429 - Límite de tasa
Próximos pasos
- Obtener transacción - Por ID o external ID
- Crear transacciones en lote - Carga masiva
- Cambiar estado de transacción - Cambiar estado
- Monitoreo de transacciones - Detección de fraude