PACS
- class satcfdi.pacs.PAC(environment)[source]
Bases:
object- RFC = None
- issue(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:
- stamp(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request sealed CFDI be stamped by PAC :param accept: :param cfdi: :return: document_id and bytes of stamped xml
- recover(document_id: str, accept: Accept = Accept.XML) Document[source]
- Parameters
accept –
document_id –
- Returns
- cancel(cfdi: CFDI, reason: CancelReason, substitution_id: Optional[str] = None, signer: Optional[Signer] = None) CancelationAcknowledgment[source]
Operation to request single cfdi to be canceled :param signer: :param cfdi: :param substitution_id: :param reason: :return:
- cancel_comprobante(cancelation: Cancelacion) CancelationAcknowledgment[source]
- cancel_retencion(cancelation: Cancelacion) CancelationAcknowledgment[source]
- accept_reject(request: SolicitudAceptacionRechazo) AcceptRejectAcknowledgment[source]
- list_69b(rfc: str) TaxpayerStatus[source]
- class satcfdi.pacs.Accept(value)[source]
Bases:
FlagAn enumeration.
- NOTHING = 0
- XML = 1
- PDF = 2
- XML_PDF = 3
- class satcfdi.pacs.Document(document_id: str, xml: bytes = None, pdf: bytes = None)[source]
Bases:
object- document_id: str
- xml: bytes = None
- pdf: bytes = None
- class satcfdi.pacs.CancelationAcknowledgment(code: str | dict, acuse: bytes = None)[source]
Bases:
object- code: str | dict
- acuse: bytes = None
- class satcfdi.pacs.AcceptRejectAcknowledgment(folios: dict, acuse: bytes = None)[source]
Bases:
object- folios: dict
- acuse: bytes = None
- class satcfdi.pacs.CancelReason(value)[source]
Bases:
EnumAn enumeration.
- COMPROBANTE_EMITIDO_CON_ERRORES_CON_RELACION = '01'
– Comprobante emitido con errores con relación –
Este supuesto aplica cuando la factura generada contiene un error en la clave del producto, valor unitario, descuento o cualquier otro dato, por lo que se debe reexpedir. En este caso, primero se sustituye la factura y cuando se solicita la cancelación, se incorpora el folio de la factura que sustituye a la cancelada.
¿Qué debo hacer si uso el motivo de cancelación “01” Comprobantes emitidos con errores con relación y el comprobante no se cancela o presenta error?
Se podrá utilizar la clave 02 para realizar la cancelación de los CFDI relacionados incluyendo el que sustituye al CFDI a cancelar, esto con la finalidad de que no se genere un estatus de “No cancelable”
En los casos en los que subsista la operación, se deberá emitir un nuevo comprobante con la información correcta y la clave de tipo relación 04 sustitución de CFDI previos relacionando el folio fiscal del comprobante que se sustituye
- COMPROBANTE_EMITIDO_CON_ERRORES_SIN_RELACION = '02'
– Comprobante emitido con errores sin relación –
Este supuesto aplica cuando la factura generada contiene un error en la clave del producto, valor unitario, descuento o cualquier otro dato y no se requiera relacionar con otra factura generada.
- NO_SE_LLEVO_A_CABO_LA_OPERACION = '03'
– No se llevó a cabo la operación –
Este supuesto aplica cuando se facturó una operación que no se concreta.
- OPERACION_NORMATIVA_RELACIONADA_EN_LA_FACTURA_GLOBAL = '04'
– Operación nominativa relacionada en la factura global –
Este supuesto aplica cuando se incluye una venta en la factura global de operaciones con el público en general y posterior a ello, el cliente solicita su factura nominativa, lo que conlleva a cancelar la factura global y reexpedirla, así como generar la factura nominativa al cliente.
- class satcfdi.pacs.TaxpayerStatus(value)[source]
Bases:
EnumAn enumeration.
- PRESUNTO = 'Presunto'
Cuando la autoridad fiscal detecta que un contribuyente ha estado emitiendo comprobantes de manera irregular, se presumirá la inexistencia de las operaciones amparadas en tales comprobantes.
En este supuesto, procederá a notificar a los contribuyentes que se encuentren en dicha situación a través de su buzón tributario, de la página de internet del Servicio de Administración Tributaria, así como mediante una publicación en el Diario Oficial de la Federación.
- Type
PRESUNTO
- SENTENCIA_FAVORABLE = 'Sentencia Favorable'
El contribuyente tiene treinta días para acreditar que efectivamente sus operaciones son reales, si logra corregir su situación se publica este estado.
- Type
SENTENCIA FAVORABLE
- DEFINITIVO = 'Definitivo'
Si el contribuyente no atiende el llamado de la autoridad en quince días a partir de la última de las notificaciones o el contribuyente no pueda desvirtuar la existencia de sus operaciones se publica este estado.
- Type
DEFINITIVO
- DESVIRTUADO = 'Desvirtuado'
Cuando el contribuyente aporte a la autoridad fiscal la documentación e información que consideren pertinentes para desvirtuar los hechos que llevaron a notificarlos con un plazo de quince días contados a partir de la última de las notificaciones que se hayan efectuado.
- Type
DESVIRTUADO
- class satcfdi.pacs.Environment(value)[source]
Bases:
EnumAn enumeration.
- PRODUCTION = 1
- TEST = 2
Proveedores Autorizados de Certificación
- class satcfdi.pacs.comerciodigital.ComercioDigital(user: str, password: str, environment=Environment.PRODUCTION)[source]
Bases:
PAC- RFC = 'SCD110105654'
- issue(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:
- stamp(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request sealed CFDI be stamped by PAC :param accept: :param cfdi: :return: document_id and bytes of stamped xml
- cancel(cfdi: CFDI, reason: CancelReason, substitution_id: Optional[str] = None, signer: Optional[Signer] = None) CancelationAcknowledgment[source]
Operation to request single cfdi to be canceled :param signer: :param cfdi: :param substitution_id: :param reason: :return:
- class satcfdi.pacs.diverza.Diverza(rfc: str, id: str, token: str, environment=Environment.PRODUCTION)[source]
Bases:
PACClass to call Diverza API’s see https://diverza.docs.apiary.io/ for more information
- RCF = 'SNF171020F3A'
- issue(cfdi: CFDI, accept: Accept = Accept.XML, ref_id: Optional[str] = None) Document[source]
Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:
- stamp(cfdi: CFDI, accept: Accept = Accept.XML, ref_id: Optional[str] = None) Document[source]
Operation to request sealed CFDI be stamped by PAC :param accept: :param cfdi: :return: document_id and bytes of stamped xml
- cancel(cfdi: CFDI, reason: CancelReason, substitution_id: Optional[str] = None, signer: Optional[Signer] = None) CancelationAcknowledgment[source]
Operation to request single cfdi to be canceled :param signer: :param cfdi: :param substitution_id: :param reason: :return:
- class satcfdi.pacs.prodigia.Prodigia(user: str, password: str, contrato: str, environment=Environment.PRODUCTION)[source]
Bases:
PACPAC de facturacion Prodigia
Documentacion: https://www.prodigia.com.mx/api-de-integracion-para-timbrado-de-cfdi
- RFC = 'PPD101129EA3'
- issue(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:
- stamp(cfdi: CFDI, accept: Accept = Accept.XML) Document[source]
Operation to request sealed CFDI be stamped by PAC :param accept: :param cfdi: :return: document_id and bytes of stamped xml
- cancel(cfdi: CFDI, reason: CancelReason, substitution_id: Optional[str] = None, signer: Optional[Signer] = None) CancelationAcknowledgment[source]
Operation to request single cfdi to be canceled :param signer: :param cfdi: :param substitution_id: :param reason: :return:
- class satcfdi.pacs.swsapien.SWSapien(token=None, user=None, password=None, environment=Environment.PRODUCTION)[source]
Bases:
PACLuna Soft, S.A. de C.V. SW sapien-SmarterWEB
- RFC = 'LSO1306189R5'
- issue(cfdi: CFDI, accept: Accept = Accept.XML, ref_id: Optional[str] = None) Document[source]
Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:
- stamp(cfdi: CFDI, accept: Accept = Accept.XML, ref_id: Optional[str] = None) Document[source]
Operation to request sealed CFDI be stamped by PAC :param accept: :param cfdi: :return: document_id and bytes of stamped xml
- recover(document_id: str, accept: Accept = Accept.XML) Document[source]
- Parameters
accept –
document_id –
- Returns
- cancel(cfdi: CFDI, reason: CancelReason, substitution_id: Optional[str] = None, signer: Optional[Signer] = None) CancelationAcknowledgment[source]
Operation to request single cfdi to be canceled :param signer: :param cfdi: :param substitution_id: :param reason: :return:
- cancel_comprobante(cancelation: Cancelacion) CancelationAcknowledgment[source]
- cancel_retencion(cancelation: Cancelacion) CancelationAcknowledgment[source]
- accept_reject(request: SolicitudAceptacionRechazo) AcceptRejectAcknowledgment[source]
- list_69b(rfc: str) TaxpayerStatus[source]
sat
- class satcfdi.pacs.sat.EstadoSolicitud(value)[source]
Bases:
IntEnumAn enumeration.
- Aceptada = 1
- EnProceso = 2
- Terminada = 3
- Error = 4
- Rechazada = 5
- Vencida = 6
- class satcfdi.pacs.sat.TipoDescargaMasivaTerceros(value)[source]
Bases:
EnumAn enumeration.
- CFDI = 'CFDI'
- Metadata = 'Metadata'
- class satcfdi.pacs.sat.TipoDeComprobante(value)[source]
Bases:
EnumAn enumeration.
- Ingreso = 'I'
- Egreso = 'E'
- Traslado = 'T'
- Nomina = 'N'
- Pago = 'P'
- class satcfdi.pacs.sat.EstadoComprobante(value)[source]
Bases:
EnumAn enumeration.
- Cancelado = '0'
- Vigente = '1'
- class satcfdi.pacs.sat.SAT(signer: Optional[Signer] = None, environment=Environment.PRODUCTION)[source]
Bases:
PAC- RFC = 'SAT970701NN3'
- validate(cfdi: CFDI)[source]
verify if the CFDI is valid based on its signatures and certificates this method might need improvements :return: True is all certificate and signatures verifications passed
- list_69b(rfc: str) TaxpayerStatus[source]
- recover_comprobante_request(fecha_inicial: Optional[date] = None, fecha_final: Optional[date] = None, rfc_receptor: Optional[Union[str, Sequence[str]]] = None, rfc_emisor: Optional[str] = None, tipo_solicitud: satcfdi.pacs.sat.TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros.CFDI, tipo_comprobante: Optional[Union[TipoDeComprobante, str]] = None, estado_comprobante: Optional[Union[EstadoComprobante, str]] = None, rfc_a_cuenta_terceros: Optional[str] = None, complemento: Optional[str] = None, uuid: Optional[Union[str, UUID]] = None) dict[source]
Esta operación permite solicitar la descarga de CFDIs o Metadata y como resultado devuelve un id de solicitud o estatus de la petición realizada.
- Parameters
fecha_inicial – Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
fecha_final – Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
rfc_receptor – Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
rfc_emisor – Contiene el RFC del emisor del cual se quiere consultar los CFDI. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
tipo_solicitud – Define el tipo de descarga
tipo_comprobante – Define el tipo de comprobante
estado_comprobante – Define el estado del comprobante
rfc_a_cuenta_terceros – Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
complemento – Define el complemento de CFDI a descargar
uuid – Folio Fiscal
- Returns
respuesta de solicitud de descarga
- recover_comprobante_iwait(fecha_inicial: Optional[date] = None, fecha_final: Optional[date] = None, rfc_receptor: Optional[Union[str, Sequence[str]]] = None, rfc_emisor: Optional[str] = None, tipo_solicitud: satcfdi.pacs.sat.TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros.CFDI, tipo_comprobante: Optional[Union[TipoDeComprobante, str]] = None, estado_comprobante: Optional[Union[EstadoComprobante, str]] = None, rfc_a_cuenta_terceros: Optional[str] = None, complemento: Optional[str] = None, uuid: Optional[Union[str, UUID]] = None, id_solicitud: Optional[Union[str, UUID]] = None) Iterator[tuple[str, bytes]][source]
Itera sobre los paquetes obtenidos
- Parameters
fecha_inicial – Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
fecha_final – Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
rfc_receptor – Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
rfc_emisor – Contiene el RFC del emisor del cual se quiere consultar los CFDI. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
tipo_solicitud – Define el tipo de descarga
tipo_comprobante – Define el tipo de comprobante
estado_comprobante – Define el estado del comprobante
rfc_a_cuenta_terceros – Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
complemento – Define el complemento de CFDI a descargar
uuid – Folio Fiscal
id_solicitud – Si ya se cuenta con el id de una solicitud anterior, solo pasar este parametro
- Returns
Iterador sobre packetes y su contenido en bytes
- recover_retencion_request(fecha_inicial: Optional[date] = None, fecha_final: Optional[date] = None, rfc_receptor: Optional[Union[str, Sequence[str]]] = None, rfc_emisor: Optional[str] = None, tipo_solicitud: satcfdi.pacs.sat.TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros.CFDI, tipo_comprobante: Optional[Union[TipoDeComprobante, str]] = None, estado_comprobante: Optional[Union[EstadoComprobante, str]] = None, rfc_a_cuenta_terceros: Optional[str] = None, complemento: Optional[str] = None, uuid: Optional[Union[str, UUID]] = None) dict[source]
Esta operación permite solicitar la descarga de CFDIs o Metadata y como resultado devuelve un id de solicitud o estatus de la petición realizada.
- Parameters
fecha_inicial – Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
fecha_final – Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
rfc_receptor – Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
rfc_emisor – Contiene el RFC del emisor del cual se quiere consultar los CFDI. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
tipo_solicitud – Define el tipo de descarga
tipo_comprobante – Define el tipo de comprobante
estado_comprobante – Define el estado del comprobante
rfc_a_cuenta_terceros – Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
complemento – Define el complemento de CFDI a descargar
uuid – Folio Fiscal
- Returns
respuesta de solicitud de descarga
- recover_retencion_iwait(fecha_inicial: Optional[date] = None, fecha_final: Optional[date] = None, rfc_receptor: Optional[Union[str, Sequence[str]]] = None, rfc_emisor: Optional[str] = None, tipo_solicitud: satcfdi.pacs.sat.TipoDescargaMasivaTerceros | str = TipoDescargaMasivaTerceros.CFDI, tipo_comprobante: Optional[Union[TipoDeComprobante, str]] = None, estado_comprobante: Optional[Union[EstadoComprobante, str]] = None, rfc_a_cuenta_terceros: Optional[str] = None, complemento: Optional[str] = None, uuid: Optional[Union[str, UUID]] = None, id_solicitud: Optional[Union[str, UUID]] = None) Iterator[tuple[str, bytes]][source]
Itera sobre los paquetes obtenidos
- Parameters
fecha_inicial – Solo se buscarán CFDI, cuya fecha de emisión sea igual o mayor a la fecha inicial indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
fecha_final – Solo se buscarán CFDI, cuya fecha de emisión sea igual o menor a la fecha final indicada en este parámetro. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
rfc_receptor – Contiene el/los RFCs receptores de los cuales se quiere consultar los CFDIs Importante: El campo RfcReceptor, únicamente permite la captura de 5 registros como máximo
rfc_emisor – Contiene el RFC del emisor del cual se quiere consultar los CFDI. Parámetro obligatorio. Este parámetro no debe declararse en caso de realizar una consulta por el folio fiscal (UUID).
tipo_solicitud – Define el tipo de descarga
tipo_comprobante – Define el tipo de comprobante
estado_comprobante – Define el estado del comprobante
rfc_a_cuenta_terceros – Contiene el RFC del a cuenta a tercero del cual se quiere consultar los CFDIs
complemento – Define el complemento de CFDI a descargar
uuid – Folio Fiscal
id_solicitud – Si ya se cuenta con el id de una solicitud anterior, solo pasar este parametro
- Returns
Iterador sobre packetes y su contenido en bytes
- recover_certificate(no_certificado: str | int) Certificate[source]