Cas d’usage
Implémentation du flow B2C (buyer_is_individual + BR-CO-26)
Facturer un particulier sans SIRET ni TVA intra
Pour facturer un consommateur final (B2C), Scell.io applique automatiquement la règle EN 16931 BR-CO-26 quand vous passez `buyer_is_individual: true` dans le payload. Cette règle rend optionnels les champs BT-46 (BuyerLegalOrganisation), BT-47 (BuyerTaxIdentifier) et BT-48 (BuyerVATIdentifier). Sans cette règle, le XML CII serait rejeté par les validateurs EN16931 puisqu'un acheteur particulier n'a légalement ni SIREN ni TVA intracommunautaire. Champs requis en B2C : `first_name`, `last_name`, `address` (rue, code postal, ville, pays). Email recommandé pour l'envoi PDF. Le PDF affiche `Particulier` au lieu d'une raison sociale.
À retenir
- Champ `buyer_is_individual: true` active BR-CO-26
- BT-46, BT-47, BT-48 deviennent optionnels
- Champs requis : `first_name`, `last_name`, `address`
- Email recommandé (pas obligatoire) pour envoi PDF
- PDF affiche `Particulier` au lieu d'une raison sociale
- XML CII reste EN16931-valide
Exemple de code
import { ScellClient } from '@scell/sdk';
const scell = new ScellClient({ apiKey: process.env.SCELL_SECRET_KEY! });
const invoice = await scell.invoices.create({
format: 'factur-x',
buyer_is_individual: true, // Active BR-CO-26 (skip SIREN/TVA)
buyer: {
first_name: 'Jean',
last_name: 'Dupont',
email: 'jean.dupont@example.com',
address: {
street: '12 rue de la Paix',
postal_code: '75002',
city: 'Paris',
country_code: 'FR',
},
},
lines: [
{ description: 'Coaching sportif (10 séances)', quantity: 10, unit_price: 60.00, vat_rate: 20 },
],
});