PHPackages                             daniel-monroy/sat-estado-cfdi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. daniel-monroy/sat-estado-cfdi

ActiveLibrary[API Development](/categories/api)

daniel-monroy/sat-estado-cfdi
=============================

Paquete interno Laravel para consultar estado CFDI (SAT)

v0.1.0(1mo ago)121MITPHPPHP ^8.3CI passing

Since Sep 4Pushed 1mo agoCompare

[ Source](https://github.com/Daniel-Monroy/SatEstadoCFDI)[ Packagist](https://packagist.org/packages/daniel-monroy/sat-estado-cfdi)[ RSS](/packages/daniel-monroy-sat-estado-cfdi/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (17)Versions (12)Used By (0)

SatEstadoCFDI (Laravel Package)
===============================

[](#satestadocfdi-laravel-package)

Este paquete integra la librería [phpcfdi/sat-estado-cfdi](https://github.com/phpcfdi/sat-estado-cfdi) en **Laravel 11, 12 y 13**para consultar el **estado de un CFDI** directamente en el **servicio web del SAT**.

[![Latest Version on Packagist](https://camo.githubusercontent.com/69b11fc4ce5fa41f33db57bc21e69de9bae4fd121ad92c2f346ca9974e767e00/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f64616e69656c2d6d6f6e726f792f7361742d65737461646f2d636664692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/daniel-monroy/sat-estado-cfdi)[![Total Downloads](https://camo.githubusercontent.com/84a0be00f55b58df5168531992dd3a3e605209aa59ead5e72591990c424e2d6b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f64616e69656c2d6d6f6e726f792f7361742d65737461646f2d636664692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/daniel-monroy/sat-estado-cfdi)

El protocolo que utiliza el SAT para esta consulta es **SOAP sobre HTTP/HTTPS**, expuesto como **servicio web**. Este paquete se conecta mediante un **cliente HTTP PSR-18**, con compatibilidad para reintentos, timeouts, caché y una integración HTTP opcional para proyectos Laravel.

Documentación
-------------

[](#documentación)

- [Instalación](./docs/installation.md)
- [Uso](./docs/usage.md)
- [Integración HTTP](./docs/http-integration.md)
- [Errores](./docs/errors.md)
- [Testing](./docs/testing.md)
- [Seguridad](./docs/security.md)
- [Arquitectura](./docs/architecture.md)
- [Changelog](./docs/CHANGELOG.md)

Compatibilidad
--------------

[](#compatibilidad)

PHPLaravel8.311, 12, 138.411, 12, 13📦 Instalación
-------------

[](#-instalación)

Instálalo vía Composer:

```
composer require daniel-monroy/sat-estado-cfdi
```

⚙️ Configuración
----------------

[](#️-configuración)

Publica el archivo de configuración:

```
php artisan vendor:publish --tag="sat-estado-cfdi-config"
```

Ejemplo de configuración en `config/sat-estado-cfdi.php`:

```
return [
    'expose_routes' => env('SAT_ESTADO_EXPOSE_ROUTES', false),
    'route_prefix'  => env('SAT_ESTADO_ROUTE_PREFIX', 'api'),
    'middleware'    => env('SAT_ESTADO_ROUTE_MIDDLEWARE', 'api'),
    'cache_ttl'     => env('SAT_ESTADO_CACHE_TTL', 900), // segundos
];
```

En el archivo `.env` puedes definir:

```
SAT_ESTADO_EXPOSE_ROUTES=true
SAT_ESTADO_ROUTE_PREFIX=api
SAT_ESTADO_ROUTE_MIDDLEWARE=api,auth:sanctum
SAT_ESTADO_CACHE_TTL=900
```

Uso desde Laravel
-----------------

[](#uso-desde-laravel)

### Servicio

[](#servicio)

```
use DanielMonroy\SatEstadoCfdi\Services\SatEstadoCfdi\SatEstadoCfdiService;

$response = app(SatEstadoCfdiService::class)->consultByExpression(
    'https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=UUID&re=AAA010101AAA&rr=BBB010101BBB&tt=123.450000&fe=ABCD1234'
);
```

### Facade

[](#facade)

```
use DanielMonroy\SatEstadoCfdi\Facades\SatEstado;

$response = SatEstado::consultByExpression(
    'id=UUID&re=AAA010101AAA&rr=BBB010101BBB&tt=123.450000'
);
```

### Desde XML

[](#desde-xml)

```
use DanielMonroy\SatEstadoCfdi\Facades\SatEstado;

$response = SatEstado::consultFromXmlPath(storage_path('app/cfdi.xml'));
```

📡 Integración HTTP opcional
---------------------------

[](#-integración-http-opcional)

Si `SAT_ESTADO_EXPOSE_ROUTES` está en `true`, se habilitan los siguientes endpoints:

MétodoEndpointDescripciónPOST`/api/cfdi/estado`Consulta el estado de un CFDIGET`/api/cfdi/estatus`Verifica que el servicio esté activoEl prefijo (`/api`) y el middleware (ej. `auth`, `sanctum`, etc.) pueden modificarse con la variable `SAT_ESTADO_ROUTE_PREFIX` y `SAT_ESTADO_ROUTE_MIDDLEWARE`.

### Ejemplo de consulta

[](#ejemplo-de-consulta)

```
curl -X POST http://tu-dominio.test/api/cfdi/estado \
-H "Content-Type: application/json" \
-d '{
  "expression": "id=12345678-1234-1234-1234-123456789012&re=AAA010101AAA&rr=BBB010101BBB&tt=1234.56"
}'
```

o con multipart/form-data enviando directamente el archivo `XML`:

```
curl -X POST http://tu-dominio.test/api/cfdi/estado \
-H "Content-Type: multipart/form-data" \
-F "xml=@/ruta/al/archivo.xml"
```

La respuesta será similar a:

```
{
  "ok": true,
  "status": "active",
  "id": "XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "message": "El CFDI se encuentra vigente y es valido.",
  "cancelabilidad": "sin_aceptacion",
  "cancelacion": "indefinida",
  "flags": {
    "isActive": true,
    "isCancelled": false,
    "isPendingCancel": false
  },
  "raw": {
    "query": {
      "isFound": true
    },
    "document": {
      "isActive": true,
      "isCancelled": false
    },
    "cancellable": {
      "isCancellableByDirect": true,
      "isCancellableByApproval": false
    },
    "cancellation": {
      "isCancelledByDirect": false,
      "isCancelledByApproval": false,
      "isCancelledByExpiration": false,
      "isPending": false,
      "isDisapproved": false,
      "isUndefined": true
    },
    "efos": null
  }
}
```

Manejo de errores
-----------------

[](#manejo-de-errores)

- Si el CFDI no existe, el paquete responde `404` en la integración HTTP opcional y devuelve un DTO `not_found`.
- Si el XML está mal formado o no puede leerse, la integración HTTP opcional responde `422`.
- Si la expresión no contiene al menos `id`, `re`, `rr` y `tt`, la validación HTTP responderá `422`.

Desarrollo
----------

[](#desarrollo)

Instala dependencias de desarrollo y ejecuta las herramientas locales:

```
composer install
composer test
composer lint
```

Notas
-----

[](#notas)

- El paquete se apoya en y utiliza la librería [phpcfdi/sat-estado-cfdi](https://github.com/phpcfdi/sat-estado-cfdi)
- El servicio del SAT puede ser intermitente, se recomienda configurar caché y reintentos.
- Los estados dependen de la respuesta oficial del SAT.
- Si necesitas una integración agnóstica al framework, usa directamente `phpcfdi/sat-estado-cfdi`. Este paquete está orientado específicamente a Laravel.

Licencia
--------

[](#licencia)

Este paquete es software libre bajo la licencia MIT.

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance90

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~25 days

Recently: every ~50 days

Total

9

Last Release

48d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7f0840d654ccd42de1f9b36c566b2b6bfeb04a646ae5dd9bc1a19dea32dec8f0?d=identicon)[daniel-monroy](/maintainers/daniel-monroy)

---

Top Contributors

[![Daniel-Monroy](https://avatars.githubusercontent.com/u/45611570?v=4)](https://github.com/Daniel-Monroy "Daniel-Monroy (13 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

apicfdiconsulta-cfdifacturacionlaravelmexicosatxml

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/daniel-monroy-sat-estado-cfdi/health.svg)

```
[![Health](https://phpackages.com/badges/daniel-monroy-sat-estado-cfdi/health.svg)](https://phpackages.com/packages/daniel-monroy-sat-estado-cfdi)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[statamic/cms

The Statamic CMS Core Package

4.8k3.2M720](/packages/statamic-cms)[nickurt/laravel-postcodeapi

Universal PostcodeApi for Laravel 11.x/12.x/13.x

97221.2k](/packages/nickurt-laravel-postcodeapi)[mozex/anthropic-laravel

Anthropic PHP for Laravel is a supercharged PHP API client that allows you to interact with the Anthropic API

71226.4k1](/packages/mozex-anthropic-laravel)[tamara-solution/php-sdk

Tamara PHP Client Library

10259.4k1](/packages/tamara-solution-php-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
