POST/cpro/factures/v1/soumettre

Créer et soumettre une facture

Créer et soumettre une facture sans pièce jointe PDF (mode SAISIE_API). Toutes les données de la facture sont fournies dans le corps de la requête.

Marre de gérer PISTE, les certificats et le XML ? Chorus Pay gère tout le flux à votre place - devis accepté, bon de commande, facture déposée sur Chorus Pro.Découvrir Chorus Pay·Comparer les deux approches

Authentification multiple requise

TOUTES REQUISES

Ce point de terminaison nécessite toutes les méthodes d'authentification suivantes :

Token Bearer

OAuth2 Bearer token

En-tête personnalisé

Chorus Pro account credentials

En-tête requis

cpro-account: base64(login:password)
Comment s'authentifier

Incluez votre token Bearer dans l'en-tête Authorization :

Authorization: Bearer YOUR_API_TOKEN

Vous pouvez obtenir votre token API depuis votre tableau de bord.

Comment s'authentifier

Incluez l'en-tête personnalisé dans votre requête :

cpro-account: base64(login:password)

Paramètres du corps

ParamètreRequisDescription
cadreDeFacturation.codeCadreFacturation
Type: string
RequisInvoicing framework code.
destinataire.codeDestinataire
Type: string
RequisRecipient SIRET.
destinataire.codeServiceExecutant
Type: string
OptionnelRecipient 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
RequisSupplier ID.
fournisseur.codeCoordonneesBancairesFournisseur
Type: number
RequisBank details code.
idUtilisateurCourant
Type: number
RequisCurrent user ID.
lignePoste
Type: array
RequisInvoice 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
OptionnelVAT 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
RequisDeposit mode (must be SAISIE_API).
montantTotal
Type: object
RequisTotal 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
RequisInvoice 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.

Exemple de corps de requête

{
  "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"
  }
}

En-têtes

En-têteRequisDescription
Content-Type
RequisContent type
Par défaut: application/json;charset=utf-8
Accept
RequisExpected response type
Par défaut: application/json;charset=utf-8

Réponses

Loading...