Skip to content

Creer votre Premiere Facture

Bienvenue dans ce guide pas-a-pas. En quelques minutes, vous allez creer votre premiere facture electronique conforme aux normes francaises et europeennes (Factur-X, UBL ou CII), puis la telecharger au format PDF.

Pas besoin d'etre un expert en facturation electronique : Scell.io s'occupe de toute la complexite technique pour vous.


Ce que vous allez apprendre

A la fin de ce tutorial, vous saurez :

  1. Creer une facture electronique conforme via le dashboard ou via l'API
  2. Choisir le bon format (Factur-X, UBL, CII)
  3. Soumettre votre facture au portail public de facturation
  4. Telecharger le PDF genere
  5. Verifier le statut de votre facture

Prerequis

Avant de commencer, assurez-vous d'avoir :

  • Un compte Scell.io actif -- Si ce n'est pas encore fait, inscrivez-vous sur scell.io (2 minutes)
  • Une entreprise configuree -- Votre SIRET doit etre verifie dans votre espace. Si vous venez de creer votre compte, cette verification est automatique
  • Des credits sur votre solde -- Chaque facture coute 0,04 EUR en production. En mode sandbox (test), c'est gratuit
  • Une cle API (si vous utilisez l'API) -- Generee depuis le dashboard, section "Cles API"

Astuce : Commencez toujours en mode sandbox pour tester sans consommer de credits. Les factures sandbox fonctionnent exactement comme en production, mais sans debit.


Methode 1 : Via le Dashboard

Cette methode est ideale si vous debutez ou si vous avez quelques factures a creer manuellement.

Etape 1 : Acceder a la section Factures

  1. Connectez-vous a votre dashboard sur app.scell.io
  2. Dans le menu lateral, cliquez sur Factures
  3. Cliquez sur le bouton Nouvelle facture en haut a droite

Etape 2 : Remplir les informations de l'emetteur

Les informations de votre entreprise (l'emetteur) sont pre-remplies a partir de votre profil :

  • Nom de l'entreprise : le nom tel qu'enregistre aupres de l'INSEE
  • SIRET : les 14 chiffres de votre SIRET (verifie automatiquement)
  • Adresse : adresse complete du siege social
  • Numero de TVA : votre numero de TVA intracommunautaire (optionnel)

Astuce : Si vos informations d'emetteur sont incorrectes, modifiez-les dans Parametres > Entreprise avant de creer la facture.

Etape 3 : Remplir les informations du destinataire

Renseignez les coordonnees de votre client :

  • Nom : raison sociale du destinataire
  • SIRET : 14 chiffres obligatoires (format B2B)
  • Adresse : adresse complete (rue, code postal, ville)
  • Numero de TVA : numero intracommunautaire si applicable

Attention : Le SIRET du destinataire est obligatoire pour les factures B2B en France. Verifiez-le sur annuaire-entreprises.data.gouv.fr en cas de doute.

Etape 4 : Ajouter les lignes de facture

Pour chaque ligne de votre facture, renseignez :

ChampDescriptionExemple
DescriptionCe que vous facturez"Prestation de conseil - Mars 2026"
QuantiteNombre d'unites5
Prix unitaire HTPrix par unite, hors taxes200,00 EUR
Taux de TVAPourcentage de TVA applicable20%

Le total HT, la TVA et le total TTC sont calcules automatiquement pour chaque ligne et pour l'ensemble de la facture.

Pour ajouter une ligne supplementaire, cliquez sur Ajouter une ligne.

Etape 5 : Completer les informations complementaires

  • Numero de facture : votre numerotation interne (ex: FACT-2026-001)
  • Date d'emission : la date du jour par defaut
  • Date d'echeance : doit etre posterieure ou egale a la date d'emission
  • Devise : EUR par defaut
  • Conditions de paiement : texte libre (ex: "Paiement a 30 jours fin de mois")
  • Notes : commentaires visibles sur la facture

Etape 6 : Choisir le format de sortie

Scell.io prend en charge trois formats de facturation electronique :

FormatUsage recommandeDescription
Factur-XFrance (recommande)PDF lisible par un humain + donnees XML integrees. C'est le format impose par la reforme francaise 2026
UBLInternationalFormat XML pur, utilise par de nombreux pays europeens et par le reseau PEPPOL
CIIEuropeenFormat XML de la norme EN 16931, utilise pour les echanges transfrontaliers

Astuce : Si vous ne savez pas lequel choisir, prenez Factur-X. C'est le format le plus courant en France et il produit un PDF/A-3 classique avec les donnees structurees integrees.

Etape 7 : Valider et soumettre

  1. Verifiez le recapitulatif de votre facture
  2. Cliquez sur Creer la facture
  3. Votre facture est creee avec le statut draft (brouillon)
  4. Pour la soumettre au portail public de facturation, cliquez sur Soumettre
  5. Le statut passe a transmitted (en cours de transmission)

Etape 8 : Telecharger le PDF

Une fois la facture creee, vous pouvez telecharger trois types de fichiers :

  • PDF : le document lisible, que vous pouvez envoyer a votre client
  • Original : le fichier source tel qu'il a ete genere
  • Converti : la version convertie dans le format choisi (Factur-X, UBL, CII)

Pour telecharger, cliquez sur l'icone de telechargement a cote de la facture dans la liste, ou sur le bouton Telecharger depuis la page de detail.


Methode 2 : Via l'API

Cette methode est faite pour les developpeurs qui veulent automatiser la creation de factures depuis leur application.

Etape 1 : Recuperer votre cle API

Si vous n'avez pas encore de cle API :

  1. Allez dans Dashboard > Cles API
  2. Cliquez sur Nouvelle cle API
  3. Choisissez l'environnement : sandbox pour tester, production pour les vraies factures
  4. Notez la cle affichee -- elle ne sera plus visible ensuite

La cle ressemble a ceci : sk_test_x8z9... (sandbox) ou sk_live_a3b4... (production).

Attention : Stockez votre cle API dans une variable d'environnement, jamais en dur dans votre code. Exemple : SCELL_API_KEY=sk_live_...

Etape 2 : Creer une facture simple (1 ligne)

Voici un exemple complet pour creer une facture avec une seule ligne de prestation :

bash
curl -X POST https://api.scell.io/api/v1/invoices \
  -H "X-API-Key: sk_live_VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "invoice_number": "FACT-2026-001",
    "direction": "outgoing",
    "output_format": "facturx",
    "issue_date": "2026-03-03",
    "due_date": "2026-04-02",
    "currency": "EUR",
    "total_ht": 1000.00,
    "total_tax": 200.00,
    "total_ttc": 1200.00,
    "seller_siret": "12345678901234",
    "seller_name": "Ma Societe SAS",
    "seller_address": {
      "line1": "10 rue de la Paix",
      "postal_code": "75002",
      "city": "Paris",
      "country": "FR"
    },
    "buyer_siret": "98765432109876",
    "buyer_name": "Client SARL",
    "buyer_address": {
      "line1": "25 avenue des Champs-Elysees",
      "postal_code": "75008",
      "city": "Paris",
      "country": "FR"
    },
    "lines": [
      {
        "description": "Prestation de conseil - Mars 2026",
        "quantity": 1,
        "unit_price": 1000.00,
        "tax_rate": 20.00,
        "total_ht": 1000.00,
        "total_tax": 200.00,
        "total_ttc": 1200.00
      }
    ]
  }'

Astuce : Pour tester en sandbox sans depenser de credits, remplacez l'URL par https://api.scell.io/api/v1/sandbox/invoices. Le comportement est identique, mais aucun credit n'est debite.

Etape 3 : Comprendre la reponse

Si tout s'est bien passe, vous recevez une reponse HTTP 201 :

json
{
  "message": "Facture creee avec succes",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "invoice_number": "FACT-2026-001",
    "direction": "outgoing",
    "output_format": "facturx",
    "issue_date": "2026-03-03",
    "due_date": "2026-04-02",
    "currency": "EUR",
    "total_ht": 1000.00,
    "total_tax": 200.00,
    "total_ttc": 1200.00,
    "seller": {
      "siret": "12345678901234",
      "name": "Ma Societe SAS",
      "address": {
        "line1": "10 rue de la Paix",
        "postal_code": "75002",
        "city": "Paris",
        "country": "FR"
      }
    },
    "buyer": {
      "siret": "98765432109876",
      "name": "Client SARL",
      "address": {
        "line1": "25 avenue des Champs-Elysees",
        "postal_code": "75008",
        "city": "Paris",
        "country": "FR"
      }
    },
    "lines": [
      {
        "line_number": 1,
        "description": "Prestation de conseil - Mars 2026",
        "quantity": 1,
        "unit_price": 1000.00,
        "tax_rate": 20.00,
        "total_ht": 1000.00,
        "total_tax": 200.00,
        "total_ttc": 1200.00
      }
    ],
    "status": "draft",
    "environment": "production",
    "amount_charged": 0.04,
    "created_at": "2026-03-03T10:30:00Z"
  }
}

