Saltar a contenido

Integración con el Servicio Web de Envío de Previa de CFE

¡Hola! En este artículo le guiaremos en la integración de su ERP con el servicio de Envío de Previa de CFE de InvoiCy.

El Web Service de Envío de Previa de CFE (../aws_previafactura.aspx) permite enviar los datos del comprobante de manera preliminar sin que InvoiCy realice la firma ni el envío del documento a la DGI.

Al enviar los datos del CFE a este endpoint, InvoiCy asignará la numeración y la serie del documento, quedando en estado "En digitación" dentro del sistema. Posteriormente, podrá ser emitido mediante el mismo Web Service de envío de previa, indicando la numeración y la serie asignadas previamente.

Además, la consulta también buscará el código RUC, Estado y nombre de la empresa que está con el certificado por vencer.

Este Web Service también verifica si el documento será rechazado y permite obtener una vista previa de la representación impresa.

Ejemplo: https://appuypruebas.migrate.info/InvoiCy/aws_previafactura.aspx?wsdl

Layout

Layout de Emisión de CFE. Download

Estructura de Envio

La estructura en la que deben enviarse los datos puede ser consultada mediante el consumo del WSDL del servicio web mencionado anteriormente, agregando "?WSDL" al final de la URL del servicio.

1
2
3
4
5
6
7
8
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gx="Gx">
   <soapenv:Header/>
   <soapenv:Body>
      <gx:WS_PreviaFactura.Execute>
         <gx:Xmlrecepcao><!--(1)--></gx:Xmlrecepcao>
      </gx:WS_PreviaFactura.Execute>
   </soapenv:Body>
</soapenv:Envelope>
  1. Aquí estará tu XML de envío de previa convertido, reemplazando < y > por < y > respectivamente.

Dentro de la etiqueta , debe enviarse el XML de la solicitud convertido a texto, como se muestra en el siguiente ejemplo.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gx="Gx">
   <soapenv:Header/>
   <soapenv:Body>
      <gx:WS_PreviaFactura.Execute>
         <gx:Xmlrecepcao>&lt;PreviaCFE&gt;
    &lt;Encabezado&gt;
        &lt;EmpCodigo&gt;1&lt;/EmpCodigo&gt;
        &lt;EmpPK&gt;XXX99Xxxx+xXxXX9XxxXx==&lt;/EmpPK&gt;
        &lt;EmpCK&gt;x9x9x9x9xx9x999xx999x8xxx9999x99&lt;/EmpCK&gt;
    &lt;/Encabezado&gt;
