# Cancelación

## Introducción

El evento de cancelación es un mensaje electrónico firmado digitalmente, mediante el cual el emisor de un Documento Electrónico (DE) solicita su anulación formal dentro del sistema del SIFEN. Este evento solo puede enviarse cuando la operación documentada no se ha concretado y se desea dejar sin efecto el DE previamente autorizado.

El objetivo es evitar efectos tributarios de un documento que ya no representa una transacción válida, por ejemplo, por errores, duplicidad o mutuo acuerdo entre las partes.

## Caracteristicas

* **¿Quién lo emite?**\
  El **emisor del DE** es quien genera y transmite el evento de cancelación. El receptor no participa directamente en este proceso.
* **Motivos comunes:**
  * Error de emisión (RUC equivocado, datos incorrectos).
  * Documento duplicado.
  * Operación cancelada antes de concretarse.
  * Emisión a un receptor erróneo.
* **Requisitos técnicos:** El evento debe incluir el **CDC del documento original**.
* **Efecto fiscal:** Una vez autorizado por la SET, el estado del documento cambia a **“Cancelado”** y **pierde validez tributaria**, aunque sigue siendo visible en las consultas del historial electrónico.

## Plazos máximos de transmisión

| DTE                                                                                                   |                                                                                 |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| <ul><li>Factura Electrónica</li></ul>                                                                 | Podrá realizarse dentro de un plazo máximo de 48 horas de la aprobación del DE. |
| <ul><li>Nota de Crédito</li><li>Nota de Débito</li><li>Nota de Remisión</li><li>Autofactura</li></ul> | Podrá realizarse dentro del plazo de 168 horas de la aprobación del DE.         |

## Autenticación

Para acceder al servicio de facturación electrónica a través de nuestra API REST, los usuarios deben autenticarse utilizando el método de Authorization Bearer Token. Este proceso implica dos pasos principales:

1. **Autenticación Básica:** Los usuarios envían sus credenciales (usuario y contraseña) codificadas en base64 en el encabezado de la solicitud.
2. **Identificador del Servicio:** Junto con las credenciales, los usuarios deben especificar el identificador del servicio que desean utilizar.
3. **Generación del Token:** Los usuarios pueden generar el token enviando una solicitud \[GET] a `URL_API_AUTH/ServicioEDOC`, incluyendo el identificador del servicio deseado.

**Servicios Disponibles**

Cada servicio dentro de la plataforma tiene un identificador único que debe ser proporcionado durante la solicitud de autenticación. A continuación, se muestra una tabla con los identificadores y nombres de los servicios disponibles:

| ID | Servicio                  |
| -- | ------------------------- |
| 1  | Emisión de Comprobante.   |
| 2  | Recepción de Comprobante. |
| 3  | Consulta de Emisión.      |
| 4  | Consulta de Recepción.    |
| 7  | Servicio de correos.      |

**Seguridad y Manejo del Token**

* **Almacenamiento Seguro:** Es esencial que el token se almacene de manera segura para evitar accesos no autorizados.
* **Caducidad y Renovación:** Los tokens tienen un período de validez limitado y deben ser renovados periódicamente.
* **Revocación de Tokens:** En caso de compromiso, el token debe ser revocado inmediatamente.

## GET /ServicioEDOC

>

```json
{"openapi":"3.0.1","info":{"title":"GS.PY.EDOC.AUTH.API","version":"v3.2.0"},"security":[{"Basic":[]}],"components":{"securitySchemes":{"Basic":{"type":"http","description":"Esquema basic de autorización","scheme":"Basic"}},"schemas":{"TokenAppDto":{"type":"object","properties":{"token":{"type":"string","description":"Valor de sesión para consumo de los servicios web eDoc","nullable":true},"expedido":{"type":"string","description":"Fecha de expedición del token","format":"date-time","nullable":true},"expira":{"type":"string","description":"Fecha de caducidad del token","format":"date-time","nullable":true},"codigoError":{"type":"string","description":"Código de alerta o error en caso de ocurrir durante el procesamiento de la petición","nullable":true},"mensajeRespuesta":{"type":"string","description":"Mensaje de alerta o error en caso de ocurrir durante el procesamiento de la petición","nullable":true}},"additionalProperties":false,"description":"Respuesta de Autenticación eDoc"}}},"paths":{"/ServicioEDOC":{"get":{"tags":["Auth"],"parameters":[{"name":"Id","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenAppDto"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenAppDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenAppDto"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenAppDto"}}}}}}}}}
```

## The TokenAppDto object

