{"id":37008329,"url":"https://github.com/phpcfdi/sat-ws-descarga-masiva-cli","last_synced_at":"2026-01-14T00:49:53.394Z","repository":{"id":258424610,"uuid":"874964071","full_name":"phpcfdi/sat-ws-descarga-masiva-cli","owner":"phpcfdi","description":"Consumo del web service de descarga masiva del SAT por línea de comandos","archived":false,"fork":false,"pushed_at":"2025-11-08T05:12:17.000Z","size":112,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-14T01:53:13.447Z","etag":null,"topics":["cfdi","descarga-masiva","mexico","sat","webservice"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phpcfdi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-18T19:45:04.000Z","updated_at":"2025-11-08T05:05:48.000Z","dependencies_parsed_at":"2024-10-21T21:58:49.588Z","dependency_job_id":null,"html_url":"https://github.com/phpcfdi/sat-ws-descarga-masiva-cli","commit_stats":null,"previous_names":["phpcfdi/sat-ws-descarga-masiva-cli"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/phpcfdi/sat-ws-descarga-masiva-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcfdi%2Fsat-ws-descarga-masiva-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcfdi%2Fsat-ws-descarga-masiva-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcfdi%2Fsat-ws-descarga-masiva-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcfdi%2Fsat-ws-descarga-masiva-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phpcfdi","download_url":"https://codeload.github.com/phpcfdi/sat-ws-descarga-masiva-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcfdi%2Fsat-ws-descarga-masiva-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28407054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T00:40:43.272Z","status":"ssl_error","status_checked_at":"2026-01-14T00:40:42.636Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cfdi","descarga-masiva","mexico","sat","webservice"],"created_at":"2026-01-14T00:49:52.902Z","updated_at":"2026-01-14T00:49:53.379Z","avatar_url":"https://github.com/phpcfdi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# phpcfdi/sat-ws-descarga-masiva-cli\n\n[![Source Code][badge-source]][source]\n[![Packagist PHP Version Support][badge-php-version]][php-version]\n[![Discord][badge-discord]][discord]\n[![Latest Version][badge-release]][release]\n[![Software License][badge-license]][license]\n[![Build Status][badge-build]][build]\n[![Reliability][badge-reliability]][reliability]\n[![Maintainability][badge-maintainability]][maintainability]\n[![Code Coverage][badge-coverage]][coverage]\n[![Violations][badge-violations]][violations]\n[![Total Downloads][badge-downloads]][downloads]\n[![Docker Downloads][badge-docker]][docker]\n\n\n\u003e Consumo del web service de descarga masiva del SAT por línea de comandos\n\n:us: The documentation of this project is in spanish as this is the natural language for intented audience.\n\n:mexico: La documentación del proyecto está en español porque ese es el lenguaje principal de los usuarios.\nTambién te esperamos en [el canal #phpcfdi de discord](https://discord.gg/aFGYXvX)\n\nEsta librería contiene un cliente (consumidor) del servicio del SAT de\n**Servicio Web de Descarga Masiva de CFDI y Retenciones**.\n\n## Requerimientos\n\nEsta herramienta usa **PHP versión 8.2** o superior con las extensiones `xml`, `openssl`, `zip`, `curl`, `intl` y `bcmath`.\n\n## Instalación\n\n### Ejecutable\n\nPuedes descargar el archivo PHAR desde la dirección \n\u003chttps://github.com/phpcfdi/sat-ws-descarga-masiva-cli/releases/latest/download/descarga-masiva.phar\u003e.\n\n```shell\nwget https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/releases/latest/download/descarga-masiva.phar -O descarga-masiva.phar\nphp descarga-masiva.phar --version\n```\n\n### Phive\n\nPendiente.\n\n### Docker\n\n```shell\ndocker pull phpcfdi/descarga-masiva\ndocker run --rm -it phpcfdi/descarga-masiva --version\n```\n\n### Composer\n\nPuedes instalar el proyecto en una carpeta especial y usar la herramienta o como dependencia de tu proyecto.\nPersonalmente, no recomiendo instalarla como una dependencia de algún proyecto, dado que se trata de\nuna herramienta y no de un componente o libería.\n\n```shell\n# instalar la herramienta\ncomposer require phpcfdi/sat-ws-descarga-masiva-cli\n# ejecutar el script\nphp vendor/bin/descarga-masiva.php --version\n```\n\nSuponiendo que la herramienta se instaló en `~/projects/sat-ws-descarga-masiva-cli`, entonces podrías poner después\nun script de ejecución como el siguiente en `/usr/local/bin/descarga-masiva` o en `~/.local/bin/descarga-masiva`:\n\n```bash\n!#/usr/bin/env bash -e\nphp ~/projects/sat-ws-descarga-masiva-cli/vendor/bin/descarga-masiva.php \"${@}\"\n```\n\n### Instalación desde el repositorio Git\n\nPuedes decargar el proyecto de github y ejecutar el archivo `bin/descarga-masiva.php`.\nEsta opción la recomiendo aún menos, dado que no es fácil mantener la herramienta desde Git.\n\n```shell\n# descargar el proyecto\ngit clone https://github.com/phpcfdi/sat-ws-descarga-masiva-cli /opt/descarga-masiva\n# instalar dependencias\ncomposer --working-dir=/opt/descarga-masiva update --no-dev\n# ejecución del proyecto\nphp /opt/descarga-masiva/bin/descarga-masiva.php --version\n```\n\n## Ejemplos de uso\n\nPara entender plenamente el uso del servicio web y los códigos de respuesta consulta la documentación de la librería \n[`phpcfdi/sat-ws-descarga-masiva`](https://github.com/phpcfdi/sat-ws-descarga-masiva).\n\nLa aplicación cuenta con dos tipos de comandos: `ws` para trabajar con el servicio y `zip` para trabajar con los paquetes.\n\nPara obtener la lista de comandos disponibles usa el comando `list`.\n\nPara obtener ayuda de la aplicación o cualquier comando agrega el parámetro `--help`.\n\n### Comando `ws:consulta`\n\nEl comando `ws:consulta` presenta una consulta con los parámetros establecidos.\n\nEl siguiente comando presenta una consulta de CFDI de metadata de comprobantes emitidos en el periodo\n`2023-01-01 00:00:00` al `2023-12-31 23:59:59` con los datos de la FIEL del RFC `EKU9003173C9`.\n\n```shell\nphp bin/descarga-masiva ws:consulta \\\n    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \\\n    --desde \"2023-01-01 00:00:00\" --hasta \"2023-12-31 23:59:59\"\n```\n\nCon lo que puede entregar el siguiente resultado:\n\n```text\nConsulta: \n  Servicio: cfdi\n  Paquete: Metadata\n  RFC: EKU9003173C9\n  Desde: 2024-01-01T00:00:00.000UTC\n  Hasta: 2024-12-31T23:59:59.000UTC\n  Tipo: Emitidos\n  RFC de/para: (cualquiera)\n  Documentos: (cualquiera)\n  Complemento: (cualquiera)\n  Estado: (cualquiera)\n  Tercero: (cualquiera)\nResultado: \n  Consulta: 5000 - Solicitud Aceptada\n  Identificador de solicitud: ba31f7fa-3713-4395-8e1f-39a79f02f5cc\n```\n\nLos parámetros `--efirma`,  `--certificado`, `--llave`, `--password`, `--token` son de autenticación\ny se documentan más adelante.\n\nAdicionalmente, se pueden especificar los siguientes parámetros:\n\n- `--servicio`: Si se consultarán los CFDI regulares (`cfdi`) o CFDI de Retención e información de pagos (`retenciones`).\n  Por omisión: `cfdi`.\n- `--tipo`: Si se consultarán los comprobantes emitidos (`emitidos`) o recibidos (`recibidos`). Por omisión: `emitidos`.\n- `--paquete`: Si se solicita un paquete de Metadatos (`metadata`) o de XML (`xml`). Por omisión: `metadata`.\n\nY los siguientes filtros, que son opcionales:\n\n- `--estado`: Filtra por el estado se encuentra el comprobante:\n  Vigentes `vigentes` o canceladas `canceladas`.\n- `--rfc`: Filtra la información por RFC, si se solicitan emitidos entonces es el RFC receptor, \n  si se solicitan recibidos entonces es el RFC emisor.\n- `--documento`: Filtra por el tipo de documento:\n  Ingreso (`ingreso`), egreso (`egreso`), traslado (`traslado`), pago (`pago`) o nómina (`nomina`).\n- `--complemento`: Filtra por el tipo de complemento, ver el comando `info:complementos`.\n- `--tercero`: Filtra por el RFC a cuenta de terceros.\n\nTambién se pueden hacer consultas por UUID con el paámetro `--uuid`. En caso de usar el filtro de UUID entonces \nno se toman en cuenta los parámetros `--desde`, `--hasta` o cualquiera de los filtros antes mencionados.\n\nEn la respuesta, entrega el resultado de la operación y el identificador de la solicitud, \nque puede ser usado después en el comando `ws:verifica`.\n\n### Comando `ws:verifica`\n\nEl comando `ws:verifica` verifica una consulta previamente presentada con los parámetros establecidos.\n\nEl siguiente comando verifica una consulta de CFDI con el identificador `ba31f7fa-3713-4395-8e1f-39a79f02f5cc`.\n\n```shell\nphp bin/descarga-masiva ws:verifica \\\n    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \\\n    ba31f7fa-3713-4395-8e1f-39a79f02f5cc\n```\n\nEn la respuesta, entrega el resultado de la operación y el identificador de uno o más paquetes para descarga,\nque pueden ser usados después en el comando `ws:descarga`.\n\n```text\nVerificación: \n  RFC: EKU9003173C9\n  Identificador de la solicitud: ba31f7fa-3713-4395-8e1f-39a79f02f5cc\nResultado: \n  Verificación: 5000 - Solicitud Aceptada\n  Estado de la solicitud: 3 - Terminada\n  Estado de la descarga: 5000 - Solicitud recibida con éxito\n  Número de CFDI: 572\n  Paquetes: BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01\n```\n\nLos parámetros `--efirma`,  `--certificado`, `--llave`, `--password`, `--token` son de autenticación\ny se documentan más adelante.\n\nAdicionalmente, se pueden especificar los siguientes parámetros:\n\n- `--servicio`: Si se verificará la consulta en el servicio web de CFDI regulares (`cfdi`) o \n  de CFDI de Retención e información de pagos (`retenciones`). Por omisión: `cfdi`.\n\n### Comando `ws:descarga`\n\nEl comando `ws:descarga` descarga un paquete de una consulta previamente verificada.\n\nEl siguiente comando descarga un paquete de CFDI con el identificador `BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01` \nen el directorio de destino `storage/paquetes`.\n\n```shell\nphp bin/descarga-masiva ws:descarga \\\n    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \\\n    --destino storage/paquetes BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01\n```\n\nEn la respuesta, entrega el resultado de la operación y el identificador de uno o más paquetes para descarga,\nque pueden ser usados después en el comando `ws:descarga`.\n\n```text\nDescarga:\n  RFC: DIM8701081LA\n  Identificador del paquete: BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01\n  Destino: storage/paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip\nResultado:\n  Descarga: 5000 - Solicitud Aceptada\n  Tamaño: 216126\n```\n\nLos parámetros `--efirma`,  `--certificado`, `--llave`, `--password`, `--token` son de autenticación\ny se documentan más adelante.\n\nAdicionalmente, se pueden especificar los siguientes parámetros:\n\n- `--servicio`: Si se descargará el paquete en el servicio web de CFDI regulares (`cfdi`) o \n  de CFDI de Retención e información de pagos (`retenciones`). Por omisión: `cfdi`.\n- `--destino`: Si se establece, determina en qué carpeta se descargará el paquete, \n  en caso de no usarse se utiliza el directorio actual.\n\n### Parámetros de autenticación\n\nLos parámetros `--efirma`, `--certificado`, `--llave`, `--password` y `--token` son de autenticación \ny se utilizan en los comandos `ws:consulta`, `ws:descarga` y `ws:verifica`.\n\n- `--efirma`: Ruta absoluta o relativa al archivo de especificación de eFirma.\n- `--certificado`: Ruta absoluta o relativa al archivo de certificado.\n- `--llave`: Ruta absoluta o relativa al archivo de llave privada.\n- `--password`: Contraseña de la llave privada, si no se especifica entonces usa el valor de la \n  variable de entorno `EFIRMA_PASSPHRASE`.\n- `--token`: Ruta absoluta o relativa a un archivo *Token* (que genera esta aplicación).\n\nEs recomendado establecer la ruta del *token*, es en donde se almacena la autenticación con el servicio web\ndel SAT y se intenta reutilizar para no realizar más peticiones de autenticación de las necesarias.\n\n#### Archivos de eFirma\n\nPara no tener que especificar los parámetros `--certificado`, `--llave`, `--password` y `--token`, se puede\nespecificar el parámetro `--efirma` que espera la ubicación a un archivo JSON con la siguiente estructura:\n\n- `certificateFile`: Ruta absoluta o relativa al archivo de certificado CER.\n- `privateKeyFile`: Ruta absoluta o relativa al archivo de llave privada KEY.\n- `passPhrase`: Contraseña de la llave privada.\n- `tokenFile`: Ruta absoluta o relativa a un archivo *Token* (que genera esta aplicación).\n\n### Comando `info:complementos`\n\nEl comando `info:complementos` muestra la información de los complementos registrados para usarse en una consulta.\n\nAdicionalmente, se pueden especificar los siguientes parámetros:\n\n- `--servicio`: Si se mostrarán los complementos del servicio web de CFDI regulares (`cfdi`) o\n  de CFDI de Retención e información de pagos (`retenciones`). Por omisión: `cfdi`.\n\n### Comando `zip:metadata`\n\nEl comando `zip:metadata` lee un paquete de metadatos desde `paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip` \ny exporta su información a un archivo de Excel en `archivos/listado.xlsx`.\n\n```shell\nphp bin/descarga-masiva zip:metadata paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip archivos/listado.xlsx\n```\n\n### Comando `zip:xml`\n\nEl comando `zip:xml` lee un paquete de XML y exporta los comprobantes a un directorio, el nombre de cada \ncomprobante es el UUID con la extensión `.xml`.\n\nEl siguiente comando lee un paquete de XML desde `paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip` \ny exporta todos los archivos de comprobantes en el directorio `archivos/xml/`.\n\n```shell\nphp bin/descarga-masiva zip:metadata paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip archivos/xml/\n```\n\n## Compatibilidad\n\nEsta librería se mantendrá compatible con al menos la versión con\n[soporte activo de PHP](https://www.php.net/supported-versions.php) más reciente.\n\nTambién utilizamos [Versionado Semántico 2.0.0](https://semver.org/lang/es/)\npor lo que puedes usar esta librería sin temor a romper tu aplicación.\n\n## Contribuciones\n\nLas contribuciones con bienvenidas. Por favor lee [CONTRIBUTING][] para más detalles\ny recuerda revisar el archivo de tareas pendientes [TODO][] y el archivo [CHANGELOG][].\n\n## Copyright and License\n\nThe `phpcfdi/sat-ws-descarga-masiva-cli` project is copyright © [PhpCfdi](https://www.phpcfdi.com)\nand licensed for use under the MIT License (MIT). Please see [LICENSE][] for more information.\n\n[contributing]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/blob/main/CONTRIBUTING.md\n[changelog]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/blob/main/docs/CHANGELOG.md\n[todo]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/blob/main/docs/TODO.md\n\n[source]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli\n[php-version]: https://packagist.org/packages/phpcfdi/sat-ws-descarga-masiva-cli\n[discord]: https://discord.gg/aFGYXvX\n[release]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/releases\n[license]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/blob/main/LICENSE\n[build]: https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/actions/workflows/build.yml?query=branch:main\n[reliability]:https://sonarcloud.io/component_measures?id=phpcfdi_sat-ws-descarga-masiva-cli\u0026metric=Reliability\n[maintainability]: https://sonarcloud.io/component_measures?id=phpcfdi_sat-ws-descarga-masiva-cli\u0026metric=Maintainability\n[coverage]: https://sonarcloud.io/component_measures?id=phpcfdi_sat-ws-descarga-masiva-cli\u0026metric=Coverage\n[violations]: https://sonarcloud.io/project/issues?id=phpcfdi_sat-ws-descarga-masiva-cli\u0026resolved=false\n[downloads]: https://packagist.org/packages/phpcfdi/sat-ws-descarga-masiva-cli\n[docker]: https://hub.docker.com/repository/docker/phpcfdi/descarga-masiva\n\n[badge-source]: https://img.shields.io/badge/source-phpcfdi/sat--ws--descarga--masiva--cli-blue?logo=github\n[badge-discord]: https://img.shields.io/discord/459860554090283019?logo=discord\n[badge-php-version]: https://img.shields.io/packagist/php-v/phpcfdi/sat-ws-descarga-masiva-cli?logo=php\n[badge-release]: https://img.shields.io/github/release/phpcfdi/sat-ws-descarga-masiva-cli?logo=git\n[badge-license]: https://img.shields.io/github/license/phpcfdi/sat-ws-descarga-masiva-cli?logo=open-source-initiative\n[badge-build]: https://img.shields.io/github/actions/workflow/status/phpcfdi/sat-ws-descarga-masiva-cli/build.yml?branch=main\u0026logo=github-actions\n[badge-reliability]: https://sonarcloud.io/api/project_badges/measure?project=phpcfdi_sat-ws-descarga-masiva-cli\u0026metric=reliability_rating\n[badge-maintainability]: https://sonarcloud.io/api/project_badges/measure?project=phpcfdi_sat-ws-descarga-masiva-cli\u0026metric=sqale_rating\n[badge-coverage]: https://img.shields.io/sonar/coverage/phpcfdi_sat-ws-descarga-masiva-cli/main?logo=sonarqubecloud\u0026server=https%3A%2F%2Fsonarcloud.io\n[badge-violations]: https://img.shields.io/sonar/violations/phpcfdi_sat-ws-descarga-masiva-cli/main?format=long\u0026logo=sonarqubecloud\u0026server=https%3A%2F%2Fsonarcloud.io\n[badge-downloads]: https://img.shields.io/packagist/dt/phpcfdi/sat-ws-descarga-masiva-cli?logo=packagist\n[badge-docker]: https://img.shields.io/docker/pulls/phpcfdi/descarga-masiva?logo=docker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpcfdi%2Fsat-ws-descarga-masiva-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphpcfdi%2Fsat-ws-descarga-masiva-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpcfdi%2Fsat-ws-descarga-masiva-cli/lists"}