FNE Bridge
Documentation publique · API REST

Intégrez FNE Bridge à votre logiciel

Retrouvez les endpoints de certification, les paramètres attendus, des exemples de requêtes et les formats de réponse. Cette documentation est consultable librement ; une clé API Bridge est nécessaire pour les opérations protégées.

URL de base
https://fne-bridge.com
Préfixe commun des endpoints de l’API.
Avant de commencer

Authentification

La clé API Bridge identifie l’entreprise et autorise l’utilisation de l’API de liaison FNE DGI.

Authorization
Header · Bearer token · requis pour les opérations protégées
Authorization: Bearer fnb_live_VOTRE_CLE_BRIDGE
Gardez votre clé confidentielle. Ne l’intégrez pas dans une application publique côté navigateur et ne la publiez jamais dans un dépôt de code. La clé est créée depuis votre espace entreprise.
Facture de vente · FNE DGI

Certifier une facture de vente

Permet de soumettre une facture de vente à la certification FNE DGI depuis un logiciel, un ERP ou une application web.

POST
POST/api/v1/fne/invoices/sign

En-têtes et paramètres

Authorizationheaderrequis
Clé API Bridge de l’entreprise au format Bearer : Bearer fnb_live_…
Acceptheaderrequis
application/json
Content-Typeheaderrequis
application/json
X-Source-Referenceheaderoptionnel
Référence interne facultative permettant d’identifier l’opération dans votre logiciel et dans l’historique du Bridge.
invoiceTypestringrequis
Type de document. Pour cette opération : sale.
paymentMethodstringrequis
cash, card, check, mobile-money, transfer ou deferred.
templatestringrequis
B2C, B2G, B2B ou B2F.
isRnebooleanrequis
Indique si la facture est reliée à un reçu normalisé électronique.
rnestringoptionnel
Obligatoire lorsque isRne=true.
clientNccstringoptionnel
NCC du client. Obligatoire lorsque template=B2B.
clientCompanyNamestringrequis
Nom / raison sociale du client.
clientPhonestring|numberrequis
Téléphone du client. Une chaîne est recommandée afin de préserver le zéro initial.
clientEmailstringrequis
Adresse e-mail du client.
clientSellerNamestringoptionnel
Nom du vendeur.
pointOfSalestringrequis
Nom / code du point de vente.
establishmentstringrequis
Nom de l’établissement.
commercialMessagestringoptionnel
Message commercial.
footerstringoptionnel
Message personnel / pied de facture.
foreignCurrencystringoptionnel
Devise étrangère. Codes acceptés : XOF, USD, EUR, JPY, CAD, GBP, AUD, CNH, CHF, HKD, NZD.
foreignCurrencyRatenumberoptionnel
Taux de change. Obligatoire si foreignCurrency est renseignée ; la procédure l’impose aussi en B2F avec devise différente.
itemsarrayrequis
Liste des articles. Au moins un article.
customTaxesarrayoptionnel
Taxes personnalisées au niveau facture, avec name et amount.
discountnumberoptionnel
Remise sur le total HT.
items[].taxesarrayrequis
Codes TVA : TVA, TVAB, TVAC, TVAD.
items[].customTaxesarrayoptionnel
Taxes personnalisées de l’article. Chaque entrée contient name et amount.
items[].referencestringoptionnel
Référence interne de l’article.
items[].descriptionstringrequis
Désignation de l’article.
items[].quantitynumberrequis
Quantité, strictement supérieure à zéro.
items[].amountnumberrequis
Prix unitaire HT.
items[].discountnumberoptionnel
Remise sur l’article.
items[].measurementUnitstringoptionnel
Unité de mesure de l’article.

Exemple de corps JSON

