PHPackages                             orlandocharles/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. [Utility &amp; Helpers](/categories/utility)
4. /
5. orlandocharles/cfdi

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

orlandocharles/cfdi
===================

Librería para generar Comprobantes Fiscales para la versión 3.3

4934336[1 issues](https://github.com/orlandocharles/cfdi/issues)PHPCI failing

Since Sep 26Pushed 8y ago8 watchersCompare

[ Source](https://github.com/orlandocharles/cfdi)[ Packagist](https://packagist.org/packages/orlandocharles/cfdi)[ RSS](/packages/orlandocharles-cfdi/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Comprobante Fiscal Digital por Internet (CFDI v3.3)
===================================================

[](#comprobante-fiscal-digital-por-internet-cfdi-v33)

[![Travis](https://camo.githubusercontent.com/d6b7934149f90c6ee4561dd6a325346b3cdd4043cf49b02734c3bc5ba1eee4ab/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6f726c616e646f636861726c65732f636664692e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.org/orlandocharles/cfdi)[![StyleCI](https://camo.githubusercontent.com/2d023691e54d66476e6871f1b2d9ad21152a73bfb77e2a0c34e18ea3b4e09e5e/68747470733a2f2f7374796c6563692e696f2f7265706f732f39383230383732352f736869656c643f6272616e63683d6d6173746572)](https://styleci.io/repos/98208725)[![License](https://camo.githubusercontent.com/f956b4b75868e37cf318ba6b04b84d1c4ed7a7a7d7a6527c2dd180f6280ab70b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f726c616e646f636861726c65732f636664692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orlandocharles/cfdi)[![Donate](https://camo.githubusercontent.com/812b87cdfbff1527ad8fa3846052cb8b12b84c0d2b822b0397c5a7fe2e6597a6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d50617950616c2d3362376262662e7376673f7374796c653d666c61742d737175617265)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H2KAFWPGPMKHJ)

- [Instalación](#instalaci%C3%B3n)
- [Uso](#uso)
- [Licencia](#licencia)
- [Donación](#donaci%C3%B3n)

Instalación
-----------

[](#instalación)

> Nota: el proyecto se encuentra en desarrollo.

Para instalar el paquete mediante [Composer](https://getcomposer.org/).

```
composer require orlandocharles/cfdi
```

Uso
---

[](#uso)

- [CFDI](#cfdi)
- [CFDI Relacionado](#cfdi-relacionado)
- [Emisor](#emisor)
- [Receptor](#receptor)
- [Concepto](#concepto)
- [Impuestos](#concepto)
    - [Traslado](#traslado)
        - [Traslado en comprobante](#traslado-en-comprobante)
        - [Traslado en concepto](#traslado-en-concepto)
    - [Retención](#retenci%C3%B3n)
        - [Retención en comprobante](#retenci%C3%B3n-en-comprobante)
        - [Retención en concepto](#retenci%C3%B3n-en-concepto)
- [Información Aduanera](#informaci%C3%B3n-aduanera)
- [Cuenta Predial](#cuenta-predial)
- [Parte](#parte)

### CFDI

[](#cfdi)

```
use Charles\CFDI\CFDI;

$cer = file_get_contents('.../csd/AAA010101AAA.cer.pem');
$key = file_get_contents('.../csd/AAA010101AAA.key.pem');

$cfdi = new CFDI([
    'Serie' => 'A',
    'Folio' => 'A0101',
    'Fecha' => '2017-06-17T03:00:00',
    'FormaPago' => '01',
    'NoCertificado' => '00000000000000000000',
    'CondicionesDePago' => '',
    'Subtotal' => '',
    'Descuento' => '0.00',
    'Moneda' => 'MXN',
    'TipoCambio' => '1.0',
    'Total' => '',
    'TipoDeComprobante' => 'I',
    'MetodoPago' => 'PUE',
    'LugarExpedicion' => '64000',
], $cer, $key);
```

### CFDI Relacionado

[](#cfdi-relacionado)

En este nodo se debe expresar la información de los comprobantes fiscales relacionados con el que se ésta generando, se deben expresar tantos numeros de nodos de CfdiRelacionado, como comprobantes se requieran relacionar.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Relacionado;

$cfdi = new CFDI([...]);

$cfdi->add(new Relacionado([
    'UUID' => 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
], [
    'TipoRelacion' => '01',
]));
```

```

```

### Emisor

[](#emisor)

En este nodo se debe expresar la información del contribuyente que emite el comprobante fiscal.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Emisor;

$cfdi = new CFDI([...]);

$cfdi->add(new Emisor([
    'Rfc' => 'XAXX010101000',
    'Nombre' => 'Florería SA de CV',
    'RegimenFiscal' => '601',
]));
```

```

```

### Receptor

[](#receptor)

En este nodo se debe expresar la información del contribuyente receptor del comprobante.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Receptor;

$cfdi = new CFDI([...]);

$cfdi->add(new Receptor([
    'Rfc' => 'XEXX010101000',
    'Nombre' => 'Orlando Charles',
    'ResidenciaFiscal' => 'USA',
    'NumRegIdTrib' => '121585958',
    'UsoCFDI' => 'G01',
]));
```

```

```

### Concepto

[](#concepto)

En este nodo se debe expresar la información detallada de un bien o servicio descrito en el comprobante.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;

$cfdi = new CFDI([...]);

$cfdi->add(new Concepto([
    'ClaveProdServ' => '10317331',
    'NoIdentificacion' => 'UT421511',
    'Cantidad' => '24',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados',
    'ValorUnitario' => '56.00',
    'Importe' => '1344.00',
    'Descuento' => '10.00',
]));

$cfdi->add(new Concepto([
    'ClaveProdServ' => '10317352',
    'NoIdentificacion' => 'UT421510',
    'Cantidad' => '12',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Arreglo de 12 tulipanes rojos recién cortados',
    'ValorUnitario' => '66.00',
    'Importe' => '792.00',
    'Descuento' => '5.00',
]));
```

```

```

### Impuestos

[](#impuestos)

#### Retención

[](#retención)

##### Retención en comprobante

[](#retención-en-comprobante)

En este nodo se debe expresar la información detallada de una retención de un impuesto específico.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Impuesto\Retencion;

$cfdi->add(new Retencion([
    'Impuesto' => '002',
    'Importe' => '35000',
]));
```

##### Retención en concepto

[](#retención-en-concepto)

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;
use Charles\CFDI\Node\Impuesto\Retencion;

$cfdi = new CFDI([...]);

$concepto = new Concepto([
    'ClaveProdServ' => '10317331',
    'NoIdentificacion' => 'UT421511',
    'Cantidad' => '24',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados',
    'ValorUnitario' => '56.00',
    'Importe' => '1344.00',
    'Descuento' => '10.00',
]);

$concepto->add(new Retencion([

]));

$cfdi->add($concepto);
```

#### Traslado

[](#traslado)

##### Traslado en comprobante

[](#traslado-en-comprobante)

En este nodo se debe expresar la información detallada de un traslado de impuesto específico.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Impuesto\Traslado;

$cfdi->add(new Traslado([
    'Impuesto' => '001',
    'TipoFactor' => 'Tasa',
    'TasaOCuota' => '0.160000',
    'Importe' => '23000',
]));
```

##### Traslado en concepto

[](#traslado-en-concepto)

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;
use Charles\CFDI\Node\Impuesto\Traslado;

$cfdi = new CFDI([...]);

$concepto = new Concepto([
    'ClaveProdServ' => '10317331',
    'NoIdentificacion' => 'UT421511',
    'Cantidad' => '24',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados',
    'ValorUnitario' => '56.00',
    'Importe' => '1344.00',
    'Descuento' => '10.00',
]);

$concepto->add(new Traslado([

]));

$cfdi->add($concepto);
```

### Información Aduanera

[](#información-aduanera)

En este nodo se debe expresar la información aduanera correspondiente a cada concepto cuando se trate de ventas de primera mano de mercancías importadas

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;
use Charles\CFDI\Node\InformacionAduanera;

$cfdi = new CFDI([...]);

$concepto = new Concepto([
    'ClaveProdServ' => '10317331',
    'NoIdentificacion' => 'UT421511',
    'Cantidad' => '24',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados',
    'ValorUnitario' => '56.00',
    'Importe' => '1344.00',
    'Descuento' => '10.00',
]);

$concepto->add(new InformacionAduanera([
    'NumeroPedimento' => '00 00 0000 0000000',
]));

$cfdi->add($concepto);
```

```

```

### Cuenta Predial

[](#cuenta-predial)

En este nodo se puede expresar el número de cuenta predial con el que fue registrado el inmueble en el sistema catastral de la entidad federativa de que trate, o bien para incorporar los datos de identificación del certificado de participación inmobiliaria no amortizable.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;
use Charles\CFDI\Node\CuentaPredial;

$cfdi = new CFDI([...]);
$concepto = new Concepto([...]);

$concepto->add(new CuentaPredial([
    'Numero' => '00000',
]));

$cfdi->add($concepto);
```

### Parte

[](#parte)

En este nodo se pueden expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital por Internet.

```
use Charles\CFDI\CFDI;
use Charles\CFDI\Node\Concepto;
use Charles\CFDI\Node\Parte;

$cfdi = new CFDI([...]);

$concepto = new Concepto([
    'ClaveProdServ' => '27113201',
    'NoIdentificacion' => 'UT421456',
    'Cantidad' => '1',
    'ClaveUnidad' => 'KT',
    'Unidad' => 'Kit',
    'Descripcion' => 'Kit de destornillador',
    'ValorUnitario' => '217.30',
    'Importe' => '217.30',
    'Descuento' => '0.00',
]);

$tornillo = new Parte([
    'ClaveProdServ' => '31161500',
    'NoIdentificacion' => 'UT367898',
    'Cantidad' => '34',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Tornillo',
    'ValorUnitario' => '00.20',
    'Importe' => '6.80',
]);

$tornilloPerno = new Parte([
    'ClaveProdServ' => '31161501',
    'NoIdentificacion' => 'UT367899',
    'Cantidad' => '14',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Tornillo de Perno',
    'ValorUnitario' => '00.75',
    'Importe' => '10.50',
]);

$destornillador = new Parte([
    'ClaveProdServ' => '27111701',
    'NoIdentificacion' => 'UT367900',
    'Cantidad' => '2',
    'ClaveUnidad' => 'H87',
    'Unidad' => 'Pieza',
    'Descripcion' => 'Destornillador',
    'ValorUnitario' => '100.00',
    'Importe' => '200.00',
]);

$concepto->add($tornillo);
$concepto->add($tornilloPerno);
$concepto->add($destornillador);

$cfdi->add($concepto);
```

```

```

Licencia
--------

[](#licencia)

Este paquete no pertenece a ninguna comañia ni entidad gubernamental y esta bajo la Licencia MIT, si quieres saber más al respecto puedes ver el archivo de [Licencia](LICENSE) que se encuentra en este mismo repositorio.

Donación
--------

[](#donación)

Este proyecto ayuda a que otros desarrolladores ahorren horas de trabajo.

[![paypal](https://camo.githubusercontent.com/865293fd920112d493899de94aa992aef1ec68f63d223f3d19f37955ffb21b6b/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f65735f58432f4d582f692f62746e2f62746e5f646f6e61746543435f4c472e676966)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H2KAFWPGPMKHJ)

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 68.8% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bae6867b2ef335296f8d3195d2ec90a0265c59d716d54d1b30da233722206c4f?d=identicon)[orlandocharles](/maintainers/orlandocharles)

---

Top Contributors

[![orlandocharles](https://avatars.githubusercontent.com/u/22510311?v=4)](https://github.com/orlandocharles "orlandocharles (33 commits)")[![eclipxe13](https://avatars.githubusercontent.com/u/1266852?v=4)](https://github.com/eclipxe13 "eclipxe13 (15 commits)")

---

Tags

cfdiinvoicemexicosat

### Embed Badge

![Health badge](/badges/orlandocharles-cfdi/health.svg)

```
[![Health](https://phpackages.com/badges/orlandocharles-cfdi/health.svg)](https://phpackages.com/packages/orlandocharles-cfdi)
```

###  Alternatives

[0x46616c6b/etherpad-lite-client

PHP Client for Etherpad Lite

1514.0k1](/packages/0x46616c6b-etherpad-lite-client)[overtrue/laravel-qcloud-federation-token

QCloud COS FederationToken generator for Laravel.

178.5k](/packages/overtrue-laravel-qcloud-federation-token)[php-brasil/collection

147.8k1](/packages/php-brasil-collection)[jsyqw/potato-bot

poptato chat, potato-bot sdk

191.0k](/packages/jsyqw-potato-bot)

PHPackages © 2026

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