ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Nigeria — FIRS, MBS et e-invoicing UBL

Le Nigeria a déployé en 2022 un pilote de facturation électronique B2B sous l'égide du FIRS (Federal Inland Revenue Service). Le Merchant-Buyer System (MBS), basé sur UBL 2.1 avec extensions FIRS, est entré en phase obligatoire le 1er février 2025 pour les grands contribuables avec extension progressive jusqu'en 2027.

Timeline réglementaire

  • 16 avril 2007 — FIRS Establishment Act. Statut légal autonome du FIRS, indépendant du Ministère des Finances, en charge de la collecte des impôts fédéraux.
  • 2 janvier 2020 — Finance Act 2019. Modernisation majeure : introduit la VAT à 7,5 %, pose les bases d'une digitalisation fiscale accrue.
  • 1er juillet 2022 — Lancement pilote eInvoice. FIRS lance le programme MBS (Merchant-Buyer System) pour les transactions cross-border, schéma XML aligné UBL.
  • 11 janvier 2024 — Finance Act 2023. Donne au FIRS l'autorité légale pour rendre obligatoire la facture électronique B2B et fixer les modalités techniques.
  • 1er octobre 2024 — Phase pilote obligatoire grands contribuables. Sélection FIRS de 100 grandes entreprises en pilote obligatoire, sandbox UBL avec aller-retour validation.
  • 1er février 2025 — Phase 1 obligatoire. Tous les contribuables avec CA > NGN 5 milliards doivent émettre via MBS pour les transactions B2B. IRN obligatoire sur les factures physiques imprimées.
  • 1er juillet 2025 — Phase 2 obligatoire. Extension aux contribuables avec CA > NGN 1 milliard.
  • 2026-2027 — Phase 3 généralisation. Extension progressive aux mid-market et progressivement à toutes les entreprises assujetties VAT.

Schéma technique

Le format FIRS est un UBL 2.1 standard avec customization urn:firs.gov.ng:einvoice:1.0 et extensions propriétaires :

  • TIN : format NNNNNNNN-NNNN, 8 chiffres d'identifiant + 4 chiffres de code de branche (siège 0001).
  • InvoiceTypeCode : 380 (Commercial invoice), 381 (Credit note), 383 (Debit note), 386 (Prepayment invoice).
  • DocumentCurrencyCode : NGN, USD, EUR… ; le taux de change CBN (Central Bank of Nigeria) doit accompagner les factures en devises étrangères.
  • TaxScheme.ID : VAT (Value Added Tax, 7,5 %), WHT (Withholding Tax, variable selon nature service / bien).
  • firs:FIRSIRN : Invoice Reference Number attribué par le FIRS après validation, format FIRS-YYYY-IRN-NNNNNNNN.
  • firs:QRCode : QR Code embarqué dans le document, base64, encode {TIN_seller, TIN_buyer, total, VAT, IRN, hash}.

Exemple minimal d'une facture UBL FIRS :

xmlfirs-einvoice-ubl.xml
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
         xmlns:firs="urn:firs:ng:einvoice:extension:1.0">
  <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
  <cbc:CustomizationID>urn:firs.gov.ng:einvoice:1.0</cbc:CustomizationID>
  <cbc:ID>NG-2026-00000142</cbc:ID>
  <cbc:IssueDate>2026-05-16</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>NGN</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeID="TIN">12345678-0001</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyName>
        <cbc:Name>Ediverse Demo Nigeria Ltd</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>Broad Street 25</cbc:StreetName>
        <cbc:CityName>Lagos</cbc:CityName>
        <cac:Country><cbc:IdentificationCode>NG</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
    </cac:Party>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeID="TIN">87654321-0001</cbc:ID>
      </cac:PartyIdentification>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="NGN">3750.00</cbc:TaxAmount>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:PayableAmount currencyID="NGN">53750.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="NGN">50000.00</cbc:LineExtensionAmount>
    <cac:Item><cbc:Name>Cloud services May 2026</cbc:Name></cac:Item>
  </cac:InvoiceLine>
  <firs:FIRSIRN>FIRS-2026-IRN-00000142</firs:FIRSIRN>
  <firs:QRCode>...</firs:QRCode>
