e-invoicing

Invoice body

Create the invoice body, which contains the invoice XML embedded inside a Standard Business Document (SBD).

Sovos accepts France invoices in the following formats: SCI (covered in this article), UBL 2.1, CII (UN/CEFACT D22B), and Factur-X. SCI is Sovos's cross-market input format. SCI follows UBL 2.1 structure, and Sovos transforms it into the required legal format before transmission. For native UBL, CII, and Factur-X, refer to the authoritative schema definitions in the PPF external specifications at https://www.impots.gouv.fr/specifications-externes-b2b.

For the SBD wrapper and SBDH structure, see Create a Standard Business Document.

SBDH values

When submitting an invoice, use these values alongside the standard SBDH configuration in Create a Standard Business Document.

Element Value
Receiver.Identifier The buyer's electronic billing address (adresse de facturation électronique) as registered in the PPF Annuaire. Takes the form of the buyer's SIREN, SIREN_SIRET, or SIREN_suffix. Set Authority="FR" on the element.
DocumentIdentification.Standard urn:oasis:names:specification:ubl:schema:xsd:Invoice-2
DocumentIdentification.TypeVersion 2.1
DocumentIdentification.Type Invoice
Scope: BusinessService.BusinessServiceName Default
Scope: BusinessCategory B2B
Scope: Mapping.InputSchema The file format — see table below.

InputSchema values

Set Scope: Mapping.InputSchema to one of the following values depending on the file format you are submitting:

Submission type InputSchema value
Invoice (SCI) FR-SCI-1.0-INVOICE-1.0
Invoice (UBL EN16931 France CIUS) FR-CIUSUBL-1.0-INVOICE-1.0
Invoice (UBL EXTENDED-CTC-FR) FR-CIUSUBLEXTENDED-1.0-INVOICE-1.0
Invoice (CII UN/CEFACT France CIUS) FR-CIUSCII-1.0-INVOICE-1.0
Invoice (CII EXTENDED-CTC-FR) FR-CIUSCIIEXTENDED-1.0-INVOICE-1.0
Invoice (Factur-X) FR-FACTURX-1.06-INVOICE-1.0
Invoice (Factur-X Basic) FR-FACTURXBASIC-1.06-INVOICE-1.0
Invoice (Factur-X Basic WL) FR-FACTURXBASICWL-1.06-INVOICE-1.0
Invoice (Factur-X Extended) FR-FACTURXEXTENDED-1.06-INVOICE-1.0
Invoice (Factur-X Minimum) FR-FACTURXMINIMUM-1.06-INVOICE-1.0

Embedding the invoice

How you embed the invoice depends on the format. For SCI format, the invoice XML goes directly inside <svs:SovosCanonicalInvoice>. For all other formats (UBL, CII, Factur-X), the document is Base64-encoded and placed in <svs:SovosLegalDocument>:

SCI format:

XML
<svs:SovosDocument>
  <svs:SovosCanonicalInvoice>
    <Invoice>
      <!-- Invoice XML here -->
    </Invoice>
  </svs:SovosCanonicalInvoice>
</svs:SovosDocument>

All other formats (UBL, CII, Factur-X):

XML
<svs:SovosDocument>
  <svs:SovosLegalDocument>
    <enc:Base64Document>
      <enc:EmbeddedDocument id="[INV-2026-001]"
                           fileName="invoice.xml"
                           mimeCode="application/xml">
        [Base64-encoded invoice XML]
      </enc:EmbeddedDocument>
    </enc:Base64Document>
  </svs:SovosLegalDocument>
</svs:SovosDocument>

Invoice schema

A UBL invoice opens with namespace declarations on the root <Invoice> element, followed by header fields, party blocks, tax totals, monetary totals, and one or more invoice lines.

The cbc: prefix marks simple values (text, dates, codes, amounts). The cac: prefix marks structured blocks (parties, addresses, line items). Both are defined by the namespace declarations and are required for the document to be valid.

