Chorus Pro: Complete Guide to France's B2G E-Invoicing Portal

How to use Chorus Pro, France's B2G e-invoicing portal. Registration, submission methods, PISTE API integration, lifecycle statuses, and handling rejections.

Published
Updated
Reading Time
20 min
Topics:
Tax & ComplianceFrancee-invoicingB2G invoicingChorus Pro

Chorus Pro is France's mandatory government e-invoicing portal for all business-to-government (B2G) transactions. Operated by AIFE (Agence pour l'Informatique Financière de l'État), it serves as the single channel through which every supplier, whether based in France or abroad, must submit invoices to French public entities. That scope covers state agencies, local authorities, public hospitals, and public establishments at every administrative level.

The platform's scale reflects how deeply embedded it has become in French public procurement. According to AIFE, the French government agency that operates the platform, nearly 83 million invoices were received through Chorus Pro in 2024, submitted by over 1.1 million companies to 131,000 active public structures. The obligation has been in effect since January 1, 2017, applying equally to foreign companies holding French government contracts — no exemption based on company size or country of incorporation.

Chorus Pro supports three distinct submission methods, each suited to different transaction volumes and levels of technical maturity:

  • Manual portal entry — keying invoice data directly into the Chorus Pro web interface, one invoice at a time
  • Structured file upload — submitting invoices in standardized electronic formats including Factur-X, UBL, and CII
  • Automated system-to-system integration — connecting your invoicing or ERP system to Chorus Pro through the PISTE API or EDI for hands-off transmission at scale

This guide covers the full registration process (including the specific steps for foreign suppliers without a French business number), walks through each of the three submission methods in detail, explains how to track invoice lifecycle statuses and respond to rejections, and clarifies how Chorus Pro relates to the separate Portail Public de Facturation (PPF) that France is building for B2B e-invoicing.


Registering for Chorus Pro as a French or Foreign Supplier

Registration on the Chorus Pro portal is free and open to any supplier that does business with a French public-sector entity. You handle the entire process online at chorus-pro.gouv.fr — there is no paper application and no approval delay beyond standard account verification.

What You Need Before You Start

The credentials required depend on where your company is established.

French-registered businesses must provide their SIRET number, the 14-digit establishment identifier assigned by INSEE (Institut National de la Statistique et des Études Économiques). The SIRET combines a company's 9-digit SIREN with a 5-digit NIC code that identifies the specific establishment. If your company operates from multiple locations in France, each establishment has its own SIRET, and you may need to register more than one. You also need a valid email address, which the platform uses for account verification and ongoing notifications about invoice status changes.

Foreign suppliers without a SIRET can still register. Chorus Pro accepts your country's equivalent business identifier — a company registration number, VAT identification number, or comparable credential issued by your local authority. This is a critical point that most French-language documentation glosses over: you do not need a French business registration to use the portal. If you hold a contract with a French government buyer, you are entitled to register regardless of where your company is domiciled.

Creating Your Account Step by Step

  1. Create a personal user account. Navigate to chorus-pro.gouv.fr and select the option to create a new account. You will enter your name, email address, and set a password. The platform sends a verification email — confirm it to activate the account.

  2. Link your business structure. Once your user account is active, you attach it to your company's business structure (referred to as an établissement in the portal). For French companies, this means entering your SIRET number. For foreign companies, you select your country and enter the applicable business identifier. The platform validates the identifier format and creates the organizational record.

  3. Configure user roles and permissions. A single company account can have multiple users with different access levels. The main roles include:

    • Administrator — manages the company's Chorus Pro settings, adds or removes users, and controls permissions
    • Invoice submitter — creates and sends invoices through the portal
    • Validator — reviews invoices before they are transmitted to the public buyer

    Set these roles based on your internal workflow. A small supplier might have one person filling all three roles; a larger organization will want to separate submission from validation to maintain internal controls.

Language and Navigation Considerations

The Chorus Pro portal interface offers partial English translation, which covers the main navigation menus and some form labels. However, key documentation, help guides, error messages, and support resources remain predominantly in French. Foreign suppliers should plan for this — having a team member with working French or using browser-based translation tools will reduce friction during initial setup and when troubleshooting submission issues later.