```json
{"openapi":"3.0.1","info":{"title":"GS.PY.EDOC.AUTH.API","version":"v3.2.0"},"components":{"schemas":{"TokenAppDto":{"type":"object","properties":{"token":{"type":"string","description":"Valor de sesión para consumo de los servicios web eDoc","nullable":true},"expedido":{"type":"string","description":"Fecha de expedición del token","format":"date-time","nullable":true},"expira":{"type":"string","description":"Fecha de caducidad del token","format":"date-time","nullable":true},"codigoError":{"type":"string","description":"Código de alerta o error en caso de ocurrir durante el procesamiento de la petición","nullable":true},"mensajeRespuesta":{"type":"string","description":"Mensaje de alerta o error en caso de ocurrir durante el procesamiento de la petición","nullable":true}},"additionalProperties":false,"description":"Respuesta de Autenticación eDoc"}}}}
```

## Evento de Cancelación

En esta sección, abordaremos los detalles técnicos específicos del proceso de **Eventos de Cancelación** utilizando la tecnología REST. Exploraremos cómo este enfoque facilita la integración eficiente y segura de los sistemas de facturación dentro de las infraestructuras empresariales existentes, asegurando la conformidad con los estándares legales y fiscales relevantes. Nos centraremos en la implementación de REST para describir las interacciones entre los sistemas y los métodos empleados para la transmisión de datos de facturación electrónica.

## Estados eDoc

La gestión adecuada de los estados eDoc es crucial en el sistema de facturación electrónica, ya que cada estado refleja una etapa específica en el proceso de validación y envío de documentos a la entidad tributaria. A continuación, se presenta una tabla que describe cada uno de los estados eDoc, proporcionando claridad sobre las acciones necesarias según el estado en que se encuentre el documento.

<table><thead><tr><th>Código</th><th>Descripción del Estado</th><th>Reenviar</th><th width="149">Consultar</th><th>Acción Recomendada</th></tr></thead><tbody><tr><td>1</td><td>En Procesamiento eDoc.</td><td>SI</td><td>NO</td><td>Volver a intentar mas tarde.</td></tr><tr><td>2</td><td>DE Autorizado, cumple con todo lo requerido por DNIT.</td><td>NO</td><td>NO</td><td>No se requieren acciones adicionales.</td></tr><tr><td>4</td><td>Error de procesamiento en eDoc, se debe radicar un Ticket de Atención en nuestra mesa de Ayuda.</td><td>NO</td><td>NO</td><td>Notificar a Soporte GuruSoft mediante ticket en plataforma de Soporte.</td></tr><tr><td>5</td><td>DE Pendiente de Estado Final.</td><td>NO</td><td>SI</td><td>La ventana de tiempo que la DNIT tiene para autorizar un documento es de hasta 72 horas. Debe consultar el estado del documento cada cierto tiempo hasta que el estado final se encuentre listo. En caso de superar este tiempo máximo, por favor levantar un ticket.</td></tr><tr><td>6</td><td>Devuelto por SIFEN.</td><td>SI</td><td>NO</td><td><p></p><ul><li>Corregir petición de acuerdo a validaciones devueltas por la DNIT.</li><li>Si el documento ya fue autorizado en la DNIT pero no en eDoc, por favor levantar un ticket en la plataforma de soporte.</li><li>En caso de intermitencias con los servicios de la DNIT, se sugiere reintentar mas tarde.</li></ul></td></tr><tr><td>7</td><td>DE Pendiente de Entrega a SIFEN.</td><td>NO</td><td>SI</td><td><ul><li>En Ambiente Productivo la emisión de DE es asíncrona, es por ello que se recomienda la Consulta del Estado Final minutos después.</li><li>En caso de intermitencias o que SIFEN se encuentre fuera de línea.</li></ul></td></tr><tr><td>11</td><td>DE Cancelado.</td><td>NO</td><td>NO</td><td>No se requieren acciones adicionales.</td></tr><tr><td>13</td><td>Pendiente Cancelar DE.</td><td>SI</td><td>NO</td><td>Enviar nuevamente el Evento de Cancelación más tarde.</td></tr><tr><td>15</td><td>Devuelto eDoc.</td><td>SI</td><td>NO</td><td>Corregir petición en base a las Observaciones / Errores devueltos en respuesta.</td></tr><tr><td>18</td><td>DE No Encontrado.</td><td>NO</td><td>NO</td><td>Verificar CDC del DE a Consultar.</td></tr></tbody></table>

* **Estado Autorizado (2):** Este estado indica que el documento ha sido autorizado por la entidad tributaria. En este punto, no se requiere ninguna acción adicional como reenvío o consulta del estado, pues el documento ya ha completado su proceso satisfactoriamente.
* **Estado Pendiente (5, 7):** Este estado indica que el Documento Electrónico fue recibido por eDoc y se encuentra Pendiente su envio y/o consulta de estado final en SIFEN. Según la normativa existe un tiempo máximo de hasta 72 horas para una respuesta final, en caso de superar el tiempo estipulado se sugiere elevar un ticket.
* **Estados de Error y Corrección (4, 6, 15):** El estado 4 indica un error en el proceso de envío o procesamiento, y no debe reenviarse automáticamente; es necesario revisar el error específico y corregirlo si es posible. El estado 6 se asigna a documentos rechazados por la entidad tributaria y requiere corrección manual antes de un reenvío. El estado 15 sugiere que el documento fue devuelto por eDoc empresarial y debe ser analizado para determinar la causa y decidir las acciones correctivas apropiadas. En estos casos, la corrección de errores es fundamental antes de cualquier intento de reenvío.
* **Estado de Cancelación (11):** Este estado indica que el documento ha sido Cancelado y, por lo tanto, ya no tiene validez legal o administrativa. No se requieren acciones adicionales para documentos en este estado, ya que han sido efectivamente retirados del proceso.