XML
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
  xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
  xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

  <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
  <cbc:ProfileID>B1</cbc:ProfileID>
  <cbc:ID>INV-2026-001</cbc:ID>
  <cbc:IssueDate>2026-05-01</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

  <cac:AccountingSupplierParty>...</cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>...</cac:AccountingCustomerParty>
  <cac:TaxTotal>...</cac:TaxTotal>
  <cac:LegalMonetaryTotal>...</cac:LegalMonetaryTotal>
  <cac:InvoiceLine>...</cac:InvoiceLine>

</Invoice>

Header fields

SCI / UBL path Element Cardinality Description
Invoice/CustomizationID <cbc:CustomizationID> 1..1 Profile identifier.
Invoice/ProfileID <cbc:ProfileID> 0..1 Invoicing framework (cadre de facturation). Required for France — see France-specific fields below.
Invoice/ID <cbc:ID> 1..1 Invoice number.
Invoice/IssueDate <cbc:IssueDate> 1..1 Invoice date. Format: YYYY-MM-DD.
Invoice/InvoiceTypeCode <cbc:InvoiceTypeCode> 1..1 Invoice type code.
Invoice/DocumentCurrencyCode <cbc:DocumentCurrencyCode> 1..1 Invoice currency. ISO 4217, e.g. EUR.
Invoice/TaxCurrencyCode <cbc:TaxCurrencyCode> 0..1 VAT accounting currency. Required when invoice currency is not EUR.
Invoice/TaxPointDate <cbc:TaxPointDate> 0..1 Date VAT becomes chargeable.
Invoice/DueDate <cbc:DueDate> 0..1 Payment due date.
Invoice/Note <cbc:Note> 0..n Free-text note. In France, notes use subject codes — see France-specific fields below.
Invoice/BuyerReference <cbc:BuyerReference> 0..1 Buyer's internal routing reference.
Validation
  • CustomizationID — Use urn:cen.eu:en16931:2017 for the EN16931 profile.

  • ID (invoice number) — Must be unique. The PPF performs a blocking check across the combination of invoice number + issue year + seller SIREN. A match on all three is rejected. Numbers must follow sequential numbering rules per BOFIP BOI-TVA-DECLA-30-20-20-10 (BR-FR-CO-02).

  • IssueDate — Must not be a future date (BR-FR-CO-01).

  • InvoiceTypeCode — Must be one of the reform-approved codes. Common values: 380 (standard), 381 (credit note), 384 (corrective), 386 (down payment), 389 (self-billed). Full list in AFNOR XP Z12-012.

Seller block

<cac:AccountingSupplierParty>

XML
<<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0225">123456789</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID schemeID="0009">12345678900012</cbc:ID>  <!-- SIRET, optional -->
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>Acme SAS</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>12 rue de la Paix</cbc:StreetName>
      <cbc:CityName>Paris</cbc:CityName>
      <cbc:PostalZone>75001</cbc:PostalZone>
      <cac:Country>
        <cbc:IdentificationCode>FR</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
<!-- Optional. International VAT number (BT-48).
     Format: FR + 2 check digits + 9-digit SIREN (13 characters total).
     If included, must match the international VAT ID in your company setup in Sovos.
     Omit this block entirely if you do not use BT-48. -->
	<cac:PartyTaxScheme>
  		<cbc:CompanyID>FR40123456789</cbc:CompanyID>
  	<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
	</cac:PartyTaxScheme>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Acme SAS</cbc:RegistrationName>
      <cbc:CompanyID schemeID="0002">123456789</cbc:CompanyID>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingSupplierParty>
