# Consideraciones Importantes

---
### **Para que el uso de nuestra API sea óptimo debes tener en cuenta lo siguiente:**

- El **tamaño máximo del archivo XML** resultante debe ser menor a **500KB.** Si tu archivo supera este tamaño **deberás dividir el mismo en varias facturas**.

- El endpoint para todos los métodos es `https://isv.aliaddo.net/api/v1/public/documents`.

- Deberás generar una **API KEY de autenticación** en nuestro [_**Portal ISV**_](https://isv.aliaddo.com/login) y reemplazarlo en el código de ejemplo donde se encuentran los corchetes `{{x-api-key}}`, debes eliminar estos corchetes ya que son una referencia visual para saber que se trata de contenido dinámico.

- Los documentos no pueden tener una fecha anterior al día en el que son emitidos, en caso de ser así, serán rechazados.

- Ten en cuenta que los archivos PDF y XML generados en nuestra plataforma son de carácter temporal y se realiza eliminación de los mismos periódicamente.

- El consecutivo debe encontrarse dentro del rango de la resolución.

- Los campos que tienen un valor vacío  `""` o el valor cero `0` son campos con valores opcionales.

- Los campos con valores numéricos obligatorios y opcionales deben cómo mínimo tener un cero  `0` ya que estos campos no pueden estar vacíos.

- Verifica tener las librerías o dependencias adecuadas.

- Las fechas tienen el formato **`AAAA-MM-DD`**

- Las fechas también pueden contener horas con el formato **`AAAA-MM-DDTHH:MM:SS±hhmm`**

- Ten en cuenta que si vas a realizar descuentos o cargos sobre la **factura en general** no se pueden realizar sobre el **detalle o sobre cada producto o servicio facturado**.

- Los campos que requieren de un código pueden ser consultados [_**aquí**_](listas-de-codigos).

- Si encuentras inconsistencias en esta documentación o códigos de error desconocidos por favor infórmanos [_**aquí**_](https://ayuda.aliaddo.help).

- Es posible que al enviar una factura sea devuelto un error _500_  con el mensaje `Service Unavailable` en el atributo `dianStateReason` y el código `error` en el atributo `dianDeliveryStatus`, esto indica que el servicio de la DIAN está temporalmente no disponible. Deberás reintentar el envío de la factura con en intervalos de 60 segundos, si continúa deberás esperar al menos 30 minutos para el restablecimiento del servicio por parte de la DIAN.

Se mostrará de esta manera:
`"dianStateReason": ["One or more errors occurred. Service Unavailable"] 
"dianDeliveryStatus": "error"`
  
O puede que se muestre así:
`"dianStateReason": ["One or more errors occurred. Internal Server Error"]
"dianDeliveryStatus": "error"`

- Sólo en caso de que `"dianDeliveryStatus": "new"` ó `"dianDeliveryStatus": "error"` se podrá volver a enviar el documento con el método `POST` para actualizar.

- Nuestro software realiza una serie de validaciones previas al procesamiento que realiza la DIAN, si una de estas validaciones es alcanzada se devolverá un estado _200_, sin embargo, el cuerpo del objeto JSON tendrá la explicación de los errores para que puedas hacer las respectivas correcciones.


