A
Datos estructurados
Si tu sistema ya leyó el ticket y cuenta con los datos requeridos, crea directamente la solicitud.
POST /api/v1/invoice-requests
Incluye una Idempotency-Key única para esa intención.
CFDIX API · v1
Integra solicitudes de facturación de forma asíncrona. Envía datos estructurados, inicia desde una imagen privada o aporta lo que faltaba después. Cada solicitud conserva su rastreo y sus límites.
01 / INTEGRA
Elige el origen de la información que ya tienes. Los tres caminos responden rápido y continúan fuera de la petición HTTP.
A
Si tu sistema ya leyó el ticket y cuenta con los datos requeridos, crea directamente la solicitud.
POST /api/v1/invoice-requests
Incluye una Idempotency-Key única para esa intención.
B
Carga una imagen privada y después crea la solicitud con su ticket_image_id. La carga no ejecuta OCR dentro de esa petición.
POST /api/v1/ticket-images
POST /api/v1/invoice-requests
C
Completa una solicitud iniciada con imagen sin reemplazar su historial. La aportación queda registrada de forma append-only.
POST /api/v1/invoice-requests/{requestId}/data-contributions
02 / CONSULTA
Autentica con una API key de la aplicación y conserva la llave fuera de tu código fuente. Nunca la pegues en esta página, en una URL ni en el navegador de un usuario final.
Authorization: Bearer ${CFDIX_API_KEY}
Idempotency-Key: compra-2026-09-10-001
X-Correlation-ID: integracion-001
X-Correlation-ID.GET /api/v1/invoice-requests/{requestId}.retryable.03 / SIN SORPRESAS
04 / ESTADOS
El contrato OpenAPI define estos valores para status. Programa sobre ellos; no infieras resultado a partir de un mensaje del portal.
05 / REFERENCIA
Esta lista se construye desde el OpenAPI versionado del repositorio. Descárgalo para generar o validar tu cliente.
POST/api/v1/ticket-images
Registra evidencia privada temporal e idempotente. No crea un ticket controlado ni ejecuta OCR dentro de la petición HTTP.
Scopes: invoice_requests:create
Idempotency-Key header · requeridoX-Correlation-ID header200 Replay idempotente.201 Imagen privada almacenada.400 Solicitud mal formada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.409 Conflicto de idempotencia o transición de estado.422 Datos estructurados semánticamente inválidos.429 Límite temporal excedido.POST/api/v1/invoice-requests
Crea de forma idempotente una solicitud para procesamiento asíncrono. La respuesta no implica emisión ni timbrado.
Scopes: invoice_requests:create
Idempotency-Key header · requeridoX-Correlation-ID header200 Replay idempotente: se devuelve la solicitud existente.202 Solicitud aceptada.400 Solicitud mal formada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.409 Conflicto de idempotencia o transición de estado.422 Datos estructurados semánticamente inválidos.429 Límite temporal excedido.500 Error interno seguro, sin stack, SQL ni rutas.GET/api/v1/invoice-requests
Scopes: invoice_requests:read
X-Correlation-ID headercursor querypage_size querystatus query200 Página de solicitudes.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.429 Límite temporal excedido.POST/api/v1/invoice-requests/{requestId}/data-contributions
Registra una aportación append-only e idempotente. Cuando el agregado queda completo crea snapshots inmutables y encola la validación.
Scopes: invoice_requests:create
requestId path · requeridoIdempotency-Key header · requeridoX-Correlation-ID header200 Aportación parcial o replay idempotente.202 Datos completos; validación asíncrona encolada.400 Solicitud mal formada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.409 Conflicto de idempotencia o transición de estado.422 Datos estructurados semánticamente inválidos.429 Límite temporal excedido.GET/api/v1/invoice-requests/{requestId}
Scopes: invoice_requests:read
requestId path · requeridoX-Correlation-ID header200 Solicitud encontrada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.429 Límite temporal excedido.POST/api/v1/invoice-requests/{requestId}/cancel
Scopes: invoice_requests:cancel
requestId path · requeridoX-Correlation-ID header200 Solicitud cancelada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.409 Conflicto de idempotencia o transición de estado.429 Límite temporal excedido.POST/api/v1/invoice-requests/{requestId}/retry
Scopes: invoice_requests:retry
requestId path · requeridoX-Correlation-ID header202 Reintento aceptado.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.409 Conflicto de idempotencia o transición de estado.429 Límite temporal excedido.GET/api/v1/invoice-requests/{requestId}/artifacts
Scopes: artifacts:read
requestId path · requeridoX-Correlation-ID header200 Artefactos autorizados.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.GET/api/v1/artifacts/{artifactId}/download
Scopes: artifacts:read
artifactId path · requeridoX-Correlation-ID header200 Contenido binario original.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.410 El artefacto expiró o fue retirado.GET/api/v1/fiscal-profiles
Scopes: fiscal_profiles:read
X-Correlation-ID headercursor querypage_size query200 Página de perfiles.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.POST/api/v1/fiscal-profiles
Scopes: fiscal_profiles:write
X-Correlation-ID header201 Perfil fiscal creado.400 Solicitud mal formada.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.409 Conflicto de idempotencia o transición de estado.422 Datos estructurados semánticamente inválidos.GET/api/v1/fiscal-profiles/{profile_id}
Scopes: fiscal_profiles:read
X-Correlation-ID headerprofile_id path · requerido200 Perfil fiscal encontrado.401 Credencial ausente, inválida o revocada.403 Scope o acceso al recurso insuficiente.404 Recurso inexistente dentro del tenant y aplicación autenticados.