**Consideraciones Importantes**

* **Consultas de Estado:** Para los estados que sugieren consultar el estado del documento, es recomendable establecer un intervalo regular de consultas para evitar la saturación del sistema y asegurar la actualización oportuna del estado del documento.
* **Notificaciones a Soporte:** En casos de errores que no pueden ser resueltos directamente por el usuario, como el estado 4, es fundamental notificar al soporte técnico proporcionando todos los detalles necesarios para una rápida resolución del problema.

## Diccionario de datos

{% embed url="<https://devreg5.guru-soft.com/extract-doc/api/documentation/swagger?p1=AJkuNFFcBIUDSmO5JF8FCv8OjLVUIKfNVnYm1lODbzhiR7gH702OYJsb0g3xUertl6rRR3XhFvTvP6SVUjthmJGB9dHpEksU&p2=EoWbYb/FBQ7+HIWWn+AakOb+8h0FOP3K&p3=tb3+lSTQ1YY=&p4=Gl8qjEJIYXw=&p5=97RfKWiHiHg=&p6=0h6AVWZOsDA=>" %}

## Consumo

## POST /Emisor/Anular

> Método para anular un DE

```json
{"openapi":"3.0.1","info":{"title":"GS.PY.EDOC.EVENTOS.API","version":"v3.7.0"},"security":[{"Bearer":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","description":"Autorización de peticiones via JWT. Ingresa 'Bearer' seguido de un espacio y a continuación el Token.","name":"Authorization","in":"header"}},"schemas":{"EventoAnulacionDocDto":{"type":"object","properties":{"cdc":{"type":"string","description":"CDC del DE\r\nOrigen: `DNIT`\r\n\r\n`Obligatorio`\r\n\r\nMin: 44 - Max: 44","nullable":true},"motivo":{"type":"string","description":"Motivo de la Cancelación\r\nOrigen: `DNIT`\r\n\r\n`Obligatorio`\r\n\r\nMin: 5 - Max: 500","nullable":true}},"additionalProperties":false,"description":"Estructura de Evento: Cancelación"},"EventoResultDto":{"type":"object","properties":{"fechaAutorizacion":{"type":"string","description":"Fecha de Autorización de Evento\r\nOrigen: `eDoc`","format":"date-time","nullable":true},"estado":{"$ref":"#/components/schemas/EdocEmisionEstado"},"codigo":{"type":"string","description":"Código de Respuesta\r\nOrigen: `eDoc`","nullable":true},"mensaje":{"type":"string","description":"Observaciones/Errores de Procesamiento\r\nOrigen: `eDoc`","nullable":true},"sifenId":{"type":"string","description":"Id de Autorización Sifen\r\nOrigen: `eDoc`","nullable":true},"errores":{"type":"array","items":{"$ref":"#/components/schemas/eDocErrorMessage"},"description":"Errores/Observaciones de procesamiento\r\nOrigen: `eDoc`","nullable":true}},"additionalProperties":false,"description":"Respuesta de procesamiento de Eventos"},"EdocEmisionEstado":{"enum":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23],"type":"integer","format":"int32"},"eDocErrorMessage":{"type":"object","properties":{"mensajeError":{"type":"string","nullable":true},"codigoError":{"type":"string","nullable":true}},"additionalProperties":false}}},"paths":{"/Emisor/Anular":{"post":{"tags":["Emisor"],"summary":"Método para anular un DE","requestBody":{"description":"Petición JSON de Cancelación","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventoAnulacionDocDto"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventoAnulacionDocDto"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventoAnulacionDocDto"}}}},"responses":{"200":{"description":"OK Procesado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventoResultDto"}}}},"400":{"description":"Petición errónea, corregir de acuerdo a respuesta recibida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventoResultDto"}}}},"401":{"description":"Credenciales inválidas","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventoResultDto"}}}},"500":{"description":"Error. Verificar mensaje de excepción","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventoResultDto"}}}}}}}}}
```

## Pruebas

```json
{
  "cdc": "01901074428001003061019722025050612842546491",
  "motivo": "Error de digitación"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wikiedoc.guru-soft.com/py/integraciones-y-servicios/rest/eventos-emisor/cancelacion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