application/json
{
  "invoiceType": "sale",
  "paymentMethod": "mobile-money",
  "template": "B2B",
  "isRne": false,
  "rne": null,
  "clientNcc": "9502363NN",
  "clientCompanyName": "ENTREPRISE ABC",
  "clientPhone": "0709080765",
  "clientEmail": "contact@abc.ci",
  "clientSellerName": "Ali Hassan",
  "pointOfSale": "23",
  "establishment": "Agence principale",
  "commercialMessage": "Soyez les bienvenus",
  "footer": "Merci pour votre confiance",
  "foreignCurrency": "",
  "foreignCurrencyRate": 0,
  "items": [
    {
      "taxes": ["TVA"],
      "customTaxes": [{"name": "GRA", "amount": 5}],
      "reference": "ref009",
      "description": "Article exemple",
      "quantity": 30,
      "amount": 20000,
      "discount": 10,
      "measurementUnit": "pcs"
    }
  ],
  "customTaxes": [{"name": "DTD", "amount": 5}],
  "discount": 10
}

Champs de réponse

nccstring
Identifiant contribuable associé à la réponse FNE DGI.
referencestring
Numéro / référence FNE.
tokenstring
Code ou URL de vérification à utiliser pour le QR Code.
warningboolean
Alerte relative au stock de stickers.
balance_fundsinteger
Dernier solde FNE renvoyé après l’opération.
invoiceobject
Informations détaillées du document certifié, incluant notamment invoice.id et les articles.

Réponses et erreurs

200/201 Succès

La certification a été traitée avec succès. La réponse contient notamment la référence FNE DGI et les informations du document certifié.

application/json
{
  "ncc": "9606123E",
  "reference": "9606123E25000000019",
  "token": "http://54.247.95.108/fr/verification/019465c1-3f61-766c-9652-706e32dfb436",
  "warning": false,
  "balance_funds": 999980,
  "invoice": {
    "id": "e2b2d8da-a532-4c08-9182-f5b428ca468d",
    "parentId": null,
    "parentReference": null,
    "token": "019465c1-3f61-766c-9652-706e32dfb436",
    "reference": "9606123E25000000019",
    "type": "invoice",
    "subtype": "normal",
    "date": "2025-01-14T16:59:11.016Z",
    "paymentMethod": "mobile-money",
    "amount": 852660,
    "vatAmount": 172260,
    "fiscalStamp": 0,
    "discount": 10,
    "clientNcc": "9502363NN",
    "clientCompanyName": "ENTREPRISE CLIENT",
    "status": "paid",
    "source": "api",
    "items": []
  }
}
400 Requête invalide

La plateforme FNE de la DGI a refusé la requête en raison d’un paramètre métier invalide.

application/json
{
  "message": "Point of sale is not valid",
  "error": "bad_request",
  "statusCode": 400
}
401 Plateforme FNE de la DGI

La plateforme FNE de la DGI a refusé l’opération pour des raisons d’accès.

application/json
{
  "message": "Unauthorized",
  "error": "unauthorized_exception",
  "statusCode": 401
}
401 Authentification Bridge

La clé API Bridge est absente, invalide, expirée ou rattachée à une entreprise inactive.

application/json
{
  "message": "Invalid Bridge API key",
  "error": "bridge_unauthorized",
  "statusCode": 401
}
422 Validation

La requête ne respecte pas le contrat attendu par l’API de liaison FNE DGI.

application/json
{
  "message": "The invoice type field is required.",
  "errors": {
    "invoiceType": [
      "The invoice type field is required."
    ]
  }
}
500 Erreur plateforme FNE DGI

Le Bridge retourne une erreur neutre fne_processing_error et conserve le détail brut de la FNE dans upstream. La cause métier exacte n’est pas déduite et aucune répétition automatique n’est recommandée.

application/json
{
  "success": false,
  "error": "fne_processing_error",
  "message": "La plateforme FNE n'a pas pu finaliser l'opération.",
  "statusCode": 500,
  "retryable": false,
  "upstream": {
    "error": "invoice_signing_error",
    "message": "Error signing invoice",
    "statusCode": 500,
    "errors": [],
    "extraParams": []
  }
}
503 Service indisponible

Le service requis pour traiter l’opération est temporairement indisponible ou la configuration de l’entreprise doit être vérifiée.

