> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getjusto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificar transacción

> Endpoint para verificar la disponibilidad de fondos y validar una transacción antes de procesarla

Este endpoint permite a Justo verificar si una transacción puede ser procesada. Durante esta etapa se realizan validaciones internas como disponibilidad de fondos, autenticidad de la cuenta, límite diario, etc.

Justo llamará a este endpoint antes de procesar el pago para asegurar que la transacción puede ser completada exitosamente.

## Cuerpo de la solicitud

<RequestField name="amount" type="number" required>
  Monto de la transacción a verificar.
</RequestField>

<RequestField name="currency" type="string" required>
  Moneda de la transacción (ej: "CLP", "USD", "MXN").
</RequestField>

<RequestField name="description" type="string" required>
  Descripción del cargo que se realizará al usuario.
</RequestField>

<RequestField name="transactionId" type="string" required>
  Identificador único de la transacción generado por Justo.
</RequestField>

<RequestField name="orderId" type="string" required>
  Identificador del pedido asociado a esta transacción.
</RequestField>

<RequestField name="externalUserId" type="string" required>
  Identificador del usuario en la aplicación contenedora (el mismo usado en el onboarding).
</RequestField>

## Ejemplo de solicitud

```json theme={null}
{
  "amount": 15000,
  "currency": "CLP",
  "description": "Pedido #12345 - Restaurante XYZ",
  "transactionId": "txn_abc123def456",
  "orderId": "order_xyz789",
  "externalUserId": "user_12345"
}
```

## Respuesta exitosa

<ResponseField name="transactionCode" type="string" required>
  Código de transacción generado por la aplicación contenedora. Este código será usado posteriormente para verificar el estado de la transacción o para procesarla.
</ResponseField>

<ResponseField name="status" type="string" required>
  Estado de la verificación. Valores posibles: `approved`, `rejected`, `pending`.
</ResponseField>

<ResponseField name="message" type="string">
  Mensaje descriptivo sobre el resultado de la verificación (opcional).
</ResponseField>

## Ejemplo de respuesta exitosa

```json theme={null}
{
  "transactionCode": "app_txn_987654",
  "status": "approved",
  "message": "Transacción verificada exitosamente"
}
```

## Respuesta de rechazo

Si la verificación falla (por ejemplo, fondos insuficientes), se debe retornar:

```json theme={null}
{
  "status": "rejected",
  "message": "Fondos insuficientes"
}
```

## Códigos de estado

<StatusCode status="200">
  La verificación fue procesada. Revisar el campo `status` en el cuerpo de la respuesta para conocer el resultado.
</StatusCode>

<StatusCode status="400">
  Error de validación. Los datos enviados no son válidos (ej: monto inválido, moneda no soportada).
</StatusCode>

<StatusCode status="401">
  No autorizado. El token de autenticación es inválido o ha expirado.
</StatusCode>

<StatusCode status="500">
  Error interno del servidor de la aplicación contenedora.
</StatusCode>

## Notas importantes

<Info>
  Este endpoint debe validar internamente aspectos como:

  * Disponibilidad de fondos en la cuenta del usuario
  * Autenticidad de la cuenta
  * Límites diarios de transacciones
  * Restricciones de la cuenta
  * Cualquier otra validación requerida por la aplicación contenedora
</Info>

<Warning>
  El `transactionCode` retornado debe ser único y permitir identificar la transacción en pasos posteriores (procesamiento o verificación de estado).
</Warning>

<Info>
  En caso de requerir más datos para la verificación, esto puede configurarse coordinando con el equipo técnico de Justo.
</Info>


## OpenAPI

````yaml post /payments/verify
openapi: 3.0.0
info:
  title: Embedded Ordering API
  version: 1.0.0
  description: >
    **Propuesta de API que debe ser implementada por la aplicación contenedora**


    Este documento describe una propuesta de los endpoints que las marcas
    (aplicaciones contenedoras) 

    deben implementar para que Justo pueda operar e integrar el marketplace
    dentro de sus aplicaciones.


    Los endpoints, esquemas y especificaciones aquí descritos son una propuesta
    y pueden adaptarse 

    a los requerimientos específicos de cada sistema, siempre y cuando se
    mantenga la funcionalidad 

    necesaria para que Justo pueda realizar las operaciones requeridas.
servers:
  - url: https://your-app-domain.com
    description: >-
      Servidor de la aplicación contenedora (debe ser configurado por cada
      implementación)
security: []
tags:
  - name: auth
    description: Endpoints de autenticación y onboarding
  - name: payments
    description: Endpoints de pagos
  - name: notifications
    description: Webhooks de notificaciones
paths:
  /payments/verify:
    post:
      tags:
        - payments
      summary: Verificar transacción
      description: >
        **Propuesta de endpoint** para verificar la disponibilidad de fondos y
        validar una transacción antes de procesarla.


        Este endpoint debe ser implementado por la aplicación contenedora para
        que Justo pueda verificar 

        si una transacción puede ser procesada antes de ejecutarla.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyPaymentRequest'
      responses:
        '200':
          description: La verificación fue procesada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyPaymentResponse'
        '400':
          description: Error de validación. Los datos enviados no son válidos
        '401':
          description: No autorizado. El token de autenticación es inválido o ha expirado
        '500':
          description: Error interno del servidor de la aplicación contenedora
      security:
        - bearerAuth: []
components:
  schemas:
    VerifyPaymentRequest:
      type: object
      description: >
        **Propuesta de esquema de solicitud.** Estructura propuesta para la
        verificación de pagos que 

        Justo enviará a la aplicación contenedora.
      required:
        - amount
        - currency
        - description
        - transactionId
        - orderId
        - externalUserId
      properties:
        amount:
          type: number
          description: Monto de la transacción a verificar
          example: 15000
        currency:
          type: string
          description: Moneda de la transacción
          example: CLP
        description:
          type: string
          description: Descripción del cargo que se realizará al usuario
          example: 'Pedido #12345 - Restaurante XYZ'
        transactionId:
          type: string
          description: Identificador único de la transacción generado por Justo
          example: txn_abc123def456
        orderId:
          type: string
          description: Identificador del pedido asociado a esta transacción
          example: order_xyz789
        externalUserId:
          type: string
          description: Identificador del usuario en la aplicación contenedora
          example: user_12345
    VerifyPaymentResponse:
      type: object
      description: >
        **Propuesta de esquema de respuesta.** Estructura propuesta que la
        aplicación contenedora debe 

        retornar a Justo después de verificar una transacción.
      required:
        - transactionCode
        - status
      properties:
        transactionCode:
          type: string
          description: Código de transacción generado por la aplicación contenedora
          example: app_txn_987654
        status:
          type: string
          enum:
            - approved
            - rejected
            - pending
          description: Estado de la verificación
          example: approved
        message:
          type: string
          description: Mensaje descriptivo sobre el resultado de la verificación
          example: Transacción verificada exitosamente
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        **Propuesta de esquema de autenticación.** Token de autenticación que
        debe ser coordinado entre 

        Justo y la aplicación contenedora. El mecanismo específico debe
        acordarse entre ambos equipos técnicos.

````