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 thePPF 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:
<svs:SovosDocument>
<svs:SovosCanonicalInvoice>
<Invoice>
<!-- Invoice XML here -->
</Invoice>
</svs:SovosCanonicalInvoice>
</svs:SovosDocument>
All other formats (UBL, CII, Factur-X):
<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 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— Useurn:cen.eu:en16931:2017for 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>
<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>
<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 VAT number, e.g. FR40123456789. |
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, e.g.123456789or123456789_site1.schemeIDmust be0225. 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.schemeIDmust be0002(BR-FR-10). -
PartyIdentification/ID(SIRET) — If provided, must be exactly 14 digits.schemeIDmust be0009. First 9 digits must match the seller's SIREN (BR-FR-09).
-
Buyer block
<cac:AccountingCustomerParty>
<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 PDP. Must begin with the buyer's SIREN.schemeIDmust be0225. 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.schemeIDmust be0002(BR-FR-11)
-
Tax total
<cac:TaxTotal>
<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.20not0.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>
<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>
<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>
<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.
<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
-
-
EmbeddedDocumentBinaryObjectandExternalReference/URIare mutually exclusive within a single<cac:Attachment>— use one or the other, not both. -
mimeCodeandfilename— Both attributes are required whenEmbeddedDocumentBinaryObjectis 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 B1Goods invoice S1Services invoice M1Mixed goods and services B2Goods invoice — already paid S2Services invoice — already paid B4/S4/M4Final invoice after down payment S5Subcontractor services invoice S6Co-contractor services invoice B7/S7Invoice already subject to e-reporting - Note — subject-coded notes
-
<cbc:Note>elements carry structured information when prefixed with a subject code separated by#:<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 BARTreatment scope: B2B(e-invoicing),B2BINT(cross-border B2B e-reporting),B2C(B2C e-reporting),OUTOFSCOPE.PMTPayment instructions. PMDPayment method description. AAIGeneral information, e.g. invoice footer text. AABPayment terms. SURSeller remarks. ABLLegal information, e.g. trade register number. - Corrective invoices and credit notes
-
-
If
InvoiceTypeCodeis a corrective type (384and variants), exactly one prior invoice reference and its issue date must be present at header level (BR-FR-CO-04) -
If
InvoiceTypeCodeis a credit note (381and 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 Base64-encoded inside <enc:EmbeddedDocument>.
To inspect the invoice XML: decode the Base64 content from <enc:EmbeddedDocument> to view the full structure including all parties, tax totals, and line items. Your own payloads must also Base64-encode the invoice XML before embedding.