Seller block fields Element Cardinality Description
Invoice/AccountingSupplierParty/Party/EndPointID <cbc:EndpointID schemeID="0225"> 0..1 Seller's electronic routing address.
Invoice/AccountingSupplierParty/Party/PartyLegalEntity/CompanyID <cbc:CompanyID schemeID="0002"> 0..1 Seller's SIREN.
Invoice/AccountingSupplierParty/Party/PartyLegalEntity/RegistrationName <cbc:RegistrationName> 1..1 Seller's registered company name.
Invoice/AccountingSupplierParty/Party/PartyName/Name <cbc:Name> in <cac:PartyName> 0..1 Seller's trading name.
Invoice/AccountingSupplierParty/Party/PartyTaxScheme/CompanyID <cbc:CompanyID> in <cac:PartyTaxScheme> 0..1 Seller's international VAT number (BT-48). Optional. Format: FR + 2 check digits + 9-digit SIREN. For example: FR00123456789. If provided, the value must match the international VAT ID configured in your company setup in Sovos.
Invoice/AccountingSupplierParty/Party/PartyIdentification/ID <cbc:ID schemeID="0009"> 0..n Seller's SIRET (optional).
Invoice/AccountingSupplierParty/Party/PostalAddress <cac:PostalAddress> 1..1 Seller's postal address.
Invoice/AccountingSupplierParty/Party/PostalAddress/Country/IdentificationCode <cbc:IdentificationCode> 1..1 Seller's country code. ISO 3166, e.g. FR.
Validation
  • EndPointID — Required for France e-invoicing. Must begin with the seller's SIREN, for example: 123456789 or 123456789_site1. schemeID must be 0225. Alphanumeric characters plus -, _, . only. Max 125 characters (BR-FR-13, BR-FR-23, BR-FR-25).

  • PartyLegalEntity/CompanyID — Required for France. Exactly 9 digits. Must be registered and active in the PPF Annuaire. schemeID must be 0002 (BR-FR-10).

  • PartyIdentification/ID (SIRET) — If provided, must be exactly 14 digits. schemeID must be 0009. First 9 digits must match the seller's SIREN (BR-FR-09).

  • PartyTaxScheme/CompanyID (BT-48): Optional. If provided, must follow the format FR + 2 check digits + 9-digit SIREN (13 characters total). Sovos validates the format on submission. A malformed value causes a validation failure. If you include this field, ensure the same value is configured in the international VAT ID field in your company setup in Sovos; a mismatch may cause the document to fail company identification.

Buyer block

<cac:AccountingCustomerParty>

XML
<cac:AccountingCustomerParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0225">987654321</cbc:EndpointID>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Buyer Corp SAS</cbc:RegistrationName>
      <cbc:CompanyID schemeID="0002">987654321</cbc:CompanyID>
    </cac:PartyLegalEntity>
    <cac:PostalAddress>
      <cbc:CityName>Lyon</cbc:CityName>
      <cbc:PostalZone>69001</cbc:PostalZone>
      <cac:Country>
        <cbc:IdentificationCode>FR</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
  </cac:Party>
</cac:AccountingCustomerParty>
Buyer block fields Element Cardinality Description
Invoice/AccountingCustomerParty/Party/EndpointID <cbc:EndpointID schemeID="0225"> 0..1 Buyer's electronic routing address.
Invoice/AccountingCustomerParty/Party/PartyLegalEntity/CompanyID <cbc:CompanyID schemeID="0002"> 0..1 Buyer's SIREN.
Invoice/AccountingCustomerParty/Party/PartyLegalEntity/RegistrationName <cbc:RegistrationName> 1..1 Buyer's registered company name.
Invoice/AccountingCustomerParty/Party/PartyTaxScheme/CompanyID <cbc:CompanyID> in <cac:PartyTaxScheme> 0..1 Buyer's VAT number.
Invoice/AccountingCustomerParty/Party/PostalAddress <cac:PostalAddress> 1..1 Buyer's postal address.
Invoice/AccountingCustomerParty/Party/PostalAddress/Country/IdentificationCode <cbc:IdentificationCode> 1..1 Buyer's country code. ISO 3166.
Validation
  • EndpointID — Required for France e-invoicing. Sovos queries the PPF directory with this value to route the invoice to the buyer's PA. Must begin with the buyer's SIREN. schemeID must be 0225. Alphanumeric characters plus -, _, . only. Max 125 characters. If not found or not active in the PPF directory, the invoice is rejected (BR-FR-12, BR-FR-21, BR-FR-23, BR-FR-25).

  • PartyLegalEntity/CompanyID — Required for France e-invoicing scope. Exactly 9 digits. Must be active in the PPF Annuaire. schemeID must be 0002 (BR-FR-11)

Tax total

<cac:TaxTotal>

