This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

CFDI Python Library

This library helps to make Mexico CFDI invoice.

Is in early stage.

Installation

From PyPI

pip install cfdi

From local source

git clone https://github.com/Jarsa/cfdi.git
cd cfdi
pip install .

From remote source

pip install git+https://github.com/Jarsa/cfdi.git

How to use it?

To generate XML you only need to call create method.

import cfdi
invoice = cfdi.invoice()
xml = invoice.create(data)

First you need to make a dictionary with invoice data like this:

data = {
    'Atributos': {
        'serie': 'A',  # Optional
        'folio': '12345',  # Optional
        'fecha': 'aaaa-mm-ddThh:mm:ss',  # ISO 8601
        'sello': '',  # Generated with this lib.
        'formaDePago': 'Pago en una sola exhibicion',  # Pago en una sola exhibición o número de parcialidad pagada contra el total de parcialidades, Parcialidad 1 de X.
        'noCertificado': '',  # Generated with this lib.
        'certificado': '',  # Generated with tis lib.
        'condicionesDePago': '',  # Optional
        'subTotal': '100.00',
        'descuento': '0.0',  # Optional
        'motivoDescuento': '',  # Optional
        'TipoCambio': '1.0',  # Optional
        'Moneda': 'MXN',  # Optional
        'total': '116.00',
        'tipoDeComprobante': 'ingreso',  # ingreso egreso traslado
        'metodoDePago': 'NA',  # See catalog in SAT.
        'LugarExpedicion': 'Torreon Coahuila, Mexico',
        'NumCtaPago': '1234',  # Optional
        'FolioFiscalOrig': '',  # Optional
        'SerieFolioFiscalOrig': '',   # Optional
        'FechaFolioFiscalOrig': 'aaaa-mm-ddThh:mm:ss',  # Optional ISO 8601
        'MontoFolioFiscalOrig': '0.00',  # Optional
    },
    'Emisor': {
        'rfc': 'JSI140527TS9',
        'nombre': 'Jarsa Sistemas, S.A. de C.V.',  # Optional
        'DomicilioFiscal': {
            'calle': 'Calle',
            'noExterior': '49',  # Optional
            'noInterior': '',  # Optional
            'colonia': 'Colonia',  # Optional
            'localidad': 'Torreon',  # Optional
            'referencia': 'Referencia',  # Optional
            'municipio': 'Torreon',
            'estado': 'Coahuila',
            'pais': 'Mexico',
            'codigoPostal': '27200',
        },
        'ExpedidoEn': {
            'calle': 'Calle',  # Optional
            'noExterior': '49',  # Optional
            'noInterior': '',  # Optional
            'colonia': 'Colonia',  # Optional
            'localidad': 'Torreon',  # Optional
            'referencia': 'Referencia',  # Optional
            'municipio': 'Torreon',  # Optional
            'estado': 'Coahuila',  # Optional
            'pais': 'Mexico',  # Optional
            'codigoPostal': '27200',  # Optional
        },
        'RegimenFiscal': 'Parsona Fisica con Actividad Empresarial',
    },
    'Receptor': {
        'rfc': 'XAXX010101000',
        'nombre': 'Cliente',  # Optional
        'Domicilio': {
            'calle': 'Calle',  # Optional
            'noExterior': '50',  # Optional
            'noInterior': '',  # Optional
            'colonia': 'Colonia',  # Optional
            'localidad': 'Torreon',  # Optional
            'referencia': 'Referencia',  # Optional
            'municipio': 'Torreon',  # Optional
            'estado': 'Coahuila',  # Optional
            'pais': 'Mexico',  # Optional
            'codigoPostal': '27200',  # Optional
        },
    },
    'Conceptos': [
        {
            'cantidad': '1.0',
            'unidad': 'pieza',
            'noIdentificacion': 'A123',  # Reference or serial no. Optional
            'descripcion': '',  # Optional
            'valorUnitario': '100.00',
            'importe': '100.00',
            'InformacionAduanera': {
                'numero': '',
                'fecha': '',
                'aduana': '',  # Optional
            },
            'CuentaPredial': {
                'numero': '',
            },
            'Parte': [
                {
                    'cantidad': '1.0',
                    'unidad': 'pieza',  # Optional
                    'noIdentificacion': '',  # Optional
                    'descripcion': '',
                    'valorUnitario': '0.0',  # Optional
                    'importe': '0.0',  # Optional
                    'InformacionAduanera': {
                        'numero': '',
                        'fecha': '',
                        'aduana': '',  # Optional
                    }

                },
            ],
        },
    ],
    'Impuestos': {
        'totalImpuestosRetenidos': '0.0',  # Optional
        'totalImpuestosTrasladados': '16.0',  # Optional
        'Retenciones': [
            {
                'impuesto': '',  # IVA ISR
                'importe': '0.00',

            },
        ],
        'Traslados': [
            {
                'impuesto': 'IVA',  # IVA IEPS
                'tasa': '16.00',
                'importe': '16.00',
            },
        ],
    },

}

Known issues / Roadmap

  • Sign the XML.
  • Generate drivers framework to allow different PAC’s.
  • Hability to create Addendas.
  • Test & document everything.
  • Compatibility to CFDI v3.3.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback here.

Credits

Contributors

Maintainer

This package is maintained by Jarsa Sistemas, S.A. de C.V.

Release History

Release History

1.0.0.dev1

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting