Aller au contenu principal

Démarrage rapide

Quickstart : créer une facture en PHP

SDK officiel scell/sdk pour Laravel et PHP 8.2+

Le SDK PHP officiel `scell/sdk` (Composer) expose `ScellApiClient` pour créer des factures Factur-X, des avoirs, et des signatures eIDAS depuis n'importe quel projet PHP 8.2+. Compatible Laravel, Symfony, Slim, vanilla. Authentification par clé `sk_live_*` (production) ou `sk_test_*` (sandbox). Le SDK gère automatiquement les retries, l'idempotence (header `Idempotency-Key`), et le mapping snake_case ↔ camelCase. Disponible sur Packagist, version 3.5.0.

À retenir

  • Prérequis : PHP 8.2+, Composer 2.x, ext-curl, ext-json
  • Installation : `composer require scell/sdk`
  • Variable d'env : `SCELL_API_KEY=sk_live_xxx` ou `sk_test_xxx`
  • HTTP : Guzzle 7 (transitive dependency)
  • Output attendu : `inv_01HXYZ...` (UUID v7) + `status: draft`
  • Codes erreur : 401 (clé invalide), 422 (validation), 402 (balance insuffisante), 429 (rate limit)

Exemple de code

<?php
require 'vendor/autoload.php';

use Scell\Sdk\ScellApiClient;

$client = new ScellApiClient(getenv('SCELL_API_KEY'));

// 1. Facture B2B (avec SIRET acheteur)
$b2b = $client->invoices()->create([
    'format' => 'factur-x',
    'profile' => 'EN16931',
    'currency' => 'EUR',
    'seller' => [
        'siret' => '12345678901234',
        'name' => 'Ma SAS',
        'address' => ['street' => '1 rue Test', 'city' => 'Paris', 'postal_code' => '75001', 'country' => 'FR'],
        'vat_number' => 'FR12345678901',
    ],
    'buyer' => [
        'siret' => '98765432109876',
        'name' => 'Client SARL',
        'address' => ['street' => '2 avenue Demo', 'city' => 'Lyon', 'postal_code' => '69001', 'country' => 'FR'],
    ],
    'lines' => [['description' => 'Prestation conseil', 'quantity' => 1, 'unit_price' => 1000.00, 'vat_rate' => 20.0]],
]);
echo "B2B: {$b2b['id']} ({$b2b['status']})\n";

// 2. Facture B2C (particulier, BR-CO-26 appliquée)
$b2c = $client->invoices()->create([
    'format' => 'factur-x',
    'profile' => 'EN16931',
    'currency' => 'EUR',
    'seller' => $b2b['seller'],
    'buyer' => [
        'buyer_is_individual' => true,
        'name' => 'Jean Dupont',
        'email' => 'jean@example.com',
        'address' => ['street' => '3 bd Client', 'city' => 'Marseille', 'postal_code' => '13001', 'country' => 'FR'],
    ],
    'lines' => [['description' => 'Abonnement', 'quantity' => 1, 'unit_price' => 49.90, 'vat_rate' => 20.0]],
]);
echo "B2C: {$b2c['id']} ({$b2c['status']})\n";

// 3. Signature simple eIDAS EU-SES
$sig = $client->signatures()->create([
    'document_url' => 'https://example.com/contrat.pdf',
    'signers' => [['name' => 'Jean Dupont', 'email' => 'jean@example.com', 'phone' => '+33612345678']],
    'signature_options' => ['signature_mode' => 'drawn', 'timezone' => 'Europe/Paris'],
]);
echo "Signature: {$sig['id']} → {$sig['signing_url']}\n";

Voir aussi

Vos préférences cookies

Nous utilisons des cookies pour améliorer votre expérience. Les cookies essentiels sont toujours actifs. Politique cookies.