application/json
{
  "message": "Service temporairement indisponible pour cette entreprise.",
  "error": "bridge_service_unavailable",
  "statusCode": 503
}

À retenir

  • Pour B2B, clientNcc est obligatoire et doit être une chaîne de caractères.
  • Le champ taxes est envoyé sous forme de tableau, par exemple ["TVA"].
  • Conservez invoice.id et les identifiants invoice.items[].id si votre logiciel doit ensuite créer un avoir.
Bordereau d’achat · FNE DGI

Certifier un bordereau d’achat

Permet de soumettre un bordereau d’achat de produits agricoles à la certification FNE DGI. Pour cette opération, invoiceType doit valoir purchase.

POST
POST/api/v1/fne/invoices/sign

En-têtes et paramètres

Authorizationheaderrequis
Clé API Bridge de l’entreprise au format Bearer : Bearer fnb_live_…
Acceptheaderrequis
application/json
Content-Typeheaderrequis
application/json
X-Source-Referenceheaderoptionnel
Référence interne facultative permettant d’identifier l’opération dans votre logiciel et dans l’historique du Bridge.
invoiceTypestringrequis
Type de document. Pour le bordereau : purchase.
paymentMethodstringrequis
cash, card, check, mobile-money, transfer ou deferred.
templatestringrequis
B2C, B2G, B2B ou B2F.
isRnebooleanrequis
Indique si l’opération est reliée à un reçu normalisé électronique.
rnestringoptionnel
Obligatoire lorsque isRne=true.
clientNccstringoptionnel
NCC du fournisseur. Obligatoire lorsque template=B2B.
clientCompanyNamestringrequis
Nom du fournisseur.
clientPhonestring|numberrequis
Téléphone du fournisseur.
clientEmailstringrequis
E-mail du fournisseur.
clientSellerNamestringoptionnel
Nom du vendeur.
pointOfSalestringrequis
Point de vente.
establishmentstringrequis
Établissement.
commercialMessagestringoptionnel
Message commercial.
footerstringoptionnel
Message personnel.
itemsarrayrequis
Liste des produits agricoles.
discountnumberoptionnel
Remise sur le total HT.
items[].referencestringoptionnel
Référence de l’article.
items[].descriptionstringrequis
Désignation du produit.
items[].quantitynumberrequis
Quantité.
items[].amountnumberrequis
Prix unitaire HT.
items[].discountnumberoptionnel
Remise sur l’article.
items[].measurementUnitstringoptionnel
Unité de mesure.

Exemple de corps JSON

application/json
{
  "invoiceType": "purchase",
  "paymentMethod": "mobile-money",
  "template": "B2B",
  "isRne": false,
  "rne": null,
  "clientNcc": "9502363NN",
  "clientCompanyName": "COOPERATIVE DU GRAND OUEST",
  "clientPhone": "0709080765",
  "clientEmail": "info@example.ci",
  "clientSellerName": "Ali Hassan",
  "pointOfSale": "FACTURECHAP",
  "establishment": "FASTMIND",
  "commercialMessage": "Soyez les bienvenus",
  "footer": "Merci",
  "foreignCurrency": "",
  "foreignCurrencyRate": 0,
  "items": [
    {
      "reference": "ref001",
      "description": "Cacao brut premier choix",
      "quantity": 2000,
      "amount": 2200,
      "discount": 10,
      "measurementUnit": "kg"
    }
  ],
  "discount": 10
}

Champs de réponse

nccstring
Identifiant contribuable.
referencestring
Référence FNE du bordereau certifié.
tokenstring
Code / URL de vérification.
warningboolean
Alerte stickers.
balance_fundsinteger
Dernier solde FNE renvoyé après l’opération.
invoiceobject
Informations détaillées du document certifié.

Réponses et erreurs

200/201 Succès

Le bordereau d’achat a été certifié. La réponse peut notamment contenir invoice.subtype=purchase_slip, la référence FNE et balance_funds.

