Saltar a contenido

Integración con el Servicio Web de Validación de CFE

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

El servicio web de Validación de CFE (../aws_validacion.aspx) se puede hacer la validación de datos del comprobante previamente sin que InvoiCy lo haga la firma y el envio del comprobante para DGI. Desde este Web Service es possible verificar si el comprobante se rechazará y si no rechazar obtener una previsualización de la representación impresa.

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

Layout

Layout de Emisión de CFE. Download

Estructura de Envio

La estructura del XML de entrada de este servicio web está detallada en el layout de envío de emisión de CFE. A continuación, se muestra un ejemplo del SOAP donde dicho XML debe ser enviado, esta estructura también puede consultarse accediendo al WSDL en aws_validacion.aspx?WSDL.

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_Validacion.Execute>
         <gx:Xmlvalidacion><!--(1)--></gx:Xmlvalidacion>
      </gx:WS_Validacion.Execute>
   </soapenv:Body>
</soapenv:Envelope>
  1. Aquí estará tu XML de validación de CFE 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_Validacion.Execute>
         <gx:Xmlvalidacion>&lt;ValidacionCFE&gt;
    &lt;Encabezado&gt;
        &lt;EmpCodigo&gt;1&lt;/EmpCodigo&gt;
        &lt;EmpPK&gt;Clave del socio&lt;/EmpPK&gt;
        &lt;EmpCK&gt;Clave de comunicacion&lt;/EmpCK&gt;
    &lt;/Encabezado&gt;
    &lt;CFE&gt;
        &lt;CFEItem&gt;
            &lt;IdDoc&gt;
                &lt;CFETipoCFE&gt;111&lt;/CFETipoCFE&gt;
                &lt;CFESerie&gt;A&lt;/CFESerie&gt;
                &lt;CFENro/&gt;
                &lt;CFENumReferencia/&gt;
                &lt;CFEFchEmis&gt;2025-01-03&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;3&lt;/CFERepImpresa&gt;
                &lt;CFEImpFormato&gt;2&lt;/CFEImpFormato&gt;
                &lt;CFEInfAdicional&gt;Información adicional del Comprobante&lt;/CFEInfAdicional&gt;
                &lt;CFEMntBruto&gt;3&lt;/CFEMntBruto&gt;
                &lt;CFENombreLogo&gt;Logo InvoiCy&lt;/CFENombreLogo&gt;
                &lt;CFECAEEspecial&gt;2&lt;/CFECAEEspecial&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;gustavopaluchowski@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;receptoruy@gmail.com&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;40.04&lt;/TotTpoCambio&gt;
                &lt;TotMntNoGrv&gt;0.00&lt;/TotMntNoGrv&gt;
                &lt;TotMntTotal&gt;0.00&lt;/TotMntTotal&gt;
                &lt;TotMntTotRetenido/&gt;
                &lt;TotMontoNF&gt;900.00&lt;/TotMontoNF&gt;
                &lt;TotMntPagar&gt;900.00&lt;/TotMntPagar&gt;
                &lt;TotMntIVATasaBasica&gt;0.00&lt;/TotMntIVATasaBasica&gt;
                &lt;TotMntNetoIVATasaBasica&gt;0.00&lt;/TotMntNetoIVATasaBasica&gt;
                &lt;TotIVATasaBasica&gt;22&lt;/TotIVATasaBasica&gt;
                &lt;TotIVATasaMin&gt;10&lt;/TotIVATasaMin&gt;
                &lt;TotMntIVATasaMin&gt;0.00&lt;/TotMntIVATasaMin&gt;
                &lt;TotMntNetoIvaTasaMin&gt;0.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;6&lt;/IteIndFact&gt;
                    &lt;IteNomItem&gt;Nombre del Ítem&lt;/IteNomItem&gt;
                    &lt;IteDscItem&gt;Ítem 1 descripcion&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;/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;/ValidacionCFE&gt;</gx:Xmlvalidacion>
      </gx:WS_Validacion.Execute>
   </soapenv:Body>
</soapenv:Envelope>

Al requerir el servicio web, se solicita los datos que quiere consultar conforme la estructura definida. En caso de falla, se responde con el código y el mensaje de error.

Respuesta

A continuación, se muestra un ejemplo de la respuesta del servicio web.

<Xmlretorno>
  <![CDATA[
  <ValidacionCFERetorno>
    <Encabezado>
      <EmpCodigo>Código de la Empresa</EmpCodigo>
      <NroLinRetorno>Cantidad de CFE retornados</NroLinRetorno>
      <MsgCod>Codigo del Mensage de retorno del Envio</MsgCod>
      <MsgDsc>Mensaje de retorno del Envio</MsgDsc>
    </Encabezado>
    <ListaCFE>
      <CFE>
        <CFETipoCFE>Tipo CFE</CFETipoCFE>
        <CFESerie>Serie del Comprobante</CFESerie>
        <CFENro>Numero de Comprobante</CFENro>
        <CFEStatus>Estado del CFE</CFEStatus>
        <CFEMsgCod>Codigo del mensage de retorno del CFE</CFEMsgCod>
        <CFEMsgDsc>Mensaje de retorno del CFE</CFEMsgDsc>
        <CFERepImpressa>Representación Impresa</CFERepImpressa>
        <Erros>
          <ErrosItem>
            <CFEErrCod>Codigo del Erro</CFEErrCod>
            <CFEErrDesc>Mensajem del Erro</CFEErrDesc>
          </ErrosItem>
        </Erros>
        <ErrosDGI>
          <ErrosDGIItem>
            <CFERetCod>Codigo del Erro</CFERetCod>
            <CFERetDesc>Mensajem del Erro</CFERetDesc>
          </ErrosDGIItem>
        </ErrosDGI>
      </CFE>
    </ListaCFE>
  </ValidacionCFERetorno>]]>
</Xmlretorno>