> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gobl.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Chorus Pro

Key: `fr-choruspro-v1`

Support for the French Chorus Pro platform for B2G (Business-to-Government) electronic invoicing.
This addon provides the necessary structures and validations to ensure compliance with the
Chorus Pro specifications.

It requires the EN16931 addon as it expands on the European standard with French-specific
requirements for public sector invoicing.

## Sources

* [Chorus Pro Specifications](https://communaute.chorus-pro.gouv.fr/wp-content/uploads/2018/11/External_Specifications_EDI_Appendix_V4.10.pdf)

## Extensions

### General Information Framework

The general information framework is used to provide additional context
about the entity submitting the document. If no value is provided, it will
default to "A1" (Submission by a supplier of an invoice), the most common
use-case.

This extension's value is not deterministic, meaning that it will not be
replaced by GOBL during normalization.

<Accordion title="fr-choruspro-framework">
  | Code  | Name                                                                                                               |
  | ----- | ------------------------------------------------------------------------------------------------------------------ |
  | `A1`  | Submission by a supplier of an invoice                                                                             |
  | `A2`  | Submission by a supplier of an invoice already paid                                                                |
  | `A3`  | Submission by a supplier of a Memorandum on Justice Costs                                                          |
  | `A4`  | Submission by a supplier of a draft monthly statement                                                              |
  | `A5`  | Submission by a supplier of an account statement                                                                   |
  | `A6`  | Work invoice document sent to a financial service                                                                  |
  | `A7`  | Submission by a supplier of a draft final statement                                                                |
  | `A8`  | Submission by a supplier of a general and definitive statement                                                     |
  | `A9`  | Submission by a subcontractor of an invoice                                                                        |
  | `A10` | Submission by a subcontractor of a draft monthly statement                                                         |
  | `A12` | Submission by a joint contractor of an invoice                                                                     |
  | `A13` | Submission by a joint contractor of a draft monthly statement                                                      |
  | `A14` | Submission by a joint contractor of a draft final statement                                                        |
  | `A15` | Submission by a project manager of an account statement                                                            |
  | `A16` | Submission by a project manager of a validated account statement                                                   |
  | `A17` | Submission by a project manager of a draft general statement                                                       |
  | `A18` | Submission by a project manager of a general statement                                                             |
  | `A19` | Submission by a contracting authority of a validated account statement                                             |
  | `A20` | Submission by a contracting authority of a general statement                                                       |
  | `A21` | Submission by a beneficiary of an ICT reimbursement request                                                        |
  | `A22` | Submission by a supplier or an authorised representative of a draft general statement as part of a tacit procedure |
  | `A23` | Submission by a supplier or an authorised representative of a tacit general and final statement                    |
  | `A24` | Submission by an authorised representative of a tacit general and final statement                                  |
  | `A25` | Submission by an authorised representative of a general and final statement as part of a tacit procedure           |
</Accordion>

### Scheme

<Accordion title="fr-choruspro-scheme">
  | Code | Name                              |
  | ---- | --------------------------------- |
  | `1`  | Third party with SIRET            |
  | `2`  | European structure outside France |
  | `3`  | Structure outside the EU          |
  | `4`  | RIDET                             |
  | `5`  | Tahiti Number                     |
  | `6`  | Other                             |
</Accordion>

## Validation Rules

<AccordionGroup>
  <Accordion title="bill.Invoice">
    | Field                                                                 | Test                                                                      | Validation Code / Message                                                                               |
    | --------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
    | <small>Invoice</small>                                                | <ul class="gobl-test"><li>Can convert to \[EUR]</li></ul>                 | `GOBL-FR-CHORUSPRO-BILL-INVOICE-07`<br />Invoice must be in EUR or provide exchange rate for conversion |
    | `customer.ext`                                                        | <ul class="gobl-test"><li>Ext 'fr-choruspro-scheme' in \[1]</li></ul>     | `GOBL-FR-CHORUSPRO-BILL-INVOICE-01`<br />Customer scheme extension must be '1'                          |
    | `customer.identities`                                                 | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>     | `GOBL-FR-CHORUSPRO-BILL-INVOICE-02`<br />Customer identities are required                               |
    | `tax`                                                                 | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>     | `GOBL-FR-CHORUSPRO-BILL-INVOICE-03`<br />Tax object is required with extensions                         |
    | `tax.ext`                                                             | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>     | `GOBL-FR-CHORUSPRO-BILL-INVOICE-04`<br />Tax extensions are required                                    |
    | `tax.ext`                                                             | <ul class="gobl-test"><li>Ext require \[fr-choruspro-framework]</li></ul> | `GOBL-FR-CHORUSPRO-BILL-INVOICE-05`<br />Framework extension is required                                |
    | `totals`<br /><small class="gobl-field-calculated">Calculated</small> | <ul class="gobl-test"><li>Framework is paid</li><li>Paid</li></ul>        | `GOBL-FR-CHORUSPRO-BILL-INVOICE-06`<br />Must be paid in full for framework 'A2'                        |
  </Accordion>

  <Accordion title="org.Party">
    | Field            | Test                                                                           | Validation Code / Message                                                                             |
    | ---------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
    | `ext`            | <ul class="gobl-test"><li>Ext require \[fr-choruspro-scheme]</li></ul>         | `GOBL-FR-CHORUSPRO-ORG-PARTY-01`<br />Scheme extension is required                                    |
    | `identities`     | <ul class="gobl-test"><li>Party scheme is 1</li><li>Has SIRET</li></ul>        | `GOBL-FR-CHORUSPRO-ORG-PARTY-02`<br />Identities must have a SIRET entry for scheme '1'               |
    | `tax_id.country` | <ul class="gobl-test"><li>Party scheme is 1</li><li>One of \[FR]</li></ul>     | `GOBL-FR-CHORUSPRO-ORG-PARTY-03`<br />Tax ID must be 'FR' for scheme '1'                              |
    | `identities`     | <ul class="gobl-test"><li>Party scheme is not 1</li><li>No SIRET</li></ul>     | `GOBL-FR-CHORUSPRO-ORG-PARTY-04`<br />Identities cannot have a SIRET entry when not '1' scheme        |
    | `tax_id.country` | <ul class="gobl-test"><li>Party scheme is 2</li><li>Not one of \[FR]</li></ul> | `GOBL-FR-CHORUSPRO-ORG-PARTY-05`<br />Tax ID country must be a non-French, EU company with scheme '2' |
    | `tax_id.country` | <ul class="gobl-test"><li>Party scheme is 2</li><li>EU member</li></ul>        | `GOBL-FR-CHORUSPRO-ORG-PARTY-06`<br />Tax ID country must be a member of the EU with scheme '2'       |
    | `tax_id.country` | <ul class="gobl-test"><li>Party scheme is 3</li><li>Non-EU</li></ul>           | `GOBL-FR-CHORUSPRO-ORG-PARTY-07`<br />Tax ID country must be a non-EU company with scheme '3'         |
  </Accordion>
</AccordionGroup>