+XXXxxxX9xxXx9/XfXX9xXxXx9xx&lt;CFE&gt;
        &lt;CFEItem&gt;
            &lt;IdDoc&gt;
                &lt;CFETipoCFE&gt;111&lt;/CFETipoCFE&gt;
                &lt;CFESerie&gt;WP&lt;/CFESerie&gt;
                &lt;CFENro&gt;4&lt;/CFENro&gt;
                &lt;CFENumReferencia/&gt;
                &lt;CFEFchEmis&gt;2024-11-14&lt;/CFEFchEmis&gt;
                &lt;CFEFmaPago&gt;1&lt;/CFEFmaPago&gt;
                &lt;CFESecretoProfesional&gt;0&lt;/CFESecretoProfesional&gt;
                &lt;CFEIndCompraME&gt;1&lt;/CFEIndCompraME&gt;
                &lt;CFEAdenda&gt;Adenda&lt;/CFEAdenda&gt;
                &lt;CFEExpModVenta&gt;90&lt;/CFEExpModVenta&gt;
                &lt;CFERepImpresa&gt;5&lt;/CFERepImpresa&gt;
                &lt;CFEImpFormato&gt;2&lt;/CFEImpFormato&gt;
                &lt;CFEInfAdicional&gt;Información adicional del Comprobante&lt;/CFEInfAdicional&gt;
                &lt;CFEMntBruto&gt;2&lt;/CFEMntBruto&gt;
                &lt;CFENombreLogo&gt;Logo InvoiCy&lt;/CFENombreLogo&gt;
            &lt;/IdDoc&gt;
            &lt;Emisor&gt;
                &lt;EmiRznSoc&gt;MIGRATE COMPANY&lt;/EmiRznSoc&gt;
                &lt;EmiComercial&gt;MIGRATE QA&lt;/EmiComercial&gt;
                &lt;EmiGiroEmis&gt;Giro del negocio del emisor &lt;/EmiGiroEmis&gt;
                &lt;EmiTelefono/&gt;
                &lt;EmiCorreoEmisor&gt;teste@migrate.info&lt;/EmiCorreoEmisor&gt;
                &lt;EmiSucursal&gt;Nombre Sucursal&lt;/EmiSucursal&gt;
                &lt;EmiDomFiscal&gt;Domicilio Fiscal&lt;/EmiDomFiscal&gt;
                &lt;EmiCiudad&gt;Ciudad&lt;/EmiCiudad&gt;
                &lt;EmiDepartamento&gt;Departamento&lt;/EmiDepartamento&gt;
                &lt;EmiInfAdicional&gt;Información adicional del emisor&lt;/EmiInfAdicional&gt;
            &lt;/Emisor&gt;
            &lt;Receptor&gt;
                &lt;RcpTipoDocRecep&gt;2&lt;/RcpTipoDocRecep&gt;
                &lt;RcpCodPaisRecep&gt;UY&lt;/RcpCodPaisRecep&gt;
                &lt;RcpDocRecep&gt;999999999999&lt;/RcpDocRecep&gt;
                &lt;RcpRznSocRecep&gt;Receptor&lt;/RcpRznSocRecep&gt;
                &lt;RcpDirRecep&gt;Dirección&lt;/RcpDirRecep&gt;
                &lt;RcpCiudadRecep&gt;Ciudad&lt;/RcpCiudadRecep&gt;
                &lt;RcpCorreoRecep&gt;teste@migrate.info&lt;/RcpCorreoRecep&gt;
                &lt;RcpInfAdiRecep&gt;Información adicional del receptor&lt;/RcpInfAdiRecep&gt;
                &lt;RcpDeptoRecep&gt;Departamento&lt;/RcpDeptoRecep&gt;
                &lt;RcpEmlArchivos&gt;3&lt;/RcpEmlArchivos&gt;
            &lt;/Receptor&gt;
            &lt;Totales&gt;
                &lt;TotTpoMoneda&gt;USD&lt;/TotTpoMoneda&gt;
                &lt;TotTpoCambio&gt;90.04&lt;/TotTpoCambio&gt;
                &lt;TotMntNoGrv&gt;900.00&lt;/TotMntNoGrv&gt;
                &lt;TotMntTotal&gt;4086.00&lt;/TotMntTotal&gt;
                &lt;TotMntTotRetenido/&gt;
                &lt;TotMontoNF&gt;0.00&lt;/TotMontoNF&gt;
                &lt;TotMntPagar&gt;4086.00&lt;/TotMntPagar&gt;
                &lt;TotMntIVATasaBasica&gt;396.00&lt;/TotMntIVATasaBasica&gt;
                &lt;TotMntNetoIVATasaBasica&gt;1800.00&lt;/TotMntNetoIVATasaBasica&gt;
                &lt;TotIVATasaBasica&gt;22&lt;/TotIVATasaBasica&gt;
                &lt;TotIVATasaMin&gt;10&lt;/TotIVATasaMin&gt;
                &lt;TotMntIVATasaMin&gt;90.00&lt;/TotMntIVATasaMin&gt;
                &lt;TotMntNetoIvaTasaMin&gt;900.00&lt;/TotMntNetoIvaTasaMin&gt;
            &lt;/Totales&gt;
            &lt;Detalle&gt;
                &lt;Item&gt;
                    &lt;CodItem&gt;
                        &lt;CodItemItem&gt;
                            &lt;IteCodiTpoCod&gt;INT1&lt;/IteCodiTpoCod&gt;
                            &lt;IteCodiCod&gt;GP-FIN-4PK-ALEX&lt;/IteCodiCod&gt;
                        &lt;/CodItemItem&gt;
                    &lt;/CodItem&gt;
                    &lt;IteIndFact&gt;3&lt;/IteIndFact&gt;
                    &lt;IteNomItem&gt;Nombre del Ítem 1&lt;/IteNomItem&gt;
                    &lt;IteDscItem&gt;Descripción Adicional del Ítem 1&lt;/IteDscItem&gt;
                    &lt;IteCantidad&gt;1&lt;/IteCantidad&gt;
                    &lt;IteUniMed&gt;UNID&lt;/IteUniMed&gt;
                    &lt;ItePrecioUnitario&gt;1000.00&lt;/ItePrecioUnitario&gt;
                    &lt;IteDescuentoPct&gt;10&lt;/IteDescuentoPct&gt;
                    &lt;IteDescuentoMonto&gt;100&lt;/IteDescuentoMonto&gt;
                    &lt;IteMontoItem&gt;900.00&lt;/IteMontoItem&gt;
                &lt;/Item&gt;
                &lt;Item&gt;
                    &lt;CodItem&gt;
                        &lt;CodItemItem&gt;
                            &lt;IteCodiTpoCod&gt;INT1&lt;/IteCodiTpoCod&gt;
                            &lt;IteCodiCod&gt;GP-FIN-4PK-ALEX&lt;/IteCodiCod&gt;
                        &lt;/CodItemItem&gt;
                    &lt;/CodItem&gt;
                    &lt;IteIndFact&gt;3&lt;/IteIndFact&gt;
                    &lt;IteNomItem&gt;Nombre del Ítem 2&lt;/IteNomItem&gt;
                    &lt;IteDscItem&gt;Descripción Adicional del Ítem 2&lt;/IteDscItem&gt;
                    &lt;IteCantidad&gt;1&lt;/IteCantidad&gt;
                    &lt;IteUniMed&gt;UNID&lt;/IteUniMed&gt;
                    &lt;ItePrecioUnitario&gt;1000.00&lt;/ItePrecioUnitario&gt;
                    &lt;IteDescuentoPct&gt;10&lt;/IteDescuentoPct&gt;
                    &lt;IteDescuentoMonto&gt;100&lt;/IteDescuentoMonto&gt;
                    &lt;IteMontoItem&gt;900.00&lt;/IteMontoItem&gt;
                &lt;/Item&gt;
                &lt;Item&gt;
                    &lt;CodItem&gt;
                        &lt;CodItemItem&gt;
                            &lt;IteCodiTpoCod&gt;GTIN12&lt;/IteCodiTpoCod&gt;
                            &lt;IteCodiCod&gt;123456789104&lt;/IteCodiCod&gt;
                        &lt;/CodItemItem&gt;
                        &lt;CodItemItem&gt;
                            &lt;IteCodiTpoCod&gt;GTIN12&lt;/IteCodiTpoCod&gt;
                            &lt;IteCodiCod&gt;123456789128&lt;/IteCodiCod&gt;
                        &lt;/CodItemItem&gt;
                    &lt;/CodItem&gt;
                    &lt;IteIndFact&gt;1&lt;/IteIndFact&gt;
                    &lt;IteNomItem&gt;Nombre del Ítem 3&lt;/IteNomItem&gt;
                    &lt;IteDscItem&gt;Descripción Adicional del Ítem 3&lt;/IteDscItem&gt;
                    &lt;IteCantidad&gt;1&lt;/IteCantidad&gt;
                    &lt;IteUniMed&gt;UNID&lt;/IteUniMed&gt;
                    &lt;ItePrecioUnitario&gt;1000.00&lt;/ItePrecioUnitario&gt;
                    &lt;IteDescuentoPct&gt;10&lt;/IteDescuentoPct&gt;
                    &lt;IteDescuentoMonto&gt;100&lt;/IteDescuentoMonto&gt;
                    &lt;IteMontoItem&gt;900.00&lt;/IteMontoItem&gt;
                &lt;/Item&gt;
                &lt;Item&gt;
                    &lt;CodItem&gt;
                        &lt;CodItemItem&gt;
                            &lt;IteCodiTpoCod&gt;INT1&lt;/IteCodiTpoCod&gt;
                            &lt;IteCodiCod&gt;GP-FIN-4PK-ALEX&lt;/IteCodiCod&gt;
                        &lt;/CodItemItem&gt;
                    &lt;/CodItem&gt;
                    &lt;IteIndFact&gt;2&lt;/IteIndFact&gt;
                    &lt;IteNomItem&gt;Nombre del Ítem 4&lt;/IteNomItem&gt;
                    &lt;IteDscItem&gt;Descripción Adicional del Ítem 4&lt;/IteDscItem&gt;
                    &lt;IteCantidad&gt;1&lt;/IteCantidad&gt;
                    &lt;IteUniMed&gt;UNID&lt;/IteUniMed&gt;
                    &lt;ItePrecioUnitario&gt;1000.00&lt;/ItePrecioUnitario&gt;
                    &lt;IteDescuentoPct&gt;10&lt;/IteDescuentoPct&gt;
                    &lt;IteDescuentoMonto&gt;100&lt;/IteDescuentoMonto&gt;
                    &lt;IteMontoItem&gt;900.00&lt;/IteMontoItem&gt;
                    &lt;SubDescuento&gt;
                        &lt;SubDescuentoItem&gt;
                            &lt;SubDescDescTipo&gt;1&lt;/SubDescDescTipo&gt;
                            &lt;SubDescDescVal&gt;12.00&lt;/SubDescDescVal&gt;
                        &lt;/SubDescuentoItem&gt;
                    &lt;/SubDescuento&gt;
                &lt;/Item&gt;
            &lt;/Detalle&gt;
            &lt;MediosPago&gt;
                &lt;MediosPagoItem&gt;
                    &lt;MedPagNroLinMP&gt;1&lt;/MedPagNroLinMP&gt;
                    &lt;MedPagCodMP&gt;1&lt;/MedPagCodMP&gt;
                    &lt;MedPagGlosaMP&gt;MasterCard&lt;/MedPagGlosaMP&gt;
                    &lt;MedPagOrdenMP/&gt;
                    &lt;MedPagValorPago&gt;990.00&lt;/MedPagValorPago&gt;
                &lt;/MediosPagoItem&gt;
            &lt;/MediosPago&gt;
            &lt;Referencia&gt;
                &lt;ReferenciaItem&gt;
                    &lt;RefNroLinRef&gt;1&lt;/RefNroLinRef&gt;
                    &lt;RefIndGlobal/&gt;
                    &lt;RefTpoDocRef&gt;111&lt;/RefTpoDocRef&gt;
                    &lt;RefSerie&gt;A*&lt;/RefSerie&gt;
                    &lt;RefNroCFERef&gt;495&lt;/RefNroCFERef&gt;
                    &lt;RefRazonRef&gt;Razon de la Referencia&lt;/RefRazonRef&gt;
                    &lt;RefFechaCFEref&gt;2024-04-04&lt;/RefFechaCFEref&gt;
                &lt;/ReferenciaItem&gt;
                &lt;ReferenciaItem&gt;
                    &lt;RefNroLinRef&gt;2&lt;/RefNroLinRef&gt;
                    &lt;RefIndGlobal/&gt;
                    &lt;RefTpoDocRef&gt;111&lt;/RefTpoDocRef&gt;
                    &lt;RefSerie&gt;A%&lt;/RefSerie&gt;
                    &lt;RefNroCFERef&gt;498&lt;/RefNroCFERef&gt;
                    &lt;RefRazonRef&gt;Razon de la Referencia&lt;/RefRazonRef&gt;
                    &lt;RefFechaCFEref&gt;2024-05-10&lt;/RefFechaCFEref&gt;
                &lt;/ReferenciaItem&gt;
            &lt;/Referencia&gt;
        &lt;/CFEItem&gt;
    &lt;/CFE&gt;
