documentación del servicio de consulta de cfdi

15
Documentación del Servicio de Consulta de CFDI Versión 1.3 Fecha: noviembre 2020

Upload: others

Post on 27-Jun-2022

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Documentación del Servicio de Consulta de CFDI

Documentación del Servicio de Consulta de

CFDI

Versión 1.3

Fecha: noviembre 2020

Page 2: Documentación del Servicio de Consulta de CFDI

Tabla de Contenido

1 Descripción .................................................................................................................. 3

2 Contrato ....................................................................................................................... 4

3 Mensajes de Respuesta ......................................................................................... 10

Mensajes de Rechazo. ....................................................................................... 10

Mensajes de Aceptación. .................................................................................. 10

Mensajes de validación del RFC Emisor. .................................................... 10

4 Ejemplo de Implementación ............................................................................... 12

5 Capacidad de respuesta ........................................................................................ 15

Page 3: Documentación del Servicio de Consulta de CFDI

1. Descripción El Servicio de consulta de CFDI´s se diseñó para permitir la validación accediendo a un servicio publicado en la página del SAT, el servicio pretende proveer una alternativa de consulta que requiera verificar el estado de un comprobante en las Bases de Datos del SAT.

Page 4: Documentación del Servicio de Consulta de CFDI

2. Contrato

URL: https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc

WSDL ConsultaCFDIService.svc?wsdl

WSDL location: https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl targetnamespace http://tempuri.org

services bindings porttypes messages types

ConsultaCFDIService

BasicHttpBinding_ICon sultaCFDIService

IConsultaCF DIService

IConsultaCFDIService_Cons ulta_InputMessage

expresionimpresa

IConsultaCFDIService_Cons ulta_OutputMessage

Acuse

anyType anyURI base64Bin ary boolean byte char char Consulta ConsultaR esponse dateTime decimal double duration duration float guid guid int long QName short string unsignedB yte unsignedI nt unsignedL ong unsignedS hort

Page 5: Documentación del Servicio de Consulta de CFDI

service ConsultaCFDIService

diagra m

ports BasicHttpBinding_IConsultaCFDIService

binding tns:BasicHttpBinding_IConsultaCFDIService

extensibility <soap:address location="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDISer vice.svc"/>

source <wsdl:service name="ConsultaCFDIService"> <wsdl:port name="BasicHttpBinding_IConsultaCFDIService" binding="tns:BasicHttpBinding_IConsultaCFDIService"> <soap:address location="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc"/> </wsdl:port> </wsdl:service>

binding BasicHttpBinding_IConsultaCFDIService

diagram

type tns:IConsultaCFDIService

extensibility <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>

operations Consulta extensibility <soap:operation

soapAction="http://tempuri.org/IConsultaCFDIService/Consulta" style="document"/>

input <soap:body use="literal"/>

output <soap:body use="literal"/>

used by Port BasicHttpBinding_IConsultaCFDIService in Service ConsultaCFDIService

source <wsdl:binding name="BasicHttpBinding_IConsultaCFDIService" type="tns:IConsultaCFDIService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsp:PolicyReference URI="#BasicHttpBinding_IConsultaCFDIService_policy"/> <wsdl:operation name="Consulta"> <soap:operation soapAction="http://tempuri.org/IConsultaCFDIService/Consulta" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding>

Page 6: Documentación del Servicio de Consulta de CFDI

porttype IConsultaCFDIService

diagram

operations Consulta

input tns:IConsultaCFDIService_Consulta_InputMessage

output tns:IConsultaCFDIService_Consulta_OutputMessage

used by binding BasicHttpBinding_IConsultaCFDIService

source <wsdl:portType name="IConsultaCFDIService"> <wsdl:operation name="Consulta"> <wsdl:input message="tns:IConsultaCFDIService_Consulta_InputMessage" wsaw:Action="http://tempuri.org/IConsultaCFDIService/Consulta"/> <wsdl:output message="tns:IConsultaCFDIService_Consulta_OutputMessage" wsaw:Action="http://tempuri.org/IConsultaCFDIService/ConsultaResponse"/> </wsdl:operation> </wsdl:portType>

message IConsultaCFDIService_Consulta_InputMessage

parts parameters

element tns:Consulta

used by Operation Consulta in PortType IConsultaCFDIService

source <wsdl:message name="IConsultaCFDIService_Consulta_InputMessage"> <wsdl:part name="parameters" element="tns:Consulta"/> </wsdl:message>

message IConsultaCFDIService_Consulta_OutputMessage

parts parameters

element tns:ConsultaResponse

used by Operation Consulta in PortType IConsultaCFDIService