</Invoice>

Flux de soumission

Le vendeur s'authentifie auprès du FIRS (OAuth 2.0 client credentials + signed JWT) puis soumet sa facture UBL via POST /v1/invoices sur einvoice.firs.gov.ng. Le FIRS valide en temps réel (TIN, schéma, calculs, doublons) puis attribue un IRN et un QR Code, et retourne le document signé.

textfirs-mbs-flow.txt
┌──────────────┐    ┌────────────────────┐    ┌──────────────┐
│ Vendeur NG   │───>│ FIRS MBS           │───>│ Acheteur NG  │
│ (ERP, UBL)   │    │ Merchant-Buyer     │    │ (réception + │
│ + TIN + auth │    │ System einvoice    │    │  consultation│
│              │    │ .firs.gov.ng       │    │  IRN/QR)     │
└──────────────┘    └─────────┬──────────┘    └──────────────┘


                  ┌────────────────────┐
                  │ FIRS attribue IRN  │ ← validation
                  │ + QR Code + Hash   │   temps réel
                  │ + signature FIRS   │   ou rejet
                  └────────────────────┘

L'acheteur reçoit la facture validée par les canaux habituels (e-mail, EDI, portail vendeur). Il peut vérifier l'IRN sur einvoice.firs.gov.ng ou scanner le QR Code embarqué. Les contrôles WHT (Withholding Tax) sont automatisés via l'IRN : le FIRS rapproche les flux pour préremplir les déclarations.

Validation

  • FIRS : firs.gov.ng — site officiel, publications, lois fiscales, FAQ eInvoice.
  • FIRS eInvoice (production) : einvoice.firs.gov.ng — portail de soumission MBS, vérification IRN, accès contribuable.
  • FIRS eInvoice (sandbox UAT) : uat.einvoice.firs.gov.ng — environnement de test, API REST, swagger doc, tests d'intégration.
  • Joint Tax Board (JTB) : jtb.gov.ng — coordination entre FIRS (impôts fédéraux) et SIRS (impôts des États fédérés), vérification TIN.

Pièges courants

  1. TIN format strict avec code branche. Le TIN nigérian n'est pas juste 8 chiffres : c'est NNNNNNNN-NNNN avec le suffixe de branche obligatoire. Le siège utilise -0001, les filiales -0002, -0003… Erreur fréquente : transmettre un TIN sans suffixe → rejet API systématique.
  2. WHT (Withholding Tax) — composante complexe. Au-delà de la VAT 7,5 %, beaucoup de transactions B2B sont soumises à un Withholding Tax (5 % services, 10 % intérêts, 5 % loyers…). L'UBL FIRS doit porter ces taxes dans cac:TaxTotal avec TaxScheme.ID = WHT. Omettre = pénalités côté acheteur.
  3. NGN volatile + multi-currency. Le Naira a connu de fortes dévaluations 2023-2024. Les factures en USD/EUR doivent toujours référencer le taux CBN du jour : pas le taux de marché parallèle. Tester la mise à jour quotidienne du taux CBN dans le pipeline.
  4. Sandbox UAT vs Prod — décalage de schéma. Le FIRS itère vite sur le schéma ; UAT et Prod peuvent diverger temporairement (parfois 2-3 semaines). Toujours valider contre les XSD les plus récents et tester sur UAT 7-10 jours avant chaque release Prod.
  5. IRN à imprimer sur factures physiques. Pour les contribuables transitionnant vers le full e-invoicing, le FIRS exige que les factures imprimées (encore tolérées en transition) portent l'IRN et le QR Code. Une facture imprimée sans IRN n'est pas opposable fiscalement.

Liens transverses