PHPackages                             codianselme/lara-sygmef - 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. [Payment Processing](/categories/payments)
4. /
5. codianselme/lara-sygmef

ActiveLibrary[Payment Processing](/categories/payments)

codianselme/lara-sygmef
=======================

Service e-MECeF pour Laravel - Intégration API DGI Bénin

1.0.5(2mo ago)075↑15.4%1MITPHPPHP ^8.1

Since Nov 22Pushed 2mo agoCompare

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

READMEChangelogDependencies (4)Versions (7)Used By (0)

Service e-MECeF pour Laravel
============================

[](#service-e-mecef-pour-laravel)

Un package Laravel complet pour l'intégration de l'API e-MECeF (Module de contrôle dématérialisé) de la DGI du Bénin.

📋 Table des matières
--------------------

[](#-table-des-matières)

- [Introduction](#introduction)Lara-Sygmef Package 🇧🇯

[![Latest Version on Packagist](https://camo.githubusercontent.com/7d7c8958c89727c4594de24325664553c7789ceef9b030ae2f037cfc9beafd65/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f636f6469616e73656c6d652f6c6172612d7379676d65662e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/codianselme/lara-sygmef)[![Total Downloads](https://camo.githubusercontent.com/aa4a2502368afcd07230255a61663904a694488bbace5e52e752bc4fc7d716ec/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f636f6469616e73656c6d652f6c6172612d7379676d65662e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/codianselme/lara-sygmef)[![License](https://camo.githubusercontent.com/e67e61e5eb51a18d83535e2e8ee0b1e2b74c61bed00c4954a9cd8cd20c2cb4b5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f636f6469616e73656c6d652f6c6172612d7379676d65662e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/codianselme/lara-sygmef)

> 📦 **Package disponible sur [Packagist](https://packagist.org/packages/codianselme/lara-sygmef)** - Installation simple via Composer !

**Lara-Sygmef** est un package Laravel complet pour intégrer facilement l'API de facturation électronique **e-MECeF** du Bénin. Il offre une interface fluide pour gérer vos factures, confirmer les transactions et générer les codes QR réglementaires, le tout via une API propre ou un **Tableau de Bord prêt à l'emploi**.

---

🚀 Fonctionnalités Clés
----------------------

[](#-fonctionnalités-clés)

- ✅ **Intégration API Complète** : Création, confirmation, annulation de factures (FV, EV, FA, EA).
- ✅ **Tableau de Bord Intégré** : Interface graphique moderne pour gérer vos factures sans coder.
- ✅ **Gestion des Avoirs** : Support complet des factures d'avoir (FA) avec liaison automatique.
- ✅ **QR Code &amp; Sécurité** : Génération et affichage des QR Codes et codes MECeF/DGI.
- ✅ **Mode Démo / Test** : Environnement de test (Sandbox) pré-configuré.
- ✅ **Persistance** : Sauvegarde automatique des factures et items en base de données.

---

📦 Installation
--------------

[](#-installation)

Installez le package via Composer :

```
composer require codianselme/lara-sygmef
```

### 1. Publication des ressources

[](#1-publication-des-ressources)

Publiez le fichier de configuration et les assets (CSS/JS pour le dashboard) :

```
php artisan vendor:publish --tag=emecf-config
php artisan vendor:publish --tag=emecf-assets
```

### 2. Base de données

[](#2-base-de-données)

Exécutez les migrations pour créer les tables nécessaires (`emecf_invoices`, `emecf_invoice_items`, etc.) :

```
php artisan migrate
```

---

⚙️ Configuration
----------------

[](#️-configuration)

Ajoutez les variables suivantes à votre fichier `.env` :

```
# Token d'accès API e-MECeF (Fourni par la DGI)
EMECF_API_TOKEN=votre_token_ici

# Mode Test (true pour Sandbox, false pour Production)
EMECF_TEST_MODE=true

# IFU par défaut pour les factures (13 caractères, obligatoire)
SGMEF_DEFAULT_IFU=0202113169876

# Opérateur par défaut
SGMEF_DEFAULT_OPERATOR_NAME="Opérateur Principal"

# Autres paramètres optionnels
SGMEF_API_URL=https://developper.impots.bj/sygmef-emcf/api
SGMEF_TOKEN="votre_token_ici"
RCCM="11-B-7629"

# Timeouts et retry
EMECF_TIMEOUT=30
EMECF_CONNECT_TIMEOUT=10
EMECF_RETRY=3
EMECF_RETRY_DELAY=1000

# Persistence en base de données
EMECF_SAVE_INVOICES=true
EMECF_SAVE_LOGS=true
EMECF_LOG_LEVEL=error
```

### 📌 Important : Configuration de l'IFU

[](#-important--configuration-de-lifu)

L'**IFU (Identifiant Fiscal Unique)** est maintenant **configurable via `.env`** :

```
# ✅ Correct - Configuration via .env
SGMEF_DEFAULT_IFU=0202113169876
```

**L'IFU ne doit JAMAIS être codé en dur dans le code !**

#### Récupérer l'IFU en code

[](#récupérer-lifu-en-code)

```
// Dans les contrôleurs ou services
$ifu = config('emecf.default_ifu');

// Ou directement depuis .env
$ifu = env('SGMEF_DEFAULT_IFU', '0202113169876');
```

#### Utiliser l'IFU dans les vues Blade

[](#utiliser-lifu-dans-les-vues-blade)

```

```

---

🖥️ Tableau de Bord (Dashboard)
------------------------------

[](#️-tableau-de-bord-dashboard)

Le package inclut un tableau de bord complet et moderne accessible via `/emecf/dashboard`.

### Collection de Captures d'Écran

[](#collection-de-captures-décran)

#### 1. 📊 Vue d'ensemble du Dashboard

[](#1--vue-densemble-du-dashboard)

Le tableau de bord principal affiche vos statistiques en temps réel avec des graphiques interactifs :

[![Vue Dashboard 1](docs/screenshots/dashboard_1.png)](docs/screenshots/dashboard_1.png)[![Vue Dashboard 2](docs/screenshots/dashboard_2.png)](docs/screenshots/dashboard_2.png)

**Fonctionnalités :**

- 📈 Graphiques mensuels des ventes
- 💰 Statistiques de revenus
- 📋 Liste des dernières factures
- 🔍 Accès rapide aux actions

---

#### 2. 📝 Création d'une Facture de Vente (FV)

[](#2--création-dune-facture-de-vente-fv)

Formulaire intuitif pour créer une nouvelle facture de vente :

[![Nouvelle Facture](docs/screenshots/nouvelle_facture.png)](docs/screenshots/nouvelle_facture.png)

**Fonctionnalités :**

- ✅ **Calcul automatique** des totaux TTC/TVA
- ✅ **Gestion dynamique** des articles (ajout/suppression)
- ✅ **Support multi-paiement** (Espèces, MTN, Moov, etc.)
- ✅ **Validation en temps réel**

---

#### 3. ✔️ Confirmation de la Facture

[](#3-️-confirmation-de-la-facture)

Après soumission, confirmez la facture pour générer les codes officiels :

[![Confirmation Facture](docs/screenshots/confirmation_facture.png)](docs/screenshots/confirmation_facture.png)

**Résultat :**

- 🔐 **Code MECeF/DGI** généré
- 📱 **QR Code** officiel
- 📄 Facture enregistrée et validée

---

#### 4. 📄 Facture Générée et Détails

[](#4--facture-générée-et-détails)

Visualisation complète de la facture confirmée avec tous ses détails :

[![Facture Générée 1](docs/screenshots/facture_genere.png)](docs/screenshots/facture_genere.png)[![Facture Générée 2](docs/screenshots/facture_genere_2.png)](docs/screenshots/facture_genere_2.png)

**Informations affichées :**

- Code MECeF/DGI et QR Code
- Détails client et articles
- Totaux et paiements
- Statut de la facture

---

#### 5. 🔄 Création d'une Facture d'Avoir (FA)

[](#5--création-dune-facture-davoir-fa)

Pour annuler ou corriger une facture, créez une facture d'avoir :

[![Facture d'Avoir](docs/screenshots/facture_avoir.png)](docs/screenshots/facture_avoir.png)

⚠️ **IMPORTANT** : Le champ **Référence** doit contenir le **Code MECeF/DGI** de la facture d'origine **SANS les tirets** (24 caractères).

---

#### 6. ✅ Confirmation de la Facture d'Avoir

[](#6--confirmation-de-la-facture-davoir)

Confirmation de la facture d'avoir avec génération du code MECeF :

[![Confirmation Avoir](docs/screenshots/facture_avoir_confirmation.png)](docs/screenshots/facture_avoir_confirmation.png)

---

#### 7. 📋 Facture d'Avoir Générée

[](#7--facture-davoir-générée)

Visualisation de la facture d'avoir confirmée :

[![Avoir Généré](docs/screenshots/facture_avoir_gener%C3%A9.png)](docs/screenshots/facture_avoir_gener%C3%A9.png)

**Caractéristiques :**

- ✅ Liaison automatique avec la facture d'origine
- ✅ Code MECeF/DGI distinct
- ✅ QR Code spécifique pour l'avoir

---

#### 8. 📑 Liste Complète des Factures

[](#8--liste-complète-des-factures)

Tableau récapitulatif de toutes vos factures avec filtres avancés :

[![Liste des Factures](docs/screenshots/liste_factures.png)](docs/screenshots/liste_factures.png)

**Fonctionnalités :**

- 🔍 **Recherche** par numéro, client, montant
- 🎯 **Filtres** par statut (en attente, confirmée, annulée)
- 📅 **Tri** par date, montant
- 👁️ **Actions rapides** (voir détails, confirmer, annuler)

---

💻 Utilisation de l'API (Code)
-----------------------------

[](#-utilisation-de-lapi-code)

Vous pouvez utiliser la façade `EmecfService` ou l'injecter dans vos contrôleurs.

### 1. Créer une Facture de Vente (FV)

[](#1-créer-une-facture-de-vente-fv)

```
use Codianselme\LaraSygmef\Services\EmecfService;

public function createInvoice(EmecfService $service)
{
    // ✅ Récupérer l'IFU depuis la configuration
    $ifu = config('emecf.default_ifu');

    $data = [
        'ifu' => $ifu, // Utilise la configuration .env
        'type' => 'FV', // Facture de Vente
        'operator' => ['name' => 'John Doe'], // Nom de l'opérateur caisse
        'client' => [
            'name' => 'Client Example',
            'contact' => '+22997000000'
        ],
        'items' => [
            [
                'name' => 'Article 1',
                'price' => 10000,
                'quantity' => 1,
                'taxGroup' => 'B' // B = 18% (TVA)
            ]
        ],
        'payment' => [
            ['name' => 'ESPECES', 'amount' => 10000]
        ]
    ];

    $result = $service->submitInvoice($data);

    if ($result['success']) {
        return $result['data']['uid']; // UID de la facture
    }
}
```

### 2. Confirmer une Facture

[](#2-confirmer-une-facture)

Une facture créée est en attente. Elle doit être confirmée pour être valide.

```
$uid = '...'; // UID reçu lors de la création
$result = $service->finalizeInvoice($uid, 'confirm');

if ($result['success']) {
    $qrCode = $result['data']['qrCode'];
    $codeMECeF = $result['data']['codeMECeFDGI'];
    // Sauvegardez ces infos !
}
```

### 3. Créer une Facture d'Avoir (FA)

[](#3-créer-une-facture-davoir-fa)

Pour annuler ou corriger une facture, créez une **Facture d'Avoir**.

⚠️ **IMPORTANT** : Le champ `reference` doit contenir le **Code MECeF/DGI** de la facture d'origine, **SANS les tirets** (24 caractères).

```
use Codianselme\LaraSygmef\Services\EmecfService;

public function createCreditNote(EmecfService $service)
{
    // ✅ Récupérer l'IFU depuis la configuration
    $ifu = config('emecf.default_ifu');

    $data = [
        'ifu' => $ifu, // Utilise la configuration .env
        'type' => 'FA', // Facture d'Avoir
        'reference' => 'TEST2TJKLKV6722QZNX2U6PO', // Code MECeF sans tirets !
        'operator' => ['name' => 'John Doe'],
        'items' => [
            // Articles retournés (même format que FV)
            [
                'name' => 'Article 1',
                'price' => 10000,
                'quantity' => 1,
                'taxGroup' => 'B'
            ]
        ],
        'payment' => [
            ['name' => 'ESPECES', 'amount' => 10000]
        ]
    ];

    $result = $service->submitInvoice($data);

    if ($result['success']) {
        $uid = $result['data']['uid'];

        // Confirmer l'avoir
        $confirmResult = $service->finalizeInvoice($uid, 'confirm');

        if ($confirmResult['success']) {
            return $confirmResult['data'];
        }
    }

    return null;
}
```

#### Annulation d'une Facture

[](#annulation-dune-facture)

```
// Annuler une facture en attente
$cancellation = $emecf->finalizeInvoice($uid, 'cancel');
```

### Autres Opérations

[](#autres-opérations)

```
// Vérifier le statut de l'API
$status = $emecf->getInvoiceStatus();

// Récupérer les groupes de taxation
$taxGroups = $emecf->getTaxGroups();

// Récupérer les types de factures
$invoiceTypes = $emecf->getInvoiceTypes();

// Récupérer les types de paiement
$paymentTypes = $emecf->getPaymentTypes();
```

### Via les Routes API

[](#via-les-routes-api)

Si vous avez publié les routes (`php artisan vendor:publish --tag=emecf-routes`), vous pouvez utiliser les endpoints suivants :

MéthodeEndpointDescription`GET``/emecf/status`Statut de l'API`POST``/emecf/invoices`Soumettre une facture`PUT``/emecf/invoices/{uid}/finalize`Finaliser (confirm/cancel)`GET``/emecf/invoices/{uid}/pending`Détails facture en attente🎨 Dashboard Web
---------------

[](#-dashboard-web)

Le package inclut un **dashboard web complet et professionnel** pour gérer vos factures via une interface moderne.

### Accès au Dashboard

[](#accès-au-dashboard)

```
# Publier les routes dashboard
php artisan vendor:publish --tag=emecf-dashboard

# Accéder au dashboard
http://votre-app.test/emecf/dashboard
```

### Fonctionnalités du Dashboard

[](#fonctionnalités-du-dashboard)

- 📊 **Statistiques en temps réel** avec graphiques
- 📄 **Gestion complète des factures** (liste, création, détails)
- ✅ **Confirmation en un clic** avec génération du QR code
- 🔍 **Filtres avancés** (statut, date, recherche)
- 📱 **Design responsive** et moderne
- 🎨 **Interface premium** avec animations

### Documentation Complète

[](#documentation-complète)

Pour plus de détails sur le dashboard, consultez : [docs/DASHBOARD.md](docs/DASHBOARD.md)

🧪 Tests
-------

[](#-tests)

Pour lancer les tests du package :

```
composer test
```

📄 Licence
---------

[](#-licence)

Ce package est sous licence MIT.

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance83

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 74.3% 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 ~16 days

Total

6

Last Release

88d ago

### Community

Maintainers

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

---

Top Contributors

[![codianselme](https://avatars.githubusercontent.com/u/30752130?v=4)](https://github.com/codianselme "codianselme (26 commits)")[![edenahoussou](https://avatars.githubusercontent.com/u/113177800?v=4)](https://github.com/edenahoussou "edenahoussou (9 commits)")

---

Tags

laravelinvoicetaxbeninemecfdgi

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/codianselme-lara-sygmef/health.svg)

```
[![Health](https://phpackages.com/badges/codianselme-lara-sygmef/health.svg)](https://phpackages.com/packages/codianselme-lara-sygmef)
```

###  Alternatives

[laraveldaily/laravel-invoices

Missing invoices for Laravel

1.5k1.3M4](/packages/laraveldaily-laravel-invoices)[sebdesign/laravel-viva-payments

A Laravel package for integrating the Viva Payments gateway

4845.9k](/packages/sebdesign-laravel-viva-payments)[omalizadeh/laravel-multi-payment

A driver-based laravel package for online payments via multiple gateways

491.1k](/packages/omalizadeh-laravel-multi-payment)[musahmusah/laravel-multipayment-gateways

A Laravel Package that makes implementation of multiple payment Gateways endpoints and webhooks seamless

852.2k1](/packages/musahmusah-laravel-multipayment-gateways)[henryejemuta/laravel-monnify

A laravel package to seamlessly integrate monnify api within your laravel application

132.1k](/packages/henryejemuta-laravel-monnify)

PHPackages © 2026

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