XML
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">200.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">200.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
Tax total fields Element Cardinality Description
Invoice/TaxTotal/TaxAmount <cbc:TaxAmount currencyID="..."> 1..1 Total VAT amount for the invoice.
Invoice/TaxTotal/TaxSubtotal/TaxableAmount <cbc:TaxableAmount> 1..1 Tax base amount for this VAT category.
Invoice/TaxTotal/TaxSubtotal/TaxAmount <cbc:TaxAmount> 1..1 VAT amount for this category.
Invoice/TaxTotal/TaxSubtotal/TaxCategory/ID <cbc:ID> in <cac:TaxCategory> 1..1 VAT category code.
Invoice/TaxTotal/TaxSubtotal/TaxCategory/Percent <cbc:Percent> 0..1 VAT rate. Omit for exempt categories.
Validation
  • All amount fields (TaxAmount, TaxableAmount) — Max 19 digits total, max 2 decimal places. Use . as the decimal separator. A - sign counts as one character (BR-FR-DEC-01).

  • TaxCategory/ID — France accepts only: S (standard), E (exempt), AE (reverse charge), K (intra-community), G (export), O (out of scope), Z (zero rate) (BR-FR-15).

  • TaxCategory/Percent — Express as a percentage, e.g. 20 not 0.20. Must be a France-permitted rate. Most common: 0, 2.1, 5.5, 10, 20. Full list in AFNOR XP Z12-012 (BR-FR-16).

Monetary totals

<cac:LegalMonetaryTotal>

XML
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">1200.00</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">1200.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Monetary totals fields Element Cardinality Description
Invoice/LegalMonetaryTotal/LineExtensionAmount <cbc:LineExtensionAmount> 1..1 Sum of net line amounts.
Invoice/LegalMonetaryTotal/TaxExclusiveAmount <cbc:TaxExclusiveAmount> 1..1 Total amount excluding VAT.
Invoice/LegalMonetaryTotal/TaxInclusiveAmount <cbc:TaxInclusiveAmount> 1..1 Total amount including VAT.
Invoice/LegalMonetaryTotal/PayableAmount <cbc:PayableAmount> 1..1 Amount due for payment.
Invoice/LegalMonetaryTotal/PrepaidAmount <cbc:PrepaidAmount> 0..1 Amount already paid, e.g. for pre-paid card invoices.
Validation

All amount fields — Max 19 digits total, max 2 decimal places. Use . as the decimal separator (BR-FR-DEC-01).

Invoice lines

<cac:InvoiceLine>

XML
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Consulting</cbc:Name>
    <cbc:Description>Q1 consulting services</cbc:Description>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>
Invoice line fields Element Cardinality Description
Invoice/InvoiceLine/ID <cbc:ID> 1..1 Line identifier.
Invoice/InvoiceLine/InvoicedQuantity <cbc:InvoicedQuantity unitCode="..."> 0..1 Quantity with unit code (UN/ECE Rec 20), e.g. C62 for units.
Invoice/InvoiceLine/LineExtensionAmount <cbc:LineExtensionAmount> 1..1 Net line amount (quantity × unit price, net of line discounts).
Invoice/InvoiceLine/Item/Name <cbc:Name> in <cac:Item> 1..1 Line item name.
Invoice/InvoiceLine/Item/Description <cbc:Description> in <cac:Item> 0..n Line item description.
Invoice/InvoiceLine/Item/ClassifiedTaxCategory/ID <cbc:ID> in <cac:ClassifiedTaxCategory> 1..1 VAT category code for this line.
Invoice/InvoiceLine/Item/ClassifiedTaxCategory/Percent <cbc:Percent> 0..1 VAT rate for this line.
Invoice/InvoiceLine/Price/PriceAmount <cbc:PriceAmount> 1..1 Unit price excluding VAT.
Validation
  • ID — Must be unique within the invoice.

  • InvoicedQuantity — Max 19 digits total, max 4 decimal places (BR-FR-DEC-02).

  • LineExtensionAmount — Max 19 digits total, max 2 decimal places (BR-FR-DEC-01).

  • ClassifiedTaxCategory/ID — Same allowed values as the header tax block: S, E, AE, K, G, O, Z (BR-FR-15).

  • ClassifiedTaxCategory/Percent — Must be a France-permitted rate (BR-FR-16).

