pacs

class satcfdi.pacs.PAC(environment)[source]

Bases: object

RFC = None
status(cfdi: CFDI) dict[source]

Consulta el estado de un CFDI :return: Respuesta de la consulta

validate(cfdi: CFDI)[source]
issue(cfdi: ~satcfdi.cfdi.CFDI, accept: ~satcfdi.pacs.Accept = <Accept.XML: 1>) Document[source]

Operation to request CFDI be sealed and stamped by PAC :param accept: :param cfdi: :return:

stamp(cfdi: ~satcfdi.cfdi.CFDI, accept: ~satcfdi.pacs.Accept = <Accept.XML: 1>) 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: ~satcfdi.pacs.Accept = <Accept.XML: 1>) Document[source]
Parameters:
  • accept

  • document_id

Returns:

cancel(cfdi: CFDI, reason: CancelReason, substitution_id: str = None, signer: 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]

Operation to Cancel a Comprobante

cancel_retencion(cancelation: Cancelacion) CancelationAcknowledgment[source]

Operation to Cancel a Retencion

accept_reject(request: SolicitudAceptacionRechazo) AcceptRejectAcknowledgment[source]

Operation to Accept Reject a Cancellation Request

pending(rfc: str) list[str][source]

Operation to get pending cancellations

list_69b(rfc: str) TaxpayerStatus | None[source]

Operation to get list69b status

class satcfdi.pacs.Accept(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Flag

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
property cfdi: CFDI
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, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

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, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

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, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

PRODUCTION = 1
TEST = 2

Modules

satcfdi.pacs.comerciodigital

satcfdi.pacs.diverza

satcfdi.pacs.mysuite

satcfdi.pacs.prodigia

satcfdi.pacs.sat

satcfdi.pacs.swsapien