Resumen
Crea una nueva transacción. Con executeRules: true (por defecto), se ejecuta el motor de reglas y la respuesta incluye rulesResult y rulesExecutionSummary.
Endpoint
POST http://api.gu1.ai/transactions
Autenticación
Requiere una API key válida en el header Authorization:
Authorization: Bearer YOUR_API_KEY
Cuerpo de la petición
Campos requeridos
Tu identificador único para esta transacción en tu sistema
Tipo de transacción. Opciones:
PAYMENT - Pago
TRANSFER - Transferencia
WITHDRAWAL - Retiro
DEPOSIT - Depósito
REFUND - Reembolso
CHARGEBACK - Contracargo
REVERSAL - Reversión
FEE - Comisión
ADJUSTMENT - Ajuste
OTHER - 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 proceso
SUSPENDED - Suspendida
SENT - Enviada
EXPIRED - Expirada
DECLINED - Rechazada
REFUNDED - Reembolsada
SUCCESSFUL - 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_ORDER
Categoría de la transacción
Fecha/hora ISO 8601 del hecho (por defecto: momento de creación)
Si se ejecuta el motor de reglas para esta transacción
Origen (entidad)
UUID de la entidad origen en gu1
Tu ID externo de la entidad 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
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.
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, originDetails, destinationDetails, locationDetails, deviceDetails, processingTimeMs, processedAt, transactedAt, createdAt, updatedAt.
Solo si executeRules fue true. Resultado de la ejecución de reglas:
- success (boolean) - Si la ejecución fue exitosa
- executed (boolean) - Si el motor se ejecutó
- result (object, opcional) - Resultado completo del motor (riskScore, decision, alerts, etc.)
- rulesExecutionSummary (object) - Resumen detallado; también duplicado en la raíz
- rulesTriggered (number) - Cantidad de reglas que hicieron match
- executionTimeMs (number) - Tiempo de ejecución en milisegundos
- auditId (string, opcional) - ID del audit de matriz de riesgo
- isNewAudit (boolean, opcional) - Si se creó un nuevo audit
Solo si executeRules es true y el motor de reglas se ejecutó. Mismo objeto que rulesResult.rulesExecutionSummary. 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
curl -X POST http://api.gu1.ai/transactions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "txn_12345",
"type": "PAYMENT",
"amount": 150.50,
"currency": "USD",
"originExternalId": "customer_001",
"destinationExternalId": "merchant_456",
"description": "Compra online"
}'
Ejemplo de respuesta
{
"transaction": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"externalId": "txn_67890",
"organizationId": "8e2f89ab-c216-4eb4-90eb-ca5d44499aaa",
"type": "TRANSFER",
"status": "CREATED",
"amount": "1000.00",
"currency": "BRL",
"amountInUsd": "1000.00",
"paymentMethod": "PIX",
"riskScore": "15",
"flagged": false,
"channel": "mobile_app",
"reason": "WITHOUT_REASON",
"originDetails": {},
"destinationDetails": {},
"processingTimeMs": "120",
"processedAt": "2024-10-03T14:30:00.000Z",
"createdAt": "2024-10-03T14:30:00.000Z",
"updatedAt": "2024-10-03T14:30:00.000Z"
},
"rulesResult": {
"success": true,
"executed": true,
"rulesTriggered": 1,
"executionTimeMs": 162,
"auditId": "52fa709f-88fe-473a-bc58-6efb5b0307f4",
"isNewAudit": true,
"rulesExecutionSummary": {
"rulesHit": [],
"rulesNoHit": [],
"actionsExecuted": {},
"totalScore": 15
}
},
"rulesExecutionSummary": {
"rulesHit": [],
"rulesNoHit": [],
"actionsExecuted": {},
"totalScore": 15
}
}
Errores
400 - Datos inválidos
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": ["Amount must be zero or a positive number", "Currency must be at least 3 characters"]
}
}
409 - Transacción duplicada
{
"success": false,
"error": {
"code": "DUPLICATE_TRANSACTION",
"message": "Transaction with this external_id already exists",
"details": { "field": "external_id", "value": "txn_12345" }
}
}
429 - Límite de tasa
{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"retryAfter": 3600
}
Próximos pasos