source <wsdl:message name="IConsultaCFDIService_Consulta_OutputMessage"> <wsdl:part name="parameters" element="tns:ConsultaResponse"/> </wsdl:message>

element Consulta

diagram

namespace http://tempuri.org/

properties content complex

Page 7: Documentación del Servicio de Consulta de CFDI

children tns:expresionImpresa

source <xsd:element name="Consulta"> <xsd:complexType> <xsd:sequence> <xsd:element name="expresionImpresa" type="xs:string" nillable="true" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element>

element ConsultaResponse

diagram

namespace http://tempuri.org/

properties content complex

children tns:ConsultaResult

source <xsd:element name="ConsultaResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="ConsultaResult" type="q1:Acuse" nillable="true" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element>

CODIGO

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/"

xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"

xmlns:wsa10="http://www.w3.org/2005/08/addressing"

xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"

xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"

xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"

xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-

open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ConsultaCFDIService"

targetNamespace="http://tempuri.org/">

<script />

<wsp:Policy wsu:Id="BasicHttpBinding_IConsultaCFDIService_policy">

<wsp:ExactlyOne>

<wsp:All>

<sp:TransportBinding

xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

<wsp:Policy>

<sp:TransportToken>

<wsp:Policy>

<sp:HttpsToken RequireClientCertificate="false" />

</wsp:Policy>

</sp:TransportToken>

<sp:AlgorithmSuite>

<wsp:Policy>

<sp:Basic256 />

</wsp:Policy>

Page 8: Documentación del Servicio de Consulta de CFDI

</sp:AlgorithmSuite>

<sp:Layout>

<wsp:Policy>

<sp:Strict />

</wsp:Policy>

</sp:Layout>

</wsp:Policy>

</sp:TransportBinding>

</wsp:All>

</wsp:ExactlyOne>

</wsp:Policy>

<wsdl:types>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"

elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

<xs:import

schemaLocation="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?xsd=xsd

2" namespace="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio" />

<xs:element name="Consulta">

<xs:complexType>

<xs:sequence>

<xs:element minOccurs="0" name="expresionImpresa" nillable="true"

type="xs:string" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="ConsultaResponse">

<xs:complexType>

<xs:sequence>

<xs:element

xmlns:q1="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"

minOccurs="0" name="ConsultaResult" nillable="true" type="q1:Acuse" />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified"

elementFormDefault="qualified"

targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/">

<script />

<xs:element name="anyType" nillable="true" type="xs:anyType" />

<xs:element name="anyURI" nillable="true" type="xs:anyURI" />

<xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />

<xs:element name="boolean" nillable="true" type="xs:boolean" />

<xs:element name="byte" nillable="true" type="xs:byte" />

<xs:element name="dateTime" nillable="true" type="xs:dateTime" />

<xs:element name="decimal" nillable="true" type="xs:decimal" />

<xs:element name="double" nillable="true" type="xs:double" />

<xs:element name="float" nillable="true" type="xs:float" />

<xs:element name="int" nillable="true" type="xs:int" />

<xs:element name="long" nillable="true" type="xs:long" />

<xs:element name="QName" nillable="true" type="xs:QName" />

<xs:element name="short" nillable="true" type="xs:short" />

<xs:element name="string" nillable="true" type="xs:string" />

<xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />

<xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />

<xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />

<xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />

<xs:element name="char" nillable="true" type="tns:char" />

<xs:simpleType name="char">

<xs:restriction base="xs:int" />

</xs:simpleType>

<xs:element name="duration" nillable="true" type="tns:duration" />

<xs:simpleType name="duration">

<xs:restriction base="xs:duration">

<xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />

<xs:minInclusive value="-P10675199DT2H48M5.4775808S" />

<xs:maxInclusive value="P10675199DT2H48M5.4775807S" />

</xs:restriction>

</xs:simpleType>

<xs:element name="guid" nillable="true" type="tns:guid" />

Page 9: Documentación del Servicio de Consulta de CFDI

<xs:simpleType name="guid">

<xs:restriction base="xs:string">

<xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-

F]{4}-[\da-fA-F]{12}" />

</xs:restriction>

</xs:simpleType>

<xs:attribute name="FactoryType" type="xs:QName" />

<xs:attribute name="Id" type="xs:ID" />

<xs:attribute name="Ref" type="xs:IDREF" />

</xs:schema>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:tns="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"

elementFormDefault="qualified"

targetNamespace="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"

>

<script />

<xs:complexType name="Acuse">

<xs:sequence>

<xs:element minOccurs="0" name="CodigoEstatus" nillable="true"

