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";