Gardez bien le champ id -- c'est l'identifiant unique de votre facture, vous en aurez besoin pour la suite.

Etape 4 : Soumettre la facture

Une fois la facture creee (statut draft), soumettez-la au portail public de facturation :

bash
curl -X POST https://api.scell.io/api/v1/invoices/550e8400-e29b-41d4-a716-446655440000/submit \
  -H "X-API-Key: sk_live_VOTRE_CLE_API"

Reponse :

json
{
  "message": "Facture soumise avec succes",
  "invoice_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "transmitted",
  "superpdp_id": "SPDP-2026-ABC123"
}

Les statuts possibles de votre facture sont :

StatutSignification
draftBrouillon -- la facture est creee mais pas encore envoyee
validatedValidee -- prete a etre soumise
transmittedEn cours de transmission vers le portail public
completedAcceptee par le portail public de facturation
rejectedRejetee -- verifiez le message d'erreur

Etape 5 : Telecharger le PDF

Pour telecharger le PDF de votre facture :

bash
curl -X GET https://api.scell.io/api/v1/invoices/550e8400-e29b-41d4-a716-446655440000/download/pdf \
  -H "X-API-Key: sk_live_VOTRE_CLE_API"

Reponse :

json
{
  "url": "https://storage.scell.io/invoices/prod/.../facture.pdf?token=...",
  "expires_at": "2026-03-03T10:45:00Z"
}