&lt;/PreviaCFE&gt;</gx:Xmlrecepcao>
      </gx:WS_PreviaFactura.Execute>
   </soapenv:Body>
</soapenv:Envelope>

Al realizar una solicitud de envío de previa de CFE, la numeración y la serie serán asignadas al comprobante, dejándolo en estado "En digitación" dentro de InvoiCy.

Respuesta

A continuación se muestra la estructura del XML de respuesta generada.

<Xmlretorno><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<PreviaCFERetorno>
   <Encabezado>
      <EmpCodigo>1</EmpCodigo>
      <NroLinRetorno>1</NroLinRetorno>
      <MsgCod>0</MsgCod>
      <MsgDsc />
   </Encabezado>
   <ListaCFE>
      <CFE>
         <CFETipo>111</CFETipo>
         <CFESerie>QA</CFESerie>
         <CFENro>1834</CFENro>
         <CFEStatus>9</CFEStatus>
         <CFEEstadoAcuse>5</CFEEstadoAcuse>
         <CFEMsgCod>260</CFEMsgCod>
         <CFEMsgDsc>CFE en Digitación</CFEMsgDsc>
         <CFEXMLEE>https://mcpuy-dsv-gx18.migrate.info/KB_InvoiCyUY_IHML/hcfe022.aspx?gga17-bGUvuoFiyUlkEnRSVSSqQPTr</CFEXMLEE>
         <CFERepImpressa>"PDFBase64-"JVBERi0xLjQKJeLjz9MMMyAwIG9iago8PC9UeXBlIC9QYWdl...</CFERepImpressa>
         <CFENumReferencia>0</CFENumReferencia>
         <CFECodigoSeguridad />
         <Erros />
      </CFE>
   </ListaCFE>
</PreviaCFERetorno>]]></Xmlretorno>