application/json
{
  "ncc": "2600244J",
  "token": "http://54.247.95.108/fr/verification/01a1126b-e52d-7cc8-8f4e-3d17ce9ae00e",
  "invoice": {
    "id": "83e03dc2-cff2-41d8-a9bb-6fe3cebb772d",
    "type": "invoice",
    "subtype": "purchase_slip",
    "template": "B2B",
    "clientNcc": "9502363NN",
    "clientCompanyName": "COOPERATIVE DU GRAND OUEST",
    "reference": "B2600244J26000000001",
    "status": "paid"
  },
  "warning": false,
  "reference": "B2600244J26000000001",
  "balance_funds": 999920
}
400 Requête invalide

La plateforme FNE de la DGI a refusé la requête en raison d’un paramètre métier invalide.

application/json
{
  "message": "Point of sale is not valid",
  "error": "bad_request",
  "statusCode": 400
}
401 Plateforme FNE de la DGI

La plateforme FNE de la DGI a refusé l’opération pour des raisons d’accès.

application/json
{
  "message": "Unauthorized",
  "error": "unauthorized_exception",
  "statusCode": 401
}
401 Authentification Bridge

La clé API Bridge est absente, invalide, expirée ou rattachée à une entreprise inactive.

application/json
{
  "message": "Invalid Bridge API key",
  "error": "bridge_unauthorized",
  "statusCode": 401
}
422 Validation

La requête ne respecte pas le contrat attendu par l’API de liaison FNE DGI.

application/json
{
  "message": "The invoice type field is required.",
  "errors": {
    "invoiceType": [
      "The invoice type field is required."
    ]
  }
}
500 Erreur plateforme FNE DGI

Le Bridge retourne une erreur neutre fne_processing_error et conserve le détail brut de la FNE dans upstream. La cause métier exacte n’est pas déduite et aucune répétition automatique n’est recommandée.

application/json
{
  "success": false,
  "error": "fne_processing_error",
  "message": "La plateforme FNE n'a pas pu finaliser l'opération.",
  "statusCode": 500,
  "retryable": false,
  "upstream": {
    "error": "invoice_signing_error",
    "message": "Error signing invoice",
    "statusCode": 500,
    "errors": [],
    "extraParams": []
  }
}
503 Service indisponible

Le service requis pour traiter l’opération est temporairement indisponible ou la configuration de l’entreprise doit être vérifiée.

application/json
{
  "message": "Service temporairement indisponible pour cette entreprise.",
  "error": "bridge_service_unavailable",
  "statusCode": 503
}

À retenir

  • invoiceType doit valoir purchase.
  • Pour un bordereau d’achat B2B, clientNcc est obligatoire et doit être envoyé comme chaîne, par exemple "9502363NN".
  • Les champs taxes et customTaxes ne sont pas requis pour les articles du bordereau d’achat dans le contrat actuel.
  • La réponse de l’opération suit le format présenté dans la section « Retours serveur et erreurs ».
Facture d’avoir · FNE DGI

Certifier une facture d’avoir

Permet de certifier un avoir à partir d’une facture déjà certifiée. Utilisez l’identifiant de la facture d’origine et les identifiants des articles concernés.

POST
POST/api/v1/fne/invoices/{invoiceId}/refund

En-têtes et paramètres

Authorizationheaderrequis
Clé API Bridge de l’entreprise au format Bearer : Bearer fnb_live_…
Acceptheaderrequis
application/json
Content-Typeheaderrequis
application/json
X-Source-Referenceheaderoptionnel
Référence interne facultative permettant d’identifier l’opération dans votre logiciel et dans l’historique du Bridge.
invoiceIdstringrequis
Identifiant FNE de la facture d’origine, récupéré dans invoice.id après certification.
itemsarrayrequis
Articles faisant l’objet de l’avoir.
items[].idstringrequis
Identifiant FNE de l’article à retourner.
items[].quantitynumberrequis
Quantité de l’article à retourner.

Exemple de corps JSON