Le lien de telechargement est temporaire (15 minutes). Utilisez-le immediatement ou regenerez-le en refaisant la requete.

Les types de fichiers disponibles sont :

  • pdf : le document PDF lisible
  • original : le fichier original genere
  • converted : la version dans le format cible (Factur-X XML, UBL, CII)

Etape 6 : Consulter la piste d'audit

Chaque facture dispose d'une piste d'audit complete. Pour la consulter :

bash
curl -X GET https://api.scell.io/api/v1/invoices/550e8400-e29b-41d4-a716-446655440000/audit-trail \
  -H "X-API-Key: sk_live_VOTRE_CLE_API"

Reponse :

json
{
  "data": [
    {
      "action": "invoice.created",
      "details": "Creation",
      "actor_ip": "203.0.113.42",
      "created_at": "2026-03-03T10:30:00Z"
    },
    {
      "action": "invoice.submitted",
      "details": "Soumission",
      "actor_ip": "203.0.113.42",
      "created_at": "2026-03-03T10:35:00Z"
    }
  ],
  "integrity_valid": true
}

Le champ integrity_valid confirme que la chaine de hachage de la piste d'audit est intacte -- personne n'a modifie l'historique.


Exemples de payloads

Facture avec plusieurs lignes et taux de TVA differents

json
{
  "invoice_number": "FACT-2026-002",
  "direction": "outgoing",
  "output_format": "facturx",
  "issue_date": "2026-03-03",
  "due_date": "2026-04-02",
  "currency": "EUR",
  "total_ht": 3500.00,
  "total_tax": 620.00,
  "total_ttc": 4120.00,
  "seller_siret": "12345678901234",
  "seller_name": "Ma Societe SAS",
  "seller_address": {
    "line1": "10 rue de la Paix",
    "postal_code": "75002",
    "city": "Paris",
    "country": "FR"
  },
  "buyer_siret": "98765432109876",
  "buyer_name": "Client SARL",
  "buyer_address": {
    "line1": "25 avenue des Champs-Elysees",
    "postal_code": "75008",
    "city": "Paris",
    "country": "FR"
  },
  "lines": [
    {
      "description": "Developpement application web",
      "quantity": 10,
      "unit_price": 250.00,
      "tax_rate": 20.00,
      "total_ht": 2500.00,
      "total_tax": 500.00,
      "total_ttc": 3000.00
    },
    {
      "description": "Formation utilisateurs (taux reduit)",
      "quantity": 2,
      "unit_price": 500.00,
      "tax_rate": 5.50,
      "total_ht": 1000.00,
      "total_tax": 55.00,
      "total_ttc": 1055.00
    },
    {
      "description": "Hebergement annuel (exonere)",
      "quantity": 1,
      "unit_price": 0.00,
      "tax_rate": 0.00,
      "total_ht": 0.00,
      "total_tax": 0.00,
      "total_ttc": 0.00
    }
  ]
}

