> ## 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.

# Obtener transacción

> Consulta una transacción por ID interno o por externalId — en la API de monitoreo transaccional gu1 para fraude y AML, con ejemplos para get.

## Resumen

Devuelve una transacción de tu organización. La respuesta usa objetos anidados **`origin`** y **`destination`** (con datos de entidad resueltos cuando existen). Esto difiere de [Crear transacción](/es/api-reference/transactions/create), donde el cuerpo usa `originDetails` / `destinationDetails` más planos.

En la lectura **no** se vuelve a ejecutar el motor de reglas. Por defecto la respuesta **no** incluye `rulesExecutionSummary`. Enviá **`includeRulesSummary=full`** para adjuntar el último resumen persistido en el objeto **`persisted`** (misma forma que [Resumen de ejecución de reglas](/es/api-reference/rules-execution-summary)).

## Endpoints

| Método              | Endpoint                                  | Cuándo usarlo                           |
| ------------------- | ----------------------------------------- | --------------------------------------- |
| **Por ID**          | `GET /transactions/{id}`                  | Tienes el UUID de la transacción en gu1 |
| **Por external ID** | `GET /transactions/external/{externalId}` | Solo tienes tu `externalId` del alta    |

Ambos devuelven la misma forma: `{ "transaction": { ... }, "persisted": { ... }, "baseCurrency": "..." }`.

## Parámetros de consulta

<ParamField query="includeRulesSummary" type="string">
  Opcional. Si se omite, el comportamiento es el de siempre (sin resumen de reglas en la lectura).

  * **`full`** — Carga la fila **más reciente** de `risk_analysis_audits` para esta transacción y agrega **`persisted.rulesExecutionSummary`** (`rulesHit`, `rulesNoHit`, `actionsExecuted`, scores, etc.). **No** re-ejecuta reglas. Pensado para detalle de una sola transacción / debugging; omitilo en polling masivo.
</ParamField>

### Por ID

```
GET http://api.gu1.ai/transactions/{id}
```

<ParamField path="id" type="string" required>
  UUID de la transacción en gu1 (el mismo que `transaction.id` al crear).
</ParamField>

### Por external ID

```
GET http://api.gu1.ai/transactions/external/{externalId}
```

<ParamField path="externalId" type="string" required>
  El `externalId` que enviaste al crear la transacción.
</ParamField>

## Autenticación

Requiere API key válida y permiso de lectura de transacciones (`transactions:read`):

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

La transacción debe pertenecer a la organización de la clave; si no, la API responde **404**.

## Respuesta (200 OK)

<ResponseField name="transaction" type="object">
  Registro completo de la transacción.

  * **id** (string) — UUID en gu1
  * **externalId** (string) — tu identificador externo
  * **type**, **status** — enums (misma semántica que en crear)
  * **amount** (number), **currency** (string)
  * **amountInUsd** (number | null)
  * **currenciesExchange** (array) — entradas `{ currency, exchangeRate, value }`
  * **paymentMethod** (string | null)
  * **origin** (object) — `entityId`, `externalId`, `name`, `country`, `type` (`person` | `company` | null), `taxId`, `riskScore`, `details` (objeto; incluye lo que guardaste, p. ej. payment details)
  * **destination** (object) — misma estructura que **origin**
  * **riskScore** (number | null)
  * **lastRiskEvaluationAt** (string | null) — ISO del último audit de análisis de riesgo (**presente en GET por UUID**; no se incluye al consultar por external ID)
  * **riskFactors** (array)
  * **activeMatchesCount**, **shadowMatchesCount** (number, opcional)
  * **hitRuleExternalIds** (string\[], opcional)
  * **flagged** (boolean)
  * **locationDetails**, **deviceDetails** (object)
  * **channel** (string | null), **timeZone** (string | null) — zona IANA si se envió al crear
  * **description**, **category**, **metadata** (object)
  * **transactedAt**, **createdAt**, **updatedAt** (ISO)
  * **exchangeRate**, **rateSource**, **rateTimestamp**, **convertedAt** — metadatos de conversión si aplica
</ResponseField>

<ResponseField name="persisted" type="object">
  Snapshot plano en camelCase de la fila en `transactions` (mismos nombres que create / input del motor): montos, contrapartes, `metadata`, `riskFactors`, etc.

  Con **`includeRulesSummary=full`**, puede incluir también:

  * **rulesExecutionSummary** (object) — última corrida persistida de reglas para esta transacción (no es re-evaluación en vivo). Se omite si no hay auditoría o si no se envía el query param.
</ResponseField>

<ResponseField name="baseCurrency" type="string">
  Moneda base de la organización (código ISO, p. ej. `USD`).
</ResponseField>

### Ejemplo (por ID, con resumen de reglas)

```bash theme={null}
curl -s 'http://api.gu1.ai/transactions/550e8400-e29b-41d4-a716-446655440000?includeRulesSummary=full' \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json theme={null}
{
  "transaction": { "...": "..." },
  "persisted": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "externalId": "txn_12345",
    "amount": 150.5,
    "currency": "USD",
    "riskFactors": {},
    "metadata": {},
    "rulesExecutionSummary": {
      "rulesHit": [],
      "rulesNoHit": [],
      "totalScore": 0,
      "actionsExecuted": {}
    }
  },
  "baseCurrency": "USD"
}
```

### Ejemplo (por ID, default)

```bash theme={null}
curl -s http://api.gu1.ai/transactions/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json theme={null}
{
  "transaction": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "externalId": "txn_12345",
    "type": "PAYMENT",
    "status": "CREATED",
    "amount": 150.5,
    "currency": "USD",
    "amountInUsd": 150.5,
    "currenciesExchange": [],
    "paymentMethod": "CARD",
    "origin": {
      "entityId": "…",
      "externalId": "customer_001",
      "name": "Jane Doe",
      "country": "US",
      "type": "person",
      "taxId": null,
      "riskScore": 12.5,
      "details": {}
    },
    "destination": {
      "entityId": "…",
      "externalId": "merchant_456",
      "name": "Acme Store",
      "country": "US",
      "type": "company",
      "taxId": null,
      "riskScore": 8,
      "details": {}
    },
    "riskScore": 15,
    "lastRiskEvaluationAt": "2025-01-15T10:00:00.000Z",
    "riskFactors": [],
    "flagged": false,
    "locationDetails": {},
    "deviceDetails": {},
    "channel": "web_browser",
    "description": "Compra online",
    "category": "retail",
    "metadata": {},
    "transactedAt": "2025-01-15T09:55:00.000Z",
    "createdAt": "2025-01-15T09:55:01.000Z",
    "updatedAt": "2025-01-15T09:55:01.000Z",
    "exchangeRate": null,
    "rateSource": null,
    "rateTimestamp": null,
    "convertedAt": null
  },
  "baseCurrency": "USD"
}
```

## Errores

### 400 — Query inválido

```json theme={null}
{
  "error": "Invalid query parameters",
  "details": []
}
```

Cuando `includeRulesSummary` no es `full`.

### 404 — No encontrada

```json theme={null}
{
  "error": "Transaction not found"
}
```

### 500 — Error del servidor

```json theme={null}
{
  "error": "Failed to fetch transaction",
  "details": "…"
}
```

## Ver también

* [Crear transacción](/es/api-reference/transactions/create)
* [Resumen de ejecución de reglas](/es/api-reference/rules-execution-summary)
* [Crear transacciones en lote](/es/api-reference/transactions/create-batch)
* [Cambiar estado de transacción](/es/use-cases/transaction-monitoring/change-status-api)
