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

# Validate 3DS payer authentication

> Validates 3D Secure (3DS) payer authentication after the customer has completed the authentication challenge. This endpoint must be called when a payment order is in PAYER_AUTHENTICATION_CHALLENGE_REQUIRED status. Upon successful validation, the payment order status will typically transition to AUTHORIZED.



## OpenAPI

````yaml /api-reference/orchestrator-openapi.json post /v2/payment-orders/{id}/payer-authentication/validate
openapi: 3.0.0
info:
  title: Payment Orchestrator API
  description: API documentation for the Payment Orchestrator service
  version: 1.0.0
servers:
  - url: https://api.sandbox.cheqpay.mx/pos
    description: Sandbox environment
  - url: https://prod.cheqpay.mx/pos
    description: Production environment
security:
  - ApiKeyAuth: []
    MerchantIdAuth: []
tags:
  - name: Customer
    description: Customer management endpoints (v1)
  - name: Customer V2
    description: >-
      Customer management endpoints (v2) - merchant-scoped, no external ID
      required
  - name: Payment Order
    description: Payment order management endpoints
  - name: Checkout
    description: Payment checkout endpoints
  - name: Payment Method
    description: Payment method management endpoints
  - name: Subscription Plan
    description: Subscription plan management endpoints for recurring payments
  - name: Subscription
    description: Subscription management endpoints for recurring billing
  - name: Subscription Invoice
    description: Subscription invoice management endpoints
paths:
  /v2/payment-orders/{id}/payer-authentication/validate:
    post:
      tags:
        - Payment Order
      summary: Validate 3DS payer authentication
      description: >-
        Validates 3D Secure (3DS) payer authentication after the customer has
        completed the authentication challenge. This endpoint must be called
        when a payment order is in PAYER_AUTHENTICATION_CHALLENGE_REQUIRED
        status. Upon successful validation, the payment order status will
        typically transition to AUTHORIZED.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Payment order ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - authenticationTransactionId
              properties:
                authenticationTransactionId:
                  type: string
                  minLength: 1
                  description: >-
                    The authentication transaction ID returned from the 3DS
                    challenge
                  example: auth-txn-123456789
              example:
                authenticationTransactionId: auth-txn-123456789
      responses:
        '200':
          description: Payer authentication validated successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - id
                  - status
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Payment order ID
                    example: 123e4567-e89b-12d3-a456-426614174000
                  externalId:
                    type: string
                    description: External payment order ID
                    example: ORDER-123
                  status:
                    type: string
                    enum:
                      - PENDING
                      - PROCESSING
                      - REFERENCE_GENERATED
                      - AUTHORIZED
                      - PARTIALLY_AUTHORIZED
                      - ACTION_REQUIRED
                      - COMPLETED
                      - PARTIALLY_PAID
                      - CANCELLATION_REQUESTED
                      - CANCELLED
                      - FAILED
                      - REFUND_PROCESSING
                      - PARTIALLY_REFUNDED
                      - REFUNDED
                    description: >-
                      Payment order status (typically AUTHORIZED after
                      successful validation)
                    example: AUTHORIZED
                  amount:
                    type: number
                    description: Payment amount
                    example: 250
                  currency:
                    type: string
                    description: Currency code
                    example: MXN
                  customer:
                    type: object
                    description: Customer details
                example:
                  id: 123e4567-e89b-12d3-a456-426614174000
                  externalId: ORDER-123
                  status: AUTHORIZED
                  amount: 250
                  currency: MXN
        '400':
          description: Validation failed or payment order in invalid status
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ValidationError'
                  - type: object
                    properties:
                      message:
                        type: string
                        example: x-merchant-id header is required
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '404':
          description: Payment order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalError'
components:
  schemas:
    ValidationError:
      type: object
      description: Validation error response
      required:
        - message
        - errors
      properties:
        message:
          type: string
          description: Error message
          example: Validation failed
        errors:
          type: array
          description: List of validation errors
          items:
            type: object
            properties:
              field:
                type: string
                description: Field that failed validation
                example: name
              message:
                type: string
                description: Validation error message
                example: Required
      example:
        message: Validation failed
        errors:
          - field: name
            message: Required
    UnauthorizedError:
      type: object
      description: Unauthorized error response
      properties:
        message:
          type: string
          description: Error message
          example: Invalid api key
      example:
        message: Invalid api key
    NotFoundError:
      type: object
      description: Not found error response
      properties:
        message:
          type: string
          description: Error message
          example: Merchant not found
      example:
        message: Merchant not found
    InternalError:
      type: object
      description: Error response
      properties:
        message:
          type: string
          description: Error message
          example: Error message
      example:
        message: Error message
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication (required)
    MerchantIdAuth:
      type: apiKey
      in: header
      name: x-merchant-id
      description: Merchant ID for identifying the merchant (required)

````