Facture au format UBL (international)

Changez simplement le champ output_format :

json
{
  "invoice_number": "INV-2026-001",
  "direction": "outgoing",
  "output_format": "ubl",
  "issue_date": "2026-03-03",
  "due_date": "2026-04-02",
  "currency": "EUR",
  "total_ht": 5000.00,
  "total_tax": 1000.00,
  "total_ttc": 6000.00,
  "seller_siret": "12345678901234",
  "seller_name": "Ma Societe SAS",
  "seller_address": {
    "line1": "10 rue de la Paix",
    "postal_code": "75002",
    "city": "Paris",
    "country": "FR"
  },
  "buyer_siret": "98765432109876",
  "buyer_name": "Acme GmbH",
  "buyer_address": {
    "line1": "Friedrichstrasse 123",
    "postal_code": "10117",
    "city": "Berlin",
    "country": "DE"
  },
  "lines": [
    {
      "description": "Consulting services - Q1 2026",
      "quantity": 1,
      "unit_price": 5000.00,
      "tax_rate": 20.00,
      "total_ht": 5000.00,
      "total_tax": 1000.00,
      "total_ttc": 6000.00
    }
  ]
}

Resolution des problemes courants

Erreur "Le SIRET du vendeur est invalide"

Cause : Le SIRET doit contenir exactement 14 chiffres, sans espaces ni tirets.

Solution :

  • Verifiez que votre SIRET contient bien 14 chiffres : 12345678901234
  • Pas de separateurs : 123 456 789 01234 ni 123-456-789-01234
  • Verifiez votre SIRET sur annuaire-entreprises.data.gouv.fr

Erreur "Solde insuffisant"

Cause : Votre solde est trop bas pour couvrir le cout de la facture (0,04 EUR).

Solution :

  1. Allez dans Dashboard > Solde
  2. Cliquez sur Recharger
  3. Choisissez un montant (minimum 10 EUR)
  4. Reessayez la creation de facture

Astuce : Activez le rechargement automatique dans les parametres de votre solde pour ne jamais etre bloque. Vous definissez un seuil (ex: 5 EUR) et un montant de recharge (ex: 50 EUR), et votre solde se recharge tout seul.

Erreur "Format non reconnu" (output_format)

Cause : Le champ output_format ne contient pas une valeur valide.

Solution : Utilisez une de ces trois valeurs exactes (en minuscules) :

  • facturx
  • ubl
  • cii

Erreur de validation (HTTP 422)

Cause : Un ou plusieurs champs obligatoires sont manquants ou mal formates.

Solution : La reponse d'erreur contient le detail des champs en erreur :

json
{
  "message": "The given data was invalid.",
  "errors": {
    "seller_address.line1": ["Le champ adresse ligne 1 est requis."],
    "lines.0.description": ["La description de la ligne est requise."]
  }
}

Corrigez chaque champ indique puis renvoyez la requete.

La facture reste en statut "draft"

Cause : La facture a ete creee mais pas encore soumise au portail.

Solution : Appelez l'endpoint de soumission :

bash
curl -X POST https://api.scell.io/api/v1/invoices/{id}/submit \
  -H "X-API-Key: sk_live_VOTRE_CLE_API"

La facture est rejetee (statut "rejected")

Cause : Le portail public de facturation a rejete votre facture.

Solution :

  1. Consultez le champ status_message dans les details de la facture pour comprendre la raison du rejet
  2. Corrigez les informations erronees
  3. Creez une nouvelle facture avec les bonnes informations
  4. Soumettez-la a nouveau

Combien ca coute ?

ActionCout
Creer une facture en sandboxGratuit
Creer une facture en production0,04 EUR
Soumettre la facture au portailInclus
Telecharger le PDFInclus
Consulter la piste d'auditInclus

Et ensuite ?

Maintenant que vous savez creer des factures, voici les prochaines etapes :

  • Creer un avoir : Si vous devez annuler ou corriger une facture, consultez la documentation sur les avoirs (credit notes)
  • Automatiser avec les webhooks : Recevez des notifications en temps reel quand le statut de vos factures change. Voir le tutorial Integrer l'API Scell.io
  • Signer vos documents : Besoin de faire signer un contrat ? Voir le tutorial Votre Premiere Signature Electronique
  • Consulter votre solde : Suivez votre consommation et activez la recharge automatique depuis le dashboard

Besoin d'aide ? Contactez notre equipe sur support@scell.io ou consultez la documentation API complete.

Documentation Scell.io