type="xs:string"/>

<xs:element minOccurs="0" name="EsCancelable" nillable="true"

type="xs:string"/>

<xs:element minOccurs="0" name="Estado" nillable="true" type="xs:string"/>

<xs:element minOccurs="0" name="EstatusCancelacion" nillable="true"

type="xs:string"/>

<xs:element minOccurs="0" name="ValidacionEFOS" nillable="true"

type="xs:string"/>

</xs:sequence>

</xs:complexType>

<xs:element name="Acuse" nillable="true" type="tns:Acuse" />

</xs:schema>

</wsdl:types>

<wsdl:message name="IConsultaCFDIService_Consulta_InputMessage">

<wsdl:part name="parameters" element="tns:Consulta" />

</wsdl:message>

<wsdl:message name="IConsultaCFDIService_Consulta_OutputMessage">

<wsdl:part name="parameters" element="tns:ConsultaResponse" />

</wsdl:message>

<wsdl:portType name="IConsultaCFDIService">

<wsdl:operation name="Consulta">

<wsdl:input wsaw:Action="http://tempuri.org/IConsultaCFDIService/Consulta"

message="tns:IConsultaCFDIService_Consulta_InputMessage" />

<wsdl:output wsaw:Action="http://tempuri.org/IConsultaCFDIService/ConsultaResponse"

message="tns:IConsultaCFDIService_Consulta_OutputMessage" />

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="BasicHttpBinding_IConsultaCFDIService" type="tns:IConsultaCFDIService">

<wsp:PolicyReference URI="#BasicHttpBinding_IConsultaCFDIService_policy" />

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="Consulta">

<soap:operation soapAction="http://tempuri.org/IConsultaCFDIService/Consulta"

style="document" />

<wsdl:input>

<soap:body use="literal" />

</wsdl:input>

<wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="ConsultaCFDIService">

<wsdl:port name="BasicHttpBinding_IConsultaCFDIService"

binding="tns:BasicHttpBinding_IConsultaCFDIService">

<soap:address

location="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Page 10: Documentación del Servicio de Consulta de CFDI

3. Mensajes de Respuesta

Los mensajes de respuesta que arroja el servicio de consulta de CFDI´s incluyen la descripción del resultado de la operación que corresponden a la siguiente clasificación:

Mensajes de Rechazo. N 601: La expresión impresa proporcionada no es válida.

Este código de respuesta se presentará cuando la petición de validación no se haya respetado en el formato definido.

N 602: Comprobante no encontrado.

Este código de respuesta se presentará cuando el UUID del comprobante no se encuentre en la Base de Datos del SAT.

Mensajes de Aceptación. S Comprobante obtenido satisfactoriamente.

Mensajes de validación del RFC Emisor

Código= 100

Este código de respuesta se presentará cuando la validación del RFC Emisor del CFDI se encuentre dentro de la lista de Empresa que Factura Operaciones Simuladas (EFOS), por lo tanto, los usuarios finales lo deberán relacionar al siguiente mensaje:

El emisor de la factura verificada, se encuentra publicado en la lista de empresas que facturan operaciones simuladas de conformidad con los párrafos primero al quinto del Artículo 69-B del CFF.

Consulta aquí la fecha en que se publicó la empresa en el listado de definitivas. Recuerda que, de conformidad con lo dispuesto por el octavo párrafo del artículo 69-B del CFF, si eres el receptor del comprobante consultado y le has dado efectos fiscales, cuentas con 30 días contados a partir de la fecha de publicación en la lista, para comprobar ante el SAT la realización de las operaciones que amparan los citados comprobantes fiscales, o bien puedes en el mismo plazo, corregir tu situación fiscal mediante la presentación de las declaraciones complementarias que correspondan, para no considerar esos comprobantes.

Para mayor información ingresa aquí.

Page 11: Documentación del Servicio de Consulta de CFDI

URL de los Vínculos:

http://omawww.sat.gob.mx/cifras_sat/Paginas/datos/vinculo.html?page=ListCompleta69B.html

https://www.sat.gob.mx/consultas/76675/consulta-la-relacion-de-contribuyentes-que-realizan-operaciones-inexistentes

Código=200

Este código de respuesta se presentará cuando la validación del RFC Emisor del CFDI no se encuentre dentro de la lista de Empresa que Factura Operaciones Simuladas (EFOS).

Page 12: Documentación del Servicio de Consulta de CFDI

4. Ejemplo de Implementación

