POST/cpro/factures/v1/soumettre

Create and submit invoice

Create and submit an invoice without PDF attachment (SAISIE_API mode). All invoice data is provided in the request body.

Tired of dealing with PISTE, certificates and XML? Chorus Pay handles the whole flow for you - quote acceptance, purchase order, invoice deposited on Chorus Pro.Discover Chorus Pay·Compare both approaches

Multiple Authentication Required

ALL REQUIRED

This endpoint requires all of the following authentication methods:

Bearer Token

OAuth2 Bearer token

Custom Header

Chorus Pro account credentials

Required Header

cpro-account: base64(login:password)
How to authenticate

Include your Bearer token in the Authorization header:

Authorization: Bearer YOUR_API_TOKEN

You can obtain your API token from your account dashboard.

How to authenticate

Include the custom header in your request:

cpro-account: base64(login:password)

Body Parameters

ParameterRequiredDescription
cadreDeFacturation.codeCadreFacturation
Type: string
RequiredInvoicing framework code.
destinataire.codeDestinataire
Type: string
RequiredRecipient SIRET.
destinataire.codeServiceExecutant
Type: string
OptionalRecipient service code. ⚠️ Must be sent EXACTLY as returned by rechercher/services (character-by-character match, including any leading/trailing spaces). A trimmed code triggers GFT_MSG_01.033 (« Le service destinataire ne correspond pas à la structure destinataire ») even if the service exists and is active. Note also that when a service is set, its own parameters (consulter/service → parametres.numeroEngagement) override the structure-level mandatory-field rules.
fournisseur.idFournisseur
Type: number
RequiredSupplier ID.
fournisseur.codeCoordonneesBancairesFournisseur
Type: number
RequiredBank details code.
idUtilisateurCourant
Type: number
RequiredCurrent user ID.
lignePoste
Type: array
RequiredInvoice line items. Watch the field length limits: lignePosteDenomination and lignePosteReference are varchar(40), lignePosteUnite is varchar(20). Exceeding a limit does NOT return a validation error - the API answers 500 "Erreur interne" with no hint about the faulty field. Truncate before sending.
ligneTva
Type: array
OptionalVAT summary lines, one per VAT rate. Never include a zero-rate (0%) line: only rates > 0 belong here. If the whole invoice is VAT-exempt, omit ligneTva entirely and set references.typeTva to SANS_TVA (line-level lignePosteTauxTvaManuel values are then ignored).
modeDepot
Type: string
RequiredDeposit mode (must be SAISIE_API).
montantTotal
Type: object
RequiredTotal amounts. Chorus Pro renders amounts with up to 4 decimals exactly as sent: a floating-point residue (e.g. 99.9997 instead of 100.00) shows up verbatim on the generated invoice. Round every amount to the cent (Math.round(x*100)/100) before sending.
references
Type: object
RequiredInvoice references. typeTva rule: if no ligneTva is provided, typeTva MUST be SANS_TVA; EXONERATION additionally requires motifExonerationTva; otherwise use TVA_SUR_DEBIT or TVA_SUR_ENCAISSEMENT. An inconsistent combination (e.g. TVA_SUR_ENCAISSEMENT with no ligneTva) triggers an unexplained 500.

Example Request Body

{
  "cadreDeFacturation": {
    "codeCadreFacturation": "A1_FACTURE_FOURNISSEUR"
  },
  "destinataire": {
    "codeDestinataire": "19672337516762"
  },
  "fournisseur": {
    "codeCoordonneesBancairesFournisseur": 144050,
    "idFournisseur": 26262962
  },
  "idUtilisateurCourant": 65336344681929,
  "lignePoste": [
    {
      "lignePosteDenomination": "Licence",
      "lignePosteMontantRemiseHT": 0,
      "lignePosteMontantUnitaireHT": 16.6667,
      "lignePosteNumero": 1,
      "lignePosteQuantite": 1,
      "lignePosteReference": "votil_licence",
      "lignePosteTauxTvaManuel": 20,
      "lignePosteUnite": "licence"
    },
    {
      "lignePosteDenomination": "Classes",
      "lignePosteMontantRemiseHT": 0,
      "lignePosteMontantUnitaireHT": 5.0000,
      "lignePosteNumero": 2,
      "lignePosteQuantite": 4,
      "lignePosteReference": "votil_classe",
      "lignePosteTauxTvaManuel": 20,
      "lignePosteUnite": "classes"
    }
  ],
  "ligneTva": [
    {
      "ligneTvaMontantBaseHtParTaux": 36.6667,
      "ligneTvaMontantTvaParTaux": 7.3333,
      "ligneTvaTauxManuel": 20
    }
  ],
  "modeDepot": "SAISIE_API",
  "montantTotal": {
    "montantAPayer": 44,
    "montantHtTotal": 36.6667,
    "montantRemiseGlobaleTTC": 0,
    "montantTVA": 7.3333,
    "montantTtcTotal": 44
  },
  "references": {
    "deviseFacture": "EUR",
    "modePaiement": "VIREMENT",
    "typeFacture": "FACTURE",
    "typeTva": "TVA_SUR_ENCAISSEMENT"
  }
}

Headers

HeaderRequiredDescription
Content-Type
RequiredContent type
Default: application/json;charset=utf-8
Accept
RequiredExpected response type
Default: application/json;charset=utf-8

Responses

Loading...