# Factura Com Librería
Librería Python para interactuar con la API de Factura.com.
Mas detalles en [Factura.com](https://factura.com/)
## Instalación
Puedes instalar la librería utilizando pip:
```bash
pip install factura-com-library
```
## Uso/Ejemplos
### Configuracion Inicial
```python
from factura_com.api import FacturaComClient
api_key = "TU_API_KEY"
secret_key = "TU_SECRET_KEY"
sandbox_url = "https://sandbox.factura.com/api/v4"
live_url = "https://api.factura.com/api/v4"
client = FacturaComClient(api_key, secret_key, url=sandbox_url)
```
Utilizar la url sandbox para hacer pruebas ó live para producción.
### Obtener una lista de facturas
```python
from factura_com.api import FacturaComClient
api_key = "TU_API_KEY"
secret_key = "TU_SECRET_KEY"
sandbox_url = "https://sandbox.factura.com/api/v4"
live_url = "https://api.factura.com/api/v4"
client = FacturaComClient(api_key, secret_key, url=sandbox_url)
# Obtener una lista de facturas para un año y RFC específicos
invoice_list = client.get_invoice_list(year=2024, rfc='XAXX010101000')
print(invoice_list)
```
Obtener todas las facturas pasando como parametro el RFC o Año.
Parametros:
- month (int, opcional): El número de mes que deseas consultar (por ejemplo, 01 para enero).
- year (int, opcional): El año que deseas consultar (por ejemplo, 2024).
- rfc (str, opcional): El RFC para filtrar las facturas.
- type_document (str, opcional): El tipo de CFDI para listar solo las facturas de ese tipo.
- page (int, opcional): El número de página a consultar. Por defecto, es la página 1.
- per_page (int, opcional): El límite de resultados por página. Por defecto, retorna 100 registros.
### Obtener una factura por UID
```python
# Obtener una factura por UID
invoice_by_uid = client.get_invoice_by_uid(uid='55c0fdc67593d')
print(invoice_by_uid)
```
Obtener una factura en específico pasando como parametro el uid.
- uid (str): El UID de la factura que se desea obtener.
### Crear una nueva factura versión 4.0
```python
invoice_data = {
"Receptor": {
"ResidenciaFiscal": "",
"UID": "55c0fdc67593d"
},
"TipoDocumento": "factura",
"BorradorSiFalla": "1",
"Draft": "1",
"Conceptos": [
{
"ClaveProdServ": "43232408",
"NoIdentificacion": "0021",
"Cantidad": "1.000000",
"ClaveUnidad": "E48",
"Unidad": "Unidad de servicio",
"Descripcion": "Desarrollo web a la medida",
"ValorUnitario": "15000.000000",
"Importe": "15000.000000",
"Descuento": "0",
"Impuestos": {
"Traslados": [
{
"Base": "15000.000000",
"Impuesto": "002",
"TipoFactor": "Tasa",
"TasaOCuota": "0.16",
"Importe": "2400.000000"
}
],
"Retenidos": [],
"Locales": []
}
}
],
"UsoCFDI": "G01",
"Serie": 1247,
"FormaPago": "01",
"MetodoPago": "PUE",
"CondicionesDePago": "Pago en 9 meses",
"CfdiRelacionados": {
"TipoRelacion": "01",
"UUID": [
"29c98cb2-f72a-4cbe-a297-606da335e187",
"a96f6b9a-70aa-4f2d-bc5e-d54fb7371236"
]
},
"Moneda": "MXN",
"TipoCambio": "19.85",
"NumOrder": "85abf36",
"Fecha": "2020-03-20T12:53:23",
"Comentarios": "El pedido aún no es entregado",
"Cuenta": "0025",
"EnviarCorreo": "true",
"LugarExpedicion": "12345"
}
created_invoice = client.create_invoice_4_0(invoice_data)
```
Primeramente se tiene que crear un diccionario.
Parametros:
- invoice_data (dict): Los datos de la factura a crear.
### Obtener el PDF de una factura
```python
# Obtener el PDF de una factura por su UID ó UUID
pdf_data = client.get_invoice_pdf(cfdi_uuid='55c0fdc67593d')
```
### Obtener el XML de una factura
```python
# Obtener el XML de una factura por su UID ó UUID
xml_data = client.get_invoice_xml(cfdi_uuid='55c0fdc67593d')
```
### Cancelar una factura
Para tener mas detalles de los tipos de motivo, hacer clic [aquí](https://factura.com/apidocs/cancelar-cfdi-40.html)
```python
# Cancelar una factura por su UUID
cancel_result = client.cancel_invoice(cfdi_uuid='55c0fdc67593d', motivo='01', folio_sustituto='3336cbb9-ebd4-45e8-b60b-e7bfa6f6b5e0')
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Lexharden",
"name": "factura-com-library",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "factura,factura.com,API,facturaci\u00f3n electr\u00f3nica,M\u00e9xico,CFDI,Timbrado",
"author": "Alexis Yafel Garcia",
"author_email": "a.yafel10@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/86/39/2613e0d6d943f65800d0853caa8bd1b8a1ddcd3fd9c8e669c2a25aa2f233/factura_com_library-0.0.4.tar.gz",
"platform": null,
"description": "# Factura Com Librer\u00eda\n\nLibrer\u00eda Python para interactuar con la API de Factura.com.\nMas detalles en [Factura.com](https://factura.com/)\n## Instalaci\u00f3n\n\nPuedes instalar la librer\u00eda utilizando pip:\n\n```bash\npip install factura-com-library\n```\n\n## Uso/Ejemplos\n### Configuracion Inicial\n```python\nfrom factura_com.api import FacturaComClient\n\napi_key = \"TU_API_KEY\"\nsecret_key = \"TU_SECRET_KEY\"\nsandbox_url = \"https://sandbox.factura.com/api/v4\"\nlive_url = \"https://api.factura.com/api/v4\"\n\nclient = FacturaComClient(api_key, secret_key, url=sandbox_url)\n```\n\nUtilizar la url sandbox para hacer pruebas \u00f3 live para producci\u00f3n.\n\n### Obtener una lista de facturas\n```python\nfrom factura_com.api import FacturaComClient\n\napi_key = \"TU_API_KEY\"\nsecret_key = \"TU_SECRET_KEY\"\nsandbox_url = \"https://sandbox.factura.com/api/v4\"\nlive_url = \"https://api.factura.com/api/v4\"\n\nclient = FacturaComClient(api_key, secret_key, url=sandbox_url)\n\n# Obtener una lista de facturas para un a\u00f1o y RFC espec\u00edficos\n\ninvoice_list = client.get_invoice_list(year=2024, rfc='XAXX010101000')\n\nprint(invoice_list)\n```\n\nObtener todas las facturas pasando como parametro el RFC o A\u00f1o.\nParametros:\n- month (int, opcional): El n\u00famero de mes que deseas consultar (por ejemplo, 01 para enero).\n- year (int, opcional): El a\u00f1o que deseas consultar (por ejemplo, 2024).\n- rfc (str, opcional): El RFC para filtrar las facturas.\n- type_document (str, opcional): El tipo de CFDI para listar solo las facturas de ese tipo.\n- page (int, opcional): El n\u00famero de p\u00e1gina a consultar. Por defecto, es la p\u00e1gina 1.\n- per_page (int, opcional): El l\u00edmite de resultados por p\u00e1gina. Por defecto, retorna 100 registros.\n\n### Obtener una factura por UID\n```python\n# Obtener una factura por UID\n\ninvoice_by_uid = client.get_invoice_by_uid(uid='55c0fdc67593d')\n\nprint(invoice_by_uid)\n```\n\nObtener una factura en espec\u00edfico pasando como parametro el uid.\n- uid (str): El UID de la factura que se desea obtener.\n\n### Crear una nueva factura versi\u00f3n 4.0\n```python\ninvoice_data = {\n \"Receptor\": {\n \"ResidenciaFiscal\": \"\",\n \"UID\": \"55c0fdc67593d\"\n },\n \"TipoDocumento\": \"factura\",\n \"BorradorSiFalla\": \"1\",\n \"Draft\": \"1\",\n \"Conceptos\": [\n {\n \"ClaveProdServ\": \"43232408\",\n \"NoIdentificacion\": \"0021\",\n \"Cantidad\": \"1.000000\",\n \"ClaveUnidad\": \"E48\",\n \"Unidad\": \"Unidad de servicio\",\n \"Descripcion\": \"Desarrollo web a la medida\",\n \"ValorUnitario\": \"15000.000000\",\n \"Importe\": \"15000.000000\",\n \"Descuento\": \"0\",\n \"Impuestos\": {\n \"Traslados\": [\n {\n \"Base\": \"15000.000000\",\n \"Impuesto\": \"002\",\n \"TipoFactor\": \"Tasa\",\n \"TasaOCuota\": \"0.16\",\n \"Importe\": \"2400.000000\"\n }\n ],\n \"Retenidos\": [],\n \"Locales\": []\n }\n }\n ],\n \"UsoCFDI\": \"G01\",\n \"Serie\": 1247,\n \"FormaPago\": \"01\",\n \"MetodoPago\": \"PUE\",\n \"CondicionesDePago\": \"Pago en 9 meses\",\n \"CfdiRelacionados\": {\n \"TipoRelacion\": \"01\",\n \"UUID\": [\n \"29c98cb2-f72a-4cbe-a297-606da335e187\",\n \"a96f6b9a-70aa-4f2d-bc5e-d54fb7371236\"\n ]\n },\n \"Moneda\": \"MXN\",\n \"TipoCambio\": \"19.85\",\n \"NumOrder\": \"85abf36\",\n \"Fecha\": \"2020-03-20T12:53:23\",\n \"Comentarios\": \"El pedido a\u00fan no es entregado\",\n \"Cuenta\": \"0025\",\n \"EnviarCorreo\": \"true\",\n \"LugarExpedicion\": \"12345\"\n }\n\ncreated_invoice = client.create_invoice_4_0(invoice_data)\n\n```\n\nPrimeramente se tiene que crear un diccionario.\nParametros:\n- invoice_data (dict): Los datos de la factura a crear.\n### Obtener el PDF de una factura\n```python\n# Obtener el PDF de una factura por su UID \u00f3 UUID\npdf_data = client.get_invoice_pdf(cfdi_uuid='55c0fdc67593d')\n```\n\n### Obtener el XML de una factura\n```python\n# Obtener el XML de una factura por su UID \u00f3 UUID\nxml_data = client.get_invoice_xml(cfdi_uuid='55c0fdc67593d')\n```\n\n### Cancelar una factura\nPara tener mas detalles de los tipos de motivo, hacer clic [aqu\u00ed](https://factura.com/apidocs/cancelar-cfdi-40.html)\n```python\n# Cancelar una factura por su UUID\ncancel_result = client.cancel_invoice(cfdi_uuid='55c0fdc67593d', motivo='01', folio_sustituto='3336cbb9-ebd4-45e8-b60b-e7bfa6f6b5e0')\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Librer\u00eda para consumir la API de factura.com para generar facturas fiscales en M\u00e9xico.",
"version": "0.0.4",
"project_urls": {
"Homepage": "https://github.com/Lexharden"
},
"split_keywords": [
"factura",
"factura.com",
"api",
"facturaci\u00f3n electr\u00f3nica",
"m\u00e9xico",
"cfdi",
"timbrado"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "832803e2869a4a99c158461e41ec795af79da92cc7c4533afbf2cd9d36f77a73",
"md5": "84a9143f13511acc74a91b15a6c297b2",
"sha256": "de086c15ae56f411a802017bc76d055c840a53a20f23002feda37f9a6ec93b4d"
},
"downloads": -1,
"filename": "factura_com_library-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "84a9143f13511acc74a91b15a6c297b2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8034,
"upload_time": "2024-02-28T04:39:52",
"upload_time_iso_8601": "2024-02-28T04:39:52.643225Z",
"url": "https://files.pythonhosted.org/packages/83/28/03e2869a4a99c158461e41ec795af79da92cc7c4533afbf2cd9d36f77a73/factura_com_library-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86392613e0d6d943f65800d0853caa8bd1b8a1ddcd3fd9c8e669c2a25aa2f233",
"md5": "34942ae834b7adde8e73939d012be577",
"sha256": "70cfe46efea9bd078a2ef8c3758b63434f9818c143b953123a3f08f0552ce0e9"
},
"downloads": -1,
"filename": "factura_com_library-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "34942ae834b7adde8e73939d012be577",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7536,
"upload_time": "2024-02-28T04:39:54",
"upload_time_iso_8601": "2024-02-28T04:39:54.411133Z",
"url": "https://files.pythonhosted.org/packages/86/39/2613e0d6d943f65800d0853caa8bd1b8a1ddcd3fd9c8e669c2a25aa2f233/factura_com_library-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-28 04:39:54",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "factura-com-library"
}