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

# Detalle de una entrega

> La entrega con el `payload` exacto que se firmó y envió, y un registro por cada intento con la respuesta de tu endpoint. Es el único endpoint que devuelve el payload.



## OpenAPI

````yaml /openapi.json get /webhooks/{webhook_id}/deliveries/{delivery_id}
openapi: 3.1.0
info:
  description: API de timbrado CFDI 4.0 de Palenca.
  title: Ipsofactura API
  version: v1
servers:
  - description: Producción
    url: https://api.ipsofactura.com
  - description: Sandbox (pruebas, sin validez fiscal)
    url: https://sandbox.api.ipsofactura.com
security:
  - apiKeyAuth: []
tags:
  - description: Timbrado, complemento de pago, cancelación y descarga de CFDIs.
    name: CFDI
  - description: Alta y consulta de empresas emisoras.
    name: Empresas
  - description: Administración del Certificado de Sello Digital (CSD).
    name: Certificados
  - description: >-
      Suscripciones de webhooks: notificaciones de timbrado, cancelación y
      pagos.
    name: Webhooks
paths:
  /webhooks/{webhook_id}/deliveries/{delivery_id}:
    get:
      tags:
        - Webhooks
      summary: Detalle de una entrega
      description: >-
        La entrega con el `payload` exacto que se firmó y envió, y un registro
        por cada intento con la respuesta de tu endpoint. Es el único endpoint
        que devuelve el payload.
      operationId: delivery
      parameters:
        - in: path
          name: webhook_id
          required: true
          schema:
            format: uuid
            type: string
        - in: path
          name: delivery_id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/WebhookDeliveryDetailResponse'
          description: Entrega con su historial de intentos
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            API key faltante o inválida (AUTHENTICATION_REQUIRED /
            INVALID_API_KEY)
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            La cuenta está suspendida (ACCOUNT_SUSPENDED). Un recurso de otra
            cuenta NO responde 403: responde 404, igual que uno que no existe.
        '404':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/WebhookDeliveryDetailResponse'
          description: El webhook o la entrega no existen en la cuenta
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            Límite de requests por minuto excedido (RATE_LIMIT_EXCEEDED). Ver
            headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
            y Retry-After.
components:
  schemas:
    WebhookDeliveryDetailResponse:
      properties:
        attemptCount:
          format: int32
          type: integer
        attempts:
          items:
            $ref: '#/components/schemas/AttemptItem'
          type: array
        createdAt:
          type: string
        event:
          type: string
        id:
          format: uuid
          type: string
        lastError:
          type: string
        nextAttemptAt:
          type: string
        payload:
          type: string
        status:
          type: string
        webhookId:
          format: uuid
          type: string
      type: object
    ErrorResponse:
      properties:
        code:
          description: >-
            Código de error de ipsofactura. Estable y cerrado (catálogo
            ErrorCode), pero deliberadamente grueso: TODO rechazo de validación
            del SAT llega como VALIDATION_ERROR. Úsalo para decidir el flujo
            general (reintentar, autenticar de nuevo, corregir el comprobante).
          example: VALIDATION_ERROR
          type: string
        id:
          type: string
        idempotencyKey:
          type: string
        message:
          description: >-
            Descripción legible del error, en texto libre. NO la parsees: cuando
            el rechazo viene del SAT, este texto lo redacta el PAC, cambia entre
            proveedores y puede cambiar sin previo aviso. Para ramificar por
            regla del SAT usa sat_code; para ramificar por tipo de error usa
            code. El mensaje es para mostrarlo o registrarlo.
          example: >-
            CFDI40147: El RFC del receptor no se encuentra en la lista de
            contribuyentes inscritos no cancelados del SAT
          type: string
        retryAfter:
          format: int32
          type: integer
        sat_code:
          description: >-
            Código de validación del SAT (CFDIxxxxx) del rechazo. Presente SÓLO
            cuando el comprobante fue rechazado por el SAT a través de un PAC;
            ausente en errores propios de ipsofactura (validación local,
            autenticación, rate limit, servicio no disponible). Es específico
            donde `code` es genérico: `code` te dice que hubo un rechazo de
            validación, `sat_code` te dice cuál regla se incumplió. También se
            omite si el PAC no devolvió ningún código: nunca se inventa uno.
          example: CFDI40147
          type: string
    AttemptItem:
      properties:
        attemptNumber:
          format: int32
          type: integer
        attemptedAt:
          type: string
        id:
          format: uuid
          type: string
        responseBody:
          type: string
        responseTruncated:
          type: boolean
        statusCode:
          format: int32
          type: integer
        succeeded:
          type: boolean
      type: object
  securitySchemes:
    apiKeyAuth:
      description: API key emitida por Ipsofactura, enviada en el header x-api.
      in: header
      name: x-api
      type: apiKey

````