RECE.APICOMPLOOK SISTEMAS
Referencia Errores

Errores

Los errores llegan de dos lugares distintos: los que genera RECE.API antes de contactar a AFIP, y los que devuelve AFIP al procesar el comprobante. Saber cuál es cuál acorta mucho el diagnóstico.

Dónde mirar

El código HTTP no alcanza. Un rechazo de AFIP puede llegar con 200 y success: false en el cuerpo. Revisá siempre estos tres campos:

json
{
  "success": false,
  "errorMessage": "[10016] El punto de venta 9 no esta dado de alta en AFIP",
  "errores": [
    { "codigo": 10016, "mensaje": "El punto de venta 9 no esta dado de alta en AFIP" }
  ],
  "observaciones": []
}
CampoQué significa
successSi la operación completó. Es lo primero a chequear.
errorMessageResumen legible. Con formato [código] mensaje; varios errores van separados por punto y coma.
errores[]Detalle estructurado. El comprobante fue rechazado.
observaciones[]AFIP autorizó igual, pero con reparos. El CAE es válido.

Códigos HTTP de la API

CódigoSignificadoCausa habitual
200ProcesadoRevisá success: puede contener un rechazo.
400Bad RequestValidación previa fallida, JSON malformado o error de negocio de AFIP.
401UnauthorizedToken ausente, inválido o expirado.
404Not FoundComprobante, empresa o certificado inexistente.
429Too Many RequestsSe agotó el requestsLimit del token.
500Internal Server ErrorExcepción no controlada. En CAEA es el código habitual ante fallos.
503Service UnavailableSolo en /api/facturacion/ping: AFIP no responde.

Validaciones previas

Se rechazan con 400 antes de llamar a AFIP, así que no consumen tiempo de red:

EndpointCondición que rechaza
/api/facturacion/emitirpuntoVenta <= 0, tipoComprobante <= 0, importeTotal <= 0
/api/facturacionexportacion/autorizarLo mismo, más tipoComprobante fuera de [19, 21] e items vacío
/api/auth/afip/loginambiente distinto de homologacion o produccion; servicio vacío
/api/RemitoCarnico/*cuit vacío
/api/auth/register, /loginemail o password vacíos

Códigos de error de AFIP

CódigoDescripciónCómo resolverlo
600 CUIT no habilitado para operar En homologación, usá el CUIT de prueba 20409378472. En producción, verificá el alta del contribuyente en el servicio.
1502 Token expirado Invalidá el caché de WSAA y reintentá. Si se repite, revisá el reloj del servidor.
10004 Datos de IVA incompletos Cada entrada de ivas[] necesita id, baseImponible e importe.
10015 Fecha del comprobante inválida AFIP acepta ±5 días respecto de la fecha actual. Usá la fecha de hoy.
10016 Punto de venta no dado de alta Consultá puntos de venta y usá uno habilitado. Verificá también que el emisionTipo sea el correcto.
10017 Tipo de comprobante no válido El tipo no corresponde a la condición fiscal del emisor. Un monotributista no puede emitir factura A.
10048 Los importes no coinciden Verificá que importeTotal sea la suma exacta de neto, no gravado, exento, IVA y tributos. Redondeá a 2 decimales.
2030 Punto de venta no habilitado para ese tipo Típico al emitir FCEYM con un punto de venta común. Habilitalo en AFIP para ese tipo.
10143 Receptor no admite FCEYM El receptor también es MiPyME: emitir factura común.
10144 Emisor no habilitado para FCEYM El CUIT no está inscripto como MiPyME.
10145 CBU o alias no informado Agregar el opcional 2101 o 2102.
10146 Condición de venta no informada Agregar el opcional 22.
10147 Falta fecha de vencimiento de pago Incluir fechaVencimientoPago.
10148 Tipo de documento inválido en FCEYM Usar tipoDocumento: 80 (CUIT).

Los códigos de AFIP cambian con las resoluciones. Si te encontrás con uno que no está acá, el mensaje que devuelve errores[] suele ser suficientemente descriptivo, y los manuales del desarrollador de cada web service tienen la lista completa.

Problemas frecuentes

"No se pudo obtener autenticación"

El certificado no se pudo usar. En orden de probabilidad:

  1. No está autorizado en AFIP para ese web service. Es la causa más común. La autorización es por servicio: wsfe, wsfex y wsremcarne se habilitan por separado.
  2. Venció. Verificalo con el diagnóstico de certificado.
  3. La contraseña del .pfx es incorrecta.
  4. El archivo no incluye la clave privada. Al exportarlo desde el navegador o desde OpenSSL, hay que incluirla explícitamente.
  5. El reloj del servidor está desfasado respecto del de AFIP.

Para aislarlo, probá primero la autenticación sola:

bash
curl "https://api.tudominio.com/api/monitor/empresa/30712345678/ping-wsaa?ambiente=produccion"

El comprobante se emitió pero no recibí el CAE

Pasa cuando la conexión se corta después de que AFIP autorizó. El comprobante existe y volver a emitir generaría un duplicado.

La forma de recuperarlo es reintentar la misma llamada enviando el numeroComprobante explícito: si ese número ya tiene CAE, la API lo devuelve con esConsultaExistente: true en vez de emitir de nuevo. Alternativamente, consultá el comprobante con /api/facturacion/consultar.

Cuidado con los timeouts de tu cliente

Una emisión encadena varias llamadas a AFIP y, en el peor caso, puede tardar bastante. Si el timeout de tu HTTP client es corto, vas a abortar mientras la API sigue procesando, y el CAE queda emitido del lado de AFIP sin que tu sistema lo registre. Poné un timeout holgado y, ante un corte, consultá antes de reintentar.

Saltos de numeración

AFIP exige numeración correlativa. Si tu sistema lleva su propio contador y se desincroniza, vas a recibir rechazos. La respuesta incluye numeroEsperado con el número que correspondía según el último autorizado. Consultá el último número antes de emitir.

"Input string was not in a correct format"

Un problema de formato numérico. AFIP espera punto decimal (1210.00), no coma. Enviá los importes como números JSON, no como strings: "importeTotal": 1210.00, nunca "importeTotal": "1210,00".

Errores de comunicación sin causa aparente

Si un comprobante falla de forma inexplicable y otros similares pasan, revisá los campos de texto libre. tributos[].descripcion, opcionales[].valor y los campos de cliente en WSFEX se insertan en el XML sin escapar: un & en una razón social rompe el mensaje. Sanitizá esos campos antes de enviarlos.

Emití en producción y aparece en homologación

Revisá el valor exacto de ambiente. Cualquier cosa que no sea exactamente produccion — un "prod", un acento de más, un espacio — resuelve silenciosamente a homologación y devuelve un CAE que parece válido pero no tiene efecto fiscal.

Checklist de diagnóstico

Antes de escalar un problema, verificá:

VerificarCómo
El token es válido y tiene cuotaGET /api/auth/token-info
El certificado está vigenteGET /api/empresas/{cuit}/certificado/diagnostico
El certificado autentica ante AFIPGET /api/monitor/empresa/{cuit}/ping-wsaa
AFIP está operativoGET /api/facturacion/ping
El punto de venta está habilitadoPOST /api/facturacion/parametros/puntos-venta
El número no saltaPOST /api/facturacion/ultimo-numero
Los importes cierranTotal = neto + no gravado + exento + IVA + tributos
La fecha está en rango±5 días respecto de hoy
El ambiente es el correctoComparar el string exacto contra produccion
Errores recientes del servicioGET /api/monitor/errores?limite=20

Reportar un problema

Si después del checklist el error sigue, para poder ayudarte hacen falta:

  1. El request completo, con la contraseña del certificado y el token censurados.
  2. La respuesta completa, incluidos errores[] y observaciones[].
  3. El ambiente y el CUIT emisor.
  4. La fecha y hora aproximadas, para cruzar contra los logs del servidor.
Nunca compartas el certificado ni su clave

Ni el .pfx, ni su Base64, ni la contraseña, ni un token de API completo. Ninguna de esas cosas es necesaria para diagnosticar un error de emisión.

RECE.API — CompLook Sistemas Documentación de integración