Payment means

<cac:PaymentMeans>

XML
<cac:PaymentMeans>
<cbc:PaymentMeansCode name="Virement">30</cbc:PaymentMeansCode>
<cbc:PaymentID>200000008_UC4_2023001</cbc:PaymentID>
<cac:PayeeFinancialAccount>
	<cbc:ID>FR76 1254 2547 2569 8542 5874 660</cbc:ID>
	<cbc:Name>Nom de compte de paiement</cbc:Name>
	<cac:FinancialInstitutionBranch>
		<cbc:ID>BICBANQUE</cbc:ID>
	</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
Payment means fields Element Cardinality Description
Invoice/PaymentMeans/PaymentMeansCode <cbc:PaymentMeansCode> 1..1 Payment method type code. UNTDID 4461 code list.
Invoice/PaymentMeans/PaymentID <cbc:PaymentID> 0..1 Payment reference note, e.g. a remittance reference or invoice number repeated for reconciliation.
Invoice/PaymentMeans/PayeeFinancialAccount <cac:PayeeFinancialAccount> 0..1 Payee's financial account. Required when PaymentMeansCode indicates credit transfer (e.g. 30, 58).
Invoice/PaymentMeans/PayeeFinancialAccount/ID <cbc:ID> in <cac:PayeeFinancialAccount> 1..1 Payment account identifier, e.g. IBAN.
Invoice/PaymentMeans/PayeeFinancialAccount/Name <cbc:Name> in <cac:PayeeFinancialAccount> 0..1 Payment account name, e.g. the account holder's name.
Invoice/PaymentMeans/PayeeFinancialAccount/FinancialInstitutionBranch <cac:FinancialInstitutionBranch> 0..1 Payee's financial institution branch. Contains the BIC/SWIFT identifier of the bank.
Invoice/PaymentMeans/PayeeFinancialAccount/FinancialInstitutionBranch/ID <cbc:ID> in <cac:FinancialInstitutionBranch> 0..1 Payment service provider identifier, e.g. BIC/SWIFT code.
Validation
  • PaymentMeansCode — Required when the <cac:PaymentMeans> block is present. Use UNTDID 4461 codes. Common values for France: 30 (credit transfer), 49 (direct debit), 57 (standing agreement), 58 (SEPA credit transfer).

  • PayeeFinancialAccount/ID — Use IBAN format for SEPA payments, e.g. FR7612345678901234567890189.

  • FinancialInstitutionBranch/ID — Use BIC/SWIFT format when provided, e.g. BNPAFRPPXXX.

Additional document reference

<cac:AdditionalDocumentReference>

Use <cac:AdditionalDocumentReference> to attach supporting documents to an invoice, such as a PDF visual representation. The block repeats — include one instance per attachment. Under the France e-invoicing mandate, the structured XML is the legally valid invoice. The DGFiP treats any embedded PDF as a visual representation only — it has no legal standing.

XML
<cac:AdditionalDocumentReference>
  <cbc:ID schemeID="[UNTDID-1153-code]">INV-2026-001-attachment</cbc:ID>
  <cbc:DocumentTypeCode>[document-type-code]</cbc:DocumentTypeCode>
  <cbc:DocumentDescription>Invoice PDF representation</cbc:DocumentDescription>
  <cac:Attachment>
    <cbc:EmbeddedDocumentBinaryObject
        mimeCode="application/pdf"
        filename="INV-2026-001.pdf">
      JVBERi0xLjQKJ...
    </cbc:EmbeddedDocumentBinaryObject>
  </cac:Attachment>
