fr-ctc-flow2-v1
Support for the French CTC (Continuous Transaction Control) Flow 2 B2B
e-invoicing requirements from the French electronic invoicing reform.
This addon provides the necessary structures and validations to ensure compliance
with the French CTC specifications for B2B electronic invoicing.
It requires the EN16931 addon as it extends the European standard with French-specific
requirements for the e-invoicing reform.
This addon is required for regulated invoice. This refers to invoices between two parties
registered for VAT in France. This addon should not be used for invoices which should be reported.
Note on currency conversion (BR-FR-CO-12): When an invoice is issued in a non-EUR
currency, the gobl.ubl library will automatically handle the conversion to EUR and
present the invoice with both the original currency and EUR equivalents for tax
amounts, ensuring compliance with French accounting requirements.
Sources
Extensions
Billing Mode
Code used to describe the billing framework of the invoice. The billing mode indicates the nature of goods/services and the payment context. Code prefixes indicate the invoice nature:- “B”: Goods invoice (Biens)
- “S”: Services invoice
- “M”: Mixed/dual invoice (goods and services that are not accessory to each other)
fr-ctc-billing-mode
fr-ctc-billing-mode
| Code | Name |
|---|---|
B1 | Goods - Deposit invoice |
B2 | Goods - Already paid invoice |
B4 | Goods - Final invoice (after down payment) |
B7 | Goods - E-reporting (VAT already collected) |
S1 | Services - Deposit invoice |
S2 | Services - Already paid invoice |
S4 | Services - Final invoice (after down payment) |
S5 | Services - Subcontractor invoice |
S6 | Services - Co-contractor invoice |
S7 | Services - E-reporting (VAT already collected) |
M1 | Mixed - Deposit invoice |
M2 | Mixed - Already paid invoice |
M4 | Mixed - Final invoice (after down payment) |
Validation Rules
bill.Invoice
bill.Invoice
| Field | Test | Validation Code / Message |
|---|---|---|
| Invoice |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-01Must be 1-35 characters, alphanumeric plus -+_/ (BR-FR-01/02), including the series |
preceding[*] |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-02Preceding code must be 1-35 characters, alphanumeric plus -+_/ (BR-FR-01/02), including the series |
preceding |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-03Corrective invoices must have exactly one preceding invoice reference (BR-FR-CO-04) |
preceding |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-04Corrective invoices must have exactly one preceding invoice reference (BR-FR-CO-04) |
preceding |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-05Credit notes must have at least one preceding invoice reference (BR-FR-CO-05) |
tax |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-06Tax is required |
tax.ext |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-07UNTDID document type must be valid (BR-FR-04) |
tax.ext |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-08Billing mode extension is required |
tax.ext |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-09Advance payment document types not allowed for factoring billing modes (BR-FR-CO-08) |
supplier.inboxes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-10Seller electronic address required for French B2B invoices (BR-FR-13) |
supplier.identities |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-11SIREN identity required for French parties with scheme 0002 and scope legal (BR-FR-10/11) |
supplier |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-12Party must have endpoint ID with scheme 0225 (SIREN) (BR-FR-21/22) |
customer.inboxes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-13Buyer electronic address required for French B2B invoices (BR-FR-13) |
customer.identities |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-14SIREN identity required for French parties with scheme 0002 and scope legal (BR-FR-10/11) |
customer |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-15Party must have endpoint ID with scheme 0225 (SIREN) (BR-FR-21/22) |
ordering.identities |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-16Only one ordering identity with UNTDID reference ‘AFL’ is allowed (BR-FR-30) |
ordering.identities |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-17Only one ordering identity with UNTDID reference ‘AWW’ is allowed (BR-FR-30) |
ordering |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-18Ordering with seller is required when supplier is under STC scheme (BR-FR-CO-15) |
ordering.seller |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-19Seller is required when supplier is under STC scheme (BR-FR-CO-15) |
ordering.seller.tax_id |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-20Tax ID is required when supplier is under STC scheme (BR-FR-CO-15) |
ordering.seller.tax_id.code |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-21Code is required when supplier is under STC scheme (BR-FR-CO-15) |
notes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-22For sellers with STC scheme (0231), a note with code ‘TXD’ and text ‘MEMBRE_ASSUJETTI_UNIQUE’ is required (BR-FR-CO-14) |
ordering |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-23Ordering with contracts is required for consolidated credit notes (BR-FR-CO-03) |
ordering.contracts |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-24At least one contract reference is required in ordering details for consolidated credit notes (BR-FR-CO-03) |
ordering.contracts |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-25At least one contract reference is required in ordering details for consolidated credit notes (BR-FR-CO-03) |
delivery |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-26Delivery details are required for consolidated credit notes (BR-FR-CO-03) |
delivery.period |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-27Delivery period is required for consolidated credit notes (BR-FR-CO-03) |
| Invoice |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-28Due dates must not be before invoice issue date (BR-FR-CO-07) |
payment |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-29Payment details are required for final invoices (BR-FR-CO-09) |
payment.terms |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-30Payment terms required for final invoices (BR-FR-CO-09) |
payment.terms.due_dates |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-31At least one due date required for final invoices (BR-FR-CO-09) |
totalsCalculated |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-33Advance amount must equal total with tax for final invoices (BR-FR-CO-09) |
totalsCalculated |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-34Payable amount must be zero for final invoices (BR-FR-CO-09) |
totals.advanceCalculated |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-32Advance amount is required for already-paid invoices (BR-FR-CO-09) |
notes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-35Notes are required for French CTC invoices (BR-FR-05) |
notes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-36Missing required note codes (BR-FR-05) |
notes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-37Duplicate note codes found (BR-FR-06/BR-FR-30) |
notes |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-38BAR note text must be one of: B2B, B2BINT, B2C, OUTOFSCOPE, ARCHIVEONLY |
attachments |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-41Only one attachment with description ‘LISIBLE’ is allowed per invoice (BR-FR-18) |
attachments[*].description |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-39Must be one of the allowed attachment descriptions (BR-FR-17) |
attachments[*].description |
| GOBL-FR-CTC-FLOW2-V1-BILL-INVOICE-40Must be one of the allowed attachment descriptions (BR-FR-17) |
org.Party
org.Party
| Field | Test | Validation Code / Message |
|---|---|---|
identities |
| GOBL-FR-CTC-FLOW2-V1-ORG-PARTY-01SIRET and SIREN must be coherent (BR-FR-09/10) |
identities |
| GOBL-FR-CTC-FLOW2-V1-ORG-PARTY-02Identity scheme format invalid (BR-FR-CO-10) |
inboxes[*] |
| GOBL-FR-CTC-FLOW2-V1-ORG-PARTY-03Inbox code format invalid |
org.Identity
org.Identity
| Field | Test | Validation Code / Message |
|---|---|---|
code |
| GOBL-FR-CTC-FLOW2-V1-ORG-IDENTITY-01Must be no more than 100 characters long |
code |
| GOBL-FR-CTC-FLOW2-V1-ORG-IDENTITY-02Must be in a valid format |
org.Inbox
org.Inbox
| Field | Test | Validation Code / Message |
|---|---|---|
code |
| GOBL-FR-CTC-FLOW2-V1-ORG-INBOX-01The length must be between 0 and 125 |
code |
| GOBL-FR-CTC-FLOW2-V1-ORG-INBOX-02Must be in a valid format |
org.Item
org.Item
| Field | Test | Validation Code / Message |
|---|---|---|
meta |
| GOBL-FR-CTC-FLOW2-V1-ORG-ITEM-01Meta values cannot be blank (BR-FR-28) |