Convención de respuesta
Todas las respuestas JSON comparten esta forma:status:SUCCESSoFAILmessage.code: código estable para decidir programáticamentepayload: los datos
Cómo empezar
Cuándo parar y preguntar
Esta documentación describe la API: qué endpoints hay, qué se manda, qué vuelve y qué garantiza el gateway. No describe el régimen fiscal uruguayo, y la diferencia importa porque los dos aparecen mezclados en el mismo request. La regla, para una persona y sobre todo para un agente que escriba la integración: si el dato es fiscal y acá no está dicho, no lo deduzcas. Un CFE emitido con el criterio equivocado no es un bug que se arregla con un fix: es un documento fiscal ante DGI, consume numeración y sólo se compensa con otro comprobante. Cosas que no están definidas acá y no hay que inventar:
Señales de que estás por adivinar, y conviene frenar:
- Estás eligiendo entre dos códigos DGI porque “el otro dio error”.
- Estás ajustando un monto para que el comprobante sea aceptado.
- Estás copiando un ejemplo de otro tipo de CFE porque el tuyo no está documentado.
- Vas a emitir en producción para ver qué pasa.
Si estás construyendo esto con un agente
La regla de arriba vale igual, pero hace falta decirla como condición de parada, porque un agente al que se le pide “que la factura salga” va a completar el campo que falte antes que detenerse:Si un campo del CFE no está documentado acá y no está resuelto en el documento Formato CFE de DGI que tengas a mano, no lo completes. Pará y preguntá.Concretamente, un agente no debería:
- elegir un
IndFactporque el otro dio error; - inventar un
TipoDocRecepo un código de retención; - ajustar montos hasta que DGI acepte;
- emitir en producción para ver qué pasa.