application/json
{
  "items": [
    {
      "id": "bf9cc241-9b5f-4d26-a570-aa8e682a759e",
      "quantity": 20
    },
    {
      "id": "50b5c9d9-e22d-4dce-ba3c-5d2519c3418f",
      "quantity": 10
    }
  ]
}

Champs de réponse

nccstring
Identifiant contribuable.
referencestring
Référence de l’avoir FNE.
tokenstring
Code / URL de vérification.
warningboolean
Alerte stickers.
balance_fundsinteger
Dernier solde FNE renvoyé après l’opération.

Réponses et erreurs

201 Succès

L’avoir a été certifié avec succès.

application/json
{
  "ncc": "9606123E",
  "reference": "A9606123E2500000006",
  "token": "http://54.247.95.108/fr/verification/019465ca-c27c-700e-ba3f-09d0759b9170",
  "warning": false,
  "balance_funds": 999960
}
401 Plateforme FNE de la DGI

La plateforme FNE de la DGI a refusé l’opération pour des raisons d’accès.

application/json
{
  "message": "Unauthorized",
  "error": "unauthorized_exception",
  "statusCode": 401
}
401 Authentification Bridge

La clé API Bridge est absente, invalide, expirée ou rattachée à une entreprise inactive.

application/json
{
  "message": "Invalid Bridge API key",
  "error": "bridge_unauthorized",
  "statusCode": 401
}
422 Validation

Le corps de la requête ne respecte pas le contrat attendu pour la certification de l’avoir.

application/json
{
  "message": "The items field is required.",
  "errors": {
    "items": ["The items field is required."]
  }
}
500 Erreur plateforme FNE DGI

Le Bridge retourne une erreur neutre fne_processing_error et conserve le détail brut de la FNE dans upstream. La cause métier exacte n’est pas déduite et aucune répétition automatique n’est recommandée.

application/json
{
  "success": false,
  "error": "fne_processing_error",
  "message": "La plateforme FNE n'a pas pu finaliser l'opération.",
  "statusCode": 500,
  "retryable": false,
  "upstream": {
    "error": "invoice_signing_error",
    "message": "Error signing invoice",
    "statusCode": 500,
    "errors": [],
    "extraParams": []
  }
}
503 Service indisponible

Le service requis pour traiter l’opération est temporairement indisponible ou la configuration de l’entreprise doit être vérifiée.

application/json
{
  "message": "Service temporairement indisponible pour cette entreprise.",
  "error": "bridge_service_unavailable",
  "statusCode": 503
}

À retenir

  • invoiceId est l’identifiant FNE de la facture d’origine, pas sa référence lisible.
  • items[].id correspond à l’identifiant FNE retourné pour la ligne d’origine.
  • items[].quantity doit être un nombre JSON strictement supérieur à zéro. Le Bridge normalise les chaînes numériques valides avant l’appel FNE.
  • Le succès de la certification d’un avoir est retourné avec le code HTTP 201.
Disponibilité

État du service

Vérifie la disponibilité de l’API de liaison FNE DGI. Cet endpoint ne nécessite pas de clé API Bridge.

GET
GET/api/v1/fne/health
Cet endpoint est public et ne nécessite pas de clé API.
200 · application/json
{
  "status": "ok",
  "service": "API de liaison FNE DGI",
  "time": "2026-09-17T20:00:00+00:00"
}
Valeurs de référence

Codes et choix acceptés

Moyens de paiement

cashEspèces
cardCarte bancaire
checkChèque
mobile-moneyMobile Money
transferVirement bancaire
deferredÀ terme

Modèles de facture

B2BEntreprise / professionnel possédant un NCC
B2FClient à l’international
B2GInstitution gouvernementale
B2CParticulier

Codes de taxe

TVATVA normale 18 %
TVABTVA réduite 9 %
TVACTVA exonérée conventionnelle 0 %
TVADTVA exonérée légale 0 % pour TEE et RME

Devises

XOFUSDEURJPYCADGBPAUDCNHCHFHKDNZD