namespace Sat.Cfdi.Negocio.ConsultaCfdi.Servicio { using System.Runtime.Serialization; using System; [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="Acuse", Namespace="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio")] [System.SerializableAttribute()] public partial class Acuse : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { [System.NonSerializedAttribute()] private System.Runtime.Serialization.ExtensionDataObject extensionDataField; [System.Runtime.Serialization.OptionalFieldAttribute()] private string CodigoEstatusField; [System.Runtime.Serialization.OptionalFieldAttribute()] private string EsCancelableField; [System.Runtime.Serialization.OptionalFieldAttribute()] private string EstadoField; [System.Runtime.Serialization.OptionalFieldAttribute()] private string EstatusCancelacionField; [System.Runtime.Serialization.OptionalFieldAttribute ()] private string ValidacionEFOSField; [global::System.ComponentModel.BrowsableAttribute(false)] public System.Runtime.Serialization.ExtensionDataObject ExtensionData { get { return this.extensionDataField; } set { this.extensionDataField = value; } } [System.Runtime.Serialization.DataMemberAttribute()] public string CodigoEstatus { get { return this.CodigoEstatusField; } set { if ((object.ReferenceEquals(this.CodigoEstatusField, value) != true)) { this.CodigoEstatusField = value; this.RaisePropertyChanged("CodigoEstatus"); }

Page 13: Documentación del Servicio de Consulta de CFDI

} } [System.Runtime.Serialization.DataMemberAttribute()] public string EsCancelable { get { return this.EsCancelableField; } set { if ((object.ReferenceEquals(this.EsCancelableField, value) != true)) { this.EsCancelableField = value; this.RaisePropertyChanged("EsCancelable"); } } } [System.Runtime.Serialization.DataMemberAttribute()] public string Estado { get { return this.EstadoField; } set { if ((object.ReferenceEquals(this.EstadoField, value) != true)) { this.EstadoField = value; this.RaisePropertyChanged("Estado"); } } } [System.Runtime.Serialization.DataMemberAttribute()] public string EstatusCancelacion { get { return this.EstatusCancelacionField; } set { if ((object.ReferenceEquals(this.EstatusCancelacionField, value) != true)) { this.EstatusCancelacionField = value; this.RaisePropertyChanged("EstatusCancelacion"); } } } [System.Runtime.Serialization.DataMemberAttribute ()] public string ValidacionEFOS { get { return this.ValidacionEFOSField; } set { if ((object.ReferenceEquals(this.ValidacionEFOSField, value) != true)) { this.ValidacionEFOSField = value; this.RaisePropertyChanged("ValidacionEFOS"); } } } public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

Page 14: Documentación del Servicio de Consulta de CFDI

protected void RaisePropertyChanged(string propertyName) { System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if ((propertyChanged != null)) { propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); } } } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ConsultaCFDIService.IConsultaCFDIService")] public interface IConsultaCFDIService { [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IConsultaCFDIService/Consulta", ReplyAction="http://tempuri.org/IConsultaCFDIService/ConsultaResponse")] QRConsola.ConsultaCFDIService.Acuse Consulta(string expresionImpresa); [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IConsultaCFDIService/Consulta", ReplyAction="http://tempuri.org/IConsultaCFDIService/ConsultaResponse")] System.Threading.Tasks.Task<QRConsola.ConsultaCFDIService.Acuse> ConsultaAsync(string expresionImpresa); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] public interface IConsultaCFDIServiceChannel : QRConsola.ConsultaCFDIService.IConsultaCFDIService, System.ServiceModel.IClientChannel { } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] public partial class ConsultaCFDIServiceClient : System.ServiceModel.ClientBase<QRConsola.ConsultaCFDIService.IConsultaCFDIService>, QRConsola.ConsultaCFDIService.IConsultaCFDIService { public ConsultaCFDIServiceClient() { } public ConsultaCFDIServiceClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public ConsultaCFDIServiceClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public ConsultaCFDIServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { }

Page 15: Documentación del Servicio de Consulta de CFDI

public ConsultaCFDIServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public QRConsola.ConsultaCFDIService.Acuse Consulta(string expresionImpresa) { return base.Channel.Consulta(expresionImpresa); } public System.Threading.Tasks.Task<QRConsola.ConsultaCFDIService.Acuse> ConsultaAsync(string expresionImpresa) { return base.Channel.ConsultaAsync(expresionImpresa); } } }

5. Capacidad de respuesta El servicio de Consulta de CFDI´s tiene la capacidad de atender hasta 2 millones de consultas por hr., debido a que estas consultas acceden las Bases de Datos transaccionales del SAT se solicita no aumentar la cantidad de consultas por hora para evitar impactos en la respuesta del servicio.