Novedades

[API FE DOM] Actualización de gestión de secuencias

Agregamos un campo esencial en la respuesta de creación y consulta de documentos, denominado sequenceConsumed. Este campo determina si es posible reutilizar un número de secuencia (documentNumber) en futuros documentos, conforme a las directrices de la DGII.

Esto está diseñado para mejorar la eficiencia en la gestión de documentos, permitiendo una clara identificación de las secuencias disponibles para reutilización y destacando los casos en que ciertas restricciones previenen este proceso, como:

  • Certificado y/o firma inválida.
  • Estructura del comprobante (XML) no es válida.
  • Firmante del comprobante fiscal electrónico no corresponde a un delegado autorizado para hacer transacciones para el RNC Emisor.
  • El e-NCF no está autorizado para el RNC Emisor del comprobante fiscal electrónico.
  • El e-NCF autorizado se encuentra vencido a la fecha de envío del comprobante fiscal electrónico.
  • El RNC Emisor del comprobante no corresponde a un emisor electrónico.
  • El RNC Emisor no existe.
  • El RNC Emisor no se encuentra activo.

Ejemplo práctico con una factura E32

Nosotros tenemos el siguiente request en JSON que va a ser enviado al API de Alanube.
Noten que sender.rnc es 111111111. Ese rnc NO es el correcto; entonces la DGII va a determinar que nosotros enviamos ese dato erróneo y nos dará otra oportunidad para volver a enviar la misma secuencia en otro request pero esta vez corrigiendo el dato.

{
  "idDoc":{
    "encf": "E320000016202",
    "sequenceDueDate":"2025-12-31",
    "taxAmountIndicator":0,
    "incomeType":1,
    "paymentType":1
  },
  "sender":{
    "rnc":132109120,
    "companyName":"Juan",
    "tradename":"Juan",
    "address":"Casa de juan",
    "mail":"[email protected]",
    "stampDate":"2023-09-29"
  },
  "buyer": {
    "rnc": 132109122,
    "companyName": "Alanube Soluciones S.R.L."
  },
  "totals":{
    "totalTaxedAmount":1000,
    "i1AmountTaxed":1000,
    "itbisS1":18,
    "itbisTotal":180,
    "itbis1Total":180,
    "totalAmount":1180
  },
  "itemDetails":[
    {
      "lineNumber":1,
      "billingIndicator":1,
      "itemName":"choripan",
      "goodServiceIndicator":1,
      "itemDescription":"Pizza",
      "quantityItem":10,
      "unitMeasure":43,
      "unitPriceItem":100,
      "itemAmount":1000
    }
  ]
}

Después de haber enviado el request anterior obtendremos la siguiente respuesta. Noten la razón del rechazo y la nueva propiedad sequenceConsumed.

{
    "id": "01HPMWW3CEF6DMMXXB0MX29B1M",
    "status": "REGISTERED",
    "legalStatus": "REJECTED",
    "documentNumber": "E320000016202",
    "signatureDate": "14-02-2024 18:47:50",
    "securityCode": "i5KfFx",
    "sequenceConsumed": false,
    "documentStampUrl": "...",
    "xml": "...",
    "resumeXml": "...",
    "pdf": "...",
    "governmentResponse": {
        "value": [
            {
                "codigo": "04",
                "valor": "El RNC del certificado no está delegado para realizar transaciones para el RNC: 132109120"
            }
        ],
        "code": 2
    }
}

Si sequenceConsumed está con un valor false significa que podemos volver a enviar el request pero ajustando al rnc correcto. Así que enviaremos el mismo request pero con ajustando el rnc

{
  "idDoc":{...},
  "sender":{
    "rnc":132109122, // CORRECT!
    ...
  },
  "buyer": {...},
  "totals":{...},
  "itemDetails":[...]
}

Luego de haberlo enviado obtendremos:

{
    "id": "01HPMX3QYJPQXNFFHGEF18EP7X",
    "status": "REGISTERED",
    "legalStatus": "ACCEPTED",
    "documentNumber": "E320000016202",
    "signatureDate": "14-02-2024 18:52:00",
    "securityCode": "vYhG0a",
    "sequenceConsumed": true,
    "documentStampUrl": "...",
    "xml": "...",
    "resumeXml": "...",
    "pdf": "...",
    "governmentResponse": {
        "value": null,
        "code": 1
    }
}

Noten que esta vez sequenceConsumed es true y no obtuvimos ningún error o advertencia por parte de la DGII.
Por lo tanto esa secuencia E320000016202 ya fue consumida y NO puede ser reutilizada en futuros documentos.