</cac:AdditionalDocumentReference>
Additional document reference fields Element Cardinality Description
Invoice/AdditionalDocumentReference <cac:AdditionalDocumentReference> 0..n Additional supporting documents block. Repeatable — include one instance per attachment.
Invoice/AdditionalDocumentReference/ID <cbc:ID> 0..1 Supporting document reference identifier, or invoiced object identifier.
Invoice/AdditionalDocumentReference/ID @schemeID schemeID attribute 1..1 Scheme identifier for the document reference. UNTDID 1153 code list. Required when ID is present.
Invoice/AdditionalDocumentReference/DocumentTypeCode <cbc:DocumentTypeCode> 0..1 Type of the referenced document, expressed as a code. See the DGFiP external specifications for permitted values.
Invoice/AdditionalDocumentReference/DocumentDescription <cbc:DocumentDescription> 0..1 Supporting document description, for example a short label identifying the attachment.
Invoice/AdditionalDocumentReference/Attachment/EmbeddedDocumentBinaryObject <cbc:EmbeddedDocumentBinaryObject> 0..1 The attachment content, Base64-encoded. Use for embedded binary files such as PDFs.
Invoice/AdditionalDocumentReference/Attachment/EmbeddedDocumentBinaryObject @mimeCode mimeCode attribute 1..1 MIME type of the attachment. Required when EmbeddedDocumentBinaryObject is present.
Invoice/AdditionalDocumentReference/Attachment/EmbeddedDocumentBinaryObject @filename filename attribute 1..1 File name of the attachment, including the extension, for example INV-2026-001.pdf. Required when EmbeddedDocumentBinaryObject is present.
Invoice/AdditionalDocumentReference/Attachment/ExternalReference/URI <cbc:URI> in <cac:ExternalReference> 0..1 URI pointing to an externally hosted document. Use as an alternative to EmbeddedDocumentBinaryObject when the attachment is not embedded in the XML.
Validation
  • EmbeddedDocumentBinaryObject and ExternalReference/URI are mutually exclusive within a single <cac:Attachment> — use one or the other, not both.

  • mimeCode and filename — Both attributes are required when EmbeddedDocumentBinaryObject is present. Permitted MIME types: application/pdf, image/png, image/jpeg, text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.spreadsheet.

  • ID — Max 50 characters (supporting document reference) or 100 characters (invoiced object identifier).

  • ID @schemeID — Max three characters.

  • DocumentDescription — Max 100 characters.

  • @mimeCode — Max 100 characters.

  • @filename — Max 100 characters.

  • ExternalReference/URI — Max 100 characters.

France-specific fields

These elements use standard UBL structure but carry France-specific values required by the reform.

ProfileID — invoicing framework

<cbc:ProfileID> declares the invoicing context. Required for France.

Code Description
B1 Goods invoice
S1 Services invoice
M1 Mixed goods and services
B2 Goods invoice — already paid
S2 Services invoice — already paid
B4 / S4 / M4 Final invoice after down payment
S5 Subcontractor services invoice
S6 Co-contractor services invoice
B7 / S7 Invoice already subject to e-reporting
Note — subject-coded notes

<cbc:Note> elements carry structured information when prefixed with a subject code separated by #:

XML
<cbc:Note>#BAR#B2B</cbc:Note>
<cbc:Note>#PMT#Payment by bank transfer to IBAN FR76...</cbc:Note>
<cbc:Note>#AAI#General invoice footer information</cbc:Note>
Subject code Purpose
BAR Treatment scope: B2B (e-invoicing), B2BINT (cross-border B2B e-reporting), B2C (B2C e-reporting), OUTOFSCOPE.
PMT Payment instructions.
PMD Payment method description.
AAI General information, e.g. invoice footer text.
AAB Payment terms.
SUR Seller remarks.
ABL Legal information, e.g. trade register number.
Corrective invoices and credit notes
  • If InvoiceTypeCode is a corrective type (384 and variants), exactly one prior invoice reference and its issue date must be present at header level (BR-FR-CO-04)

  • If InvoiceTypeCode is a credit note (381 and variants), at least one prior invoice reference must be present at header level, or a line-level reference must appear in every invoice line (BR-FR-CO-05)

Complete SBD example

The sample files below are complete, production-ready SBD payloads in the exact format required for POST /v1/documents. Each contains a full SBDH wrapper with the invoice XML under sci:SovosCanonicalInvoice>.

Download sample — standard goods invoice (B1)

Download sample — services invoice (S1)