Submitting Invoices Through the Chorus Pro Portal

For suppliers who invoice French public entities only occasionally, the Chorus Pro web interface at chorus-pro.gouv.fr lets you create and submit invoices directly through your browser — no technical integration, file formatting, or API connectivity required. This manual entry method (called Portail) is the default starting point for most new suppliers.

Information You Need Before You Start

Before opening the submission form, gather the following. Missing or incorrect details are the most common reason invoices stall or get rejected.

Recipient identification:

  • The SIRET number of the public entity you are invoicing. This 14-digit identifier uniquely identifies the contracting organization and is mandatory for routing your invoice.
  • The service code (code service) for the specific department or budget holder within that entity. Public organizations often have dozens of internal service codes, each corresponding to a different directorate, office, or budget line. Submitting with the wrong service code means your invoice lands on the wrong desk, delaying payment. If you do not already have the correct code, request it directly from your contracting public entity before you submit. It is typically referenced in the purchase order or contract.

Invoice details:

  • Invoice reference number — your own unique invoice identifier.
  • Invoice date.
  • Amounts — net amount (HT), applicable VAT, and gross total (TTC). For transactions subject to autoliquidation de TVA (France's reverse charge mechanism), the VAT line must reflect the correct treatment — entering standard VAT on a reverse-charge invoice will trigger rejection.
  • Any attachments required by the contracting entity, such as delivery receipts, service completion certificates, or detailed breakdowns. These are uploaded as PDF or image files alongside the invoice data.

Walking Through the Submission

Once logged into your Chorus Pro account, navigate to the invoice submission area and select the manual entry option. The form walks you through each required field in sequence: you identify the recipient by SIRET and service code, enter your invoice reference and date, then fill in the financial amounts.

The portal validates certain fields in real time. If the SIRET number does not match an active public entity in the system, or if a required field is left blank, you will see an error before submission. This pre-validation catches the most obvious mistakes early.

After completing all fields and attaching any supporting documents, you review and confirm. Chorus Pro assigns the invoice a unique tracking number and updates its status, which you can monitor from that point forward.

Drafts and Submission History

You do not have to complete a Chorus Pro invoice submission in a single sitting. The portal allows you to save draft invoices and return to them later, which is useful if you are waiting on a service code confirmation or need to verify amounts before finalizing.

Your organization's full submission history is also accessible through the portal. Every invoice you have submitted — along with its current status, dates, and recipient details — is stored and searchable. This gives you a built-in audit trail without maintaining a separate tracking spreadsheet.

The portal also supports credit note (avoir) submission through the same interface. The process mirrors invoice submission, with the addition of a reference to the original invoice being credited.


Uploading Structured Invoice Files

Instead of keying invoice data into the portal field by field, the Dépôt (file upload) method lets you upload pre-structured invoice files that Chorus Pro can parse automatically. If your accounting system or ERP can export invoices in a structured format, this approach eliminates manual data entry while staying within the portal workflow.

Chorus Pro accepts several structured formats through the Dépôt method, each offering distinct advantages over flat PDF submissions.

Supported Structured Formats

Factur-X is a hybrid PDF/XML format that embeds machine-readable structured data inside a standard human-readable PDF. This dual nature means a single file satisfies both automated processing requirements and traditional visual review. For suppliers who want to understand how the Factur-X hybrid PDF/XML format works, the key distinction is that the embedded XML layer enables Chorus Pro to extract invoice fields automatically, while the PDF layer preserves the familiar document appearance for internal stakeholders.

UBL 2.1 (Universal Business Language) is an OASIS standard XML format widely adopted across European e-invoicing ecosystems. Many ERP platforms and accounting tools offer native UBL export, making it a practical choice for suppliers already operating within EU cross-border invoicing frameworks.

CII (Cross-Industry Invoice) is a UN/CEFACT standard XML format that serves as the foundation of the EN 16931 European e-invoicing semantic model. Because CII underpins the core European standard, invoices generated in this format align closely with the data requirements Chorus Pro expects, reducing the likelihood of semantic mismatches during validation.

Why Structured Formats Matter

Chorus Pro does accept plain PDF invoices, but unstructured PDFs require the receiving public entity to manually extract or interpret invoice data. Structured formats — Factur-X, UBL, and CII — enable automated processing on the receiving side, which translates to faster payment cycles and fewer back-and-forth corrections. Structured submissions also carry a lower rejection risk because the portal can validate required fields before the invoice reaches the buyer, catching errors that would otherwise surface days later as a formal rejection.

Validation and Batch Upload

When you upload a structured file through the portal, Chorus Pro runs immediate validation checks against the invoice data. The portal verifies that mandatory fields are present, that SIRET numbers match registered entities, and that the XML structure conforms to the expected schema. Validation feedback appears directly in the interface, identifying specific errors so you can correct and resubmit without guessing what went wrong.

For suppliers processing more than a handful of invoices per cycle, the portal supports batch uploads — submitting multiple invoice files in a single session rather than uploading them one at a time. This significantly reduces the manual overhead of portal-based submission while staying within the Dépôt workflow.

Common validation errors to watch for include:

  • Missing or incorrect SIRET/SIREN numbers for the buyer entity
  • Mismatched service codes (codes that do not correspond to the contracting public entity's declared structure in Chorus Pro)
  • Schema non-conformance in XML files, often caused by outdated export templates in older ERP versions
  • Duplicate invoice numbers for the same buyer, which the portal flags to prevent double submission

Correcting these issues before upload — particularly by validating XML files against the Chorus Pro schema locally — saves considerable time and avoids repeated rejection cycles.


Automating Submissions via the PISTE API and EDI

For suppliers processing high volumes of government invoices, manual portal entry and file uploads become unsustainable. Chorus Pro offers two system-to-system integration routes that allow your ERP or accounting software to submit invoices, track statuses, and manage documents programmatically: the PISTE API and EDI via SFTP.

PISTE API Integration

The PISTE platform (Plateforme d'Intermédiation des Services de Traitement de l'État) provides RESTful API access to Chorus Pro's full range of services. Rather than interacting with the portal through a browser, your systems communicate directly with Chorus Pro endpoints over HTTPS.

Authentication follows the OAuth 2.0 client credentials grant flow. The process works as follows:

  1. Register your application on the PISTE platform and obtain a client ID and client secret.
  2. Your application requests an access token from the PISTE OAuth 2.0 token endpoint using these credentials.
  3. Include the returned access token in the Authorization header of each API request.
  4. Tokens expire after a defined period, so your integration must handle token renewal automatically.

This OAuth 2.0 model replaced an earlier certificate-based authentication system. If you encounter legacy documentation or older integration guides referencing client certificates, note that PISTE has since migrated entirely to OAuth 2.0. Any new integration should use the current token-based approach.

Beyond invoice submission, the PISTE API exposes several capabilities that make it valuable for end-to-end automation:

  • Invoice lifecycle tracking — query the current status of submitted invoices programmatically, eliminating the need to log into the portal for status checks.
  • Document retrieval — download received invoices and attachments, which is particularly relevant for public entities or large organizations that also receive documents through Chorus Pro.
  • Organizational structure management — create and manage service codes (services exécutants) and user associations through API calls rather than portal navigation.

EDI via SFTP

The second automated route uses Electronic Data Interchange (EDI) over Secure File Transfer Protocol. This approach suits organizations whose ERP systems already support SFTP-based document exchange, since it requires no custom API client development.

With EDI, you transmit structured invoice files in the same formats accepted by the portal's file upload feature — Factur-X, UBL, or CII — through a dedicated SFTP connection to Chorus Pro. The platform processes these files on receipt and returns status acknowledgments through the same channel. This batch-oriented model works well for organizations that generate invoices in scheduled runs rather than on-demand.

The Qualification Environment

Both the PISTE API and EDI integrations must pass through Chorus Pro's qualification environment (environnement de qualification) before you can submit real invoices. This sandbox mirrors production in structure and behavior, giving your team a space to validate every aspect of the integration:

  • Message format validation — confirm that your invoice XML or Factur-X files conform to the expected schemas and pass Chorus Pro's structural checks.
  • Authentication testing — verify that your OAuth 2.0 token flow (for API) or SFTP credentials (for EDI) work correctly against the test endpoints.
  • End-to-end workflow verification — submit test invoices, observe status transitions, and confirm that your system correctly interprets lifecycle updates and rejection responses.

Only after successful qualification testing does Chorus Pro grant access to the production environment. This gating mechanism protects both suppliers and public entities from malformed submissions disrupting live invoice processing.

Choosing Between API and EDI

Both routes target the same use case: organizations that need direct integration between their internal systems and Chorus Pro. Choose the PISTE API if you need real-time submission, on-demand status polling, or programmatic management of organizational structures. Choose EDI via SFTP if your ERP already supports SFTP-based document exchange and your invoicing runs in scheduled batches. Either way, the qualification process ensures your integration meets Chorus Pro's requirements before a single real invoice enters the system.

Getting Started with the PISTE API

The PISTE developer portal at developer.aife.economie.gouv.fr is the starting point for any API integration. It provides endpoint documentation, sandbox credentials for the qualification environment, and the application registration interface where you obtain your OAuth 2.0 client credentials. The API uses JSON payloads over HTTPS, with invoice data submitted in UBL, CII, or Factur-X format within the request body. Documentation on the developer portal is primarily in French, but the endpoint structure and request/response schemas follow standard RESTful conventions that most development teams can navigate with minimal translation overhead.


Tracking Invoice Lifecycle Statuses and Handling Rejections

Every invoice submitted through Chorus Pro moves through a defined sequence of lifecycle statuses. Understanding what each status means and knowing exactly how to respond when something goes wrong is essential for keeping your receivables on track and avoiding payment delays with French public entities.

Chorus Pro Lifecycle Statuses

Déposée (Deposited) — Your invoice has been received by the Chorus Pro platform but has not yet been delivered to the public entity. At this stage, the system is performing initial validation checks on format and mandatory fields. Most invoices pass through this status within minutes, though delays can occur during peak submission periods.

Reçue (Received) — The invoice has been successfully delivered to the target public entity and is awaiting their review. This is a confirmation that Chorus Pro has routed your invoice to the correct recipient. Processing timelines from this point depend entirely on the public entity's internal approval workflows.

Mise en paiement (Accepted / Queued for Payment) — The public entity has validated your invoice and approved it for payment. This status confirms the invoice has cleared all internal checks and entered the entity's payment cycle. Payment timing from this point follows the applicable regulatory payment deadlines, which for most French public entities is 30 days from receipt.

Suspendue (Suspended) — The public entity has placed your invoice on hold. This is not a rejection, but it signals that the entity needs clarification or additional documentation before processing can continue. A suspension comment is attached explaining what is required.

Rejetée (Rejected) — The public entity has formally rejected your invoice. A reason code and explanatory comment accompany the rejection, identifying the specific issue that caused it.

Responding to Rejected Invoices

Rejections are final for the submitted invoice. You cannot edit or amend a rejected submission within Chorus Pro. Instead, you must correct the underlying issue and submit an entirely new invoice.

The most common rejection reasons include:

  • Incorrect recipient SIRET number — The invoice was addressed to the wrong entity or an outdated SIRET was used. Verify the correct SIRET with your contracting contact or look it up in the French SIRENE directory before resubmitting.
  • Wrong service code — The service code (code service) does not match the department or unit that placed the order. Confirm the correct service code directly with the public entity, as these codes are internally assigned and not standardized.
  • Missing mandatory fields — Required data such as the purchase order number (numéro d'engagement), tax identification, or payment terms was omitted. Cross-reference your invoice against the original contract or purchase order.
  • Amount discrepancies — The invoiced amount does not match the contract value, purchase order, or delivery receipt. Reconcile your figures against the source documents and confirm any partial delivery or price adjustment details.

When you receive a rejection, review the reason code and comment carefully. These are visible in the invoice detail view on the platform. Correct the identified issue in your source system, generate a new invoice with a new invoice number, and submit it through Chorus Pro as a fresh submission.

Responding to Suspended Invoices

A suspension is a request for action, not a dead end. The public entity's suspension comment specifies exactly what they need, whether that is a missing delivery certificate, a corrected line item breakdown, or clarification on contractual terms.

Respond through the built-in messaging system within Chorus Pro. Navigate to the suspended invoice, open the exchange thread, and provide the requested information or attach the required documents directly. Using the platform's messaging ensures your response is linked to the invoice record and visible to the reviewing officer. After responding, monitor the invoice status for updates. The entity will either lift the suspension and move the invoice forward, or reject it if the response does not resolve the issue.

Three Ways to Track Invoice Status

Portal dashboard — Log into Chorus Pro and use the invoice tracking interface to view current statuses, filter by date range or status type, and drill into individual invoices for rejection or suspension details. This is the most straightforward method for low-volume suppliers.

Email notifications — Configure your Chorus Pro account to receive email alerts when invoice statuses change. You can customize which status transitions trigger notifications, so your accounts receivable team is alerted immediately when an invoice is accepted, rejected, or suspended without needing to check the portal manually.

API-based polling — Organizations with a PISTE API integration can programmatically query invoice statuses and pull updates directly into their financial systems. This method is suited to high-volume suppliers who need real-time status data flowing into their ERP or accounts receivable workflows without manual intervention.


Chorus Pro and the PPF: What Changes After France's 2026 B2B Mandate

One of the most persistent points of confusion surrounding France's e-invoicing reform is whether Chorus Pro is being replaced. The short answer: no. Chorus Pro remains France's dedicated B2G e-invoicing portal and will continue operating after the September 2026 mandate takes effect. What changes is the arrival of a parallel system designed exclusively for B2B transactions.

The Portail Public de Facturation (PPF) is the new government-built infrastructure for e-invoicing between private companies. While Chorus Pro handles invoices sent to public entities, the PPF — along with authorized private platforms known as Plateformes de Dématérialisation Partenaires (PDPs) — will manage B2B invoice exchange and the associated e-reporting obligations that France is introducing. These are separate systems serving fundamentally different invoice flows. Chorus Pro routes invoices to government buyers. The PPF and PDPs route invoices between private-sector parties. They are not interchangeable, and registration on one does not grant access to the other.

For businesses that supply both government agencies and private-sector clients, this means operating across two distinct environments. Your B2G invoices will still flow through Chorus Pro using the same SIRET-based structure, statuses, and submission methods covered earlier in this guide. Your B2B invoices will route through the PPF or a PDP of your choosing, each with its own registration process, technical requirements, and compliance workflows. For more detail on France's upcoming B2B e-invoicing mandate and the PPF, including timeline phases and PDP selection criteria, our dedicated guide covers the full landscape.

It is true that the French government drew on years of Chorus Pro operational experience when designing the PPF. Lessons around structured format handling, lifecycle status tracking, and large-scale portal architecture informed the new platform's development. But shared DNA does not mean shared operations. The two systems maintain separate portals, separate user accounts, separate registration procedures, and separate compliance timelines. Treating them as a single system — or assuming Chorus Pro enrollment covers your B2B obligations — will leave gaps in your compliance posture.

The practical takeaway for finance teams: audit your customer base now. If you invoice any French public entity, Chorus Pro remains your mandatory channel and nothing about your existing B2G workflow changes. If you also invoice French private companies, begin evaluating whether the PPF or a certified PDP best fits your B2B volume, ERP integration needs, and reporting requirements. Planning for both systems in parallel — and ensuring your accounting software produces a compliant FEC audit file (Fichier des Écritures Comptables) for the tax authorities — avoids a rushed implementation when enforcement deadlines arrive.

About the author

DH

David Harding

Founder, Invoice Data Extraction

David Harding is the founder of Invoice Data Extraction and a software developer with experience building finance-related systems. He oversees the product and the site's editorial process, with a focus on practical invoice workflows, document automation, and software-specific processing guidance.

Editorial process

This page is reviewed as part of Invoice Data Extraction's editorial process.

If this page discusses tax, legal, or regulatory requirements, treat it as general information only and confirm current requirements with official guidance before acting. The updated date shown above is the latest editorial review date for this page.

Continue Reading

Invoice Data Extraction

Extract data from invoices and financial documents to structured spreadsheets. 50 free pages every month — no credit card required.

Try It Free