Saltar al contenido

Errores

La API de Facturación utiliza errores estructurados que te indican exactamente qué salió mal y cómo corregirlo.

Formato de error

{
  "error": {
    "tipo": "error_validacion",
    "codigo": "regimen_fiscal_invalido",
    "mensaje": "El régimen fiscal '601' del cliente no es compatible con el uso de CFDI 'D01'. Usos válidos para el régimen '601': G01, G02, G03.",
    "campo": "cliente.regimen_fiscal",
    "url_doc": "https://docs.facturacion.srs-ngr.com/errores/regimen_fiscal_invalido"
  }
}
CampoDescripción
tipoCategoría del error
codigoCódigo de error legible por máquina
mensajeDescripción legible con contexto
campoQué campo causó el error (si aplica)
url_docEnlace a la documentación sobre este error

Tipos de error

tipoEstado HTTPDescripción
error_validacion400Datos de entrada inválidos
error_autenticacion401Llave de API faltante o inválida
no_encontrado404El recurso no existe
error_conflicto409La operación entra en conflicto con el estado actual
error_sat422El SAT/PAC rechazó la operación
error_interno500Error del servidor — reintenta o contacta soporte

Errores comunes

Formato de RFC

codigo: rfc_invalido
mensaje: "El RFC 'INVALIDO' no tiene un formato válido. Debe ser 12 caracteres (persona moral) o 13 caracteres (persona física)."

Uso de CFDI incompatible

codigo: regimen_fiscal_invalido
mensaje: "El régimen fiscal '601' del cliente no es compatible con el uso de CFDI 'D01'."

Factura no timbrable

codigo: estado_invalido
mensaje: "La factura fac_xxx tiene estado 'timbrada'. Solo facturas en estado 'borrador' pueden timbrarse."

UUID de sustitución faltante

codigo: sustitucion_requerida
mensaje: "El motivo de cancelación '01' requiere el UUID del CFDI de sustitución en el campo 'uuid_sustitucion'."

CSD vencido

codigo: certificado_vencido
mensaje: "El certificado cert_xxx venció el 2025-12-31. Renueve su CSD en el portal del SAT."

Errores de idempotencia

Si envías una solicitud con un encabezado Clave-Idempotencia que ya fue utilizado con un cuerpo de solicitud diferente:

{
  "error": {
    "tipo": "error_conflicto",
    "codigo": "clave_idempotencia_duplicada",
    "mensaje": "La clave de idempotencia 'pedido_12345' ya fue utilizada con un cuerpo de solicitud diferente."
  }
}