Entreprise (company)

Le company représente une entité légale ou physique identifiée dans votre plateforme — société, entreprise individuelle ou personne physique agissant comme partenaire commercial. C'est l'objet pivot du modèle métier : factures, paiements, dossiers d'onboarding et limites de crédit lui sont tous rattachés.

Rôle

Une company peut d’abord représenter l’identité propre du marchand. Dans ce cas,is_self vaut true en lecture seule. Elle peut aussi qualifier un partenaire commercial sur deux dimensions orthogonales : is_buyer et is_supplier. Ces indicateurs sont indépendants — une même entité peut être marchand, acheteur et fournisseur selon les besoins du modèle.

  • Acheteur (is_buyer: true) — la company reçoit des factures, effectue des paiements et peut bénéficier d'une limite de crédit.
  • Fournisseur (is_supplier: true) — la company émet des factures, reçoit des paiements et peut faire l'objet d'un financement.

La qualification peut être posée à la création ou modifiée ultérieurement via le node set_company_type. Elle oriente les processus aval : les nodes de facturation, de crédit ou de réconciliation l'utilisent pour valider leurs entrées.

Identifiant et structure

Chaque company porte un identifiant stable préfixé par cmp_. Cet identifiant est stable dans le temps et utilisable sans appel API supplémentaire pour identifier le type de l'objet.

JSON
"company":{23 items
"object":"company"
"id":"cmp_3a8f1d9c2b4e7f6a"
"legal_name":"Dupont Industries SAS"
"trade_name":"Dupont Industries"
"display_name":"Dupont Industries"
"legal_form":"SAS"
"registration_number":"123456789"
"registration_country":"FR"
"tax_identifier":"FR12345678901"
"registered_address":{4 items
"line1":"12 rue de la Paix"
"city":"Paris"
"postal_code":"75001"
"country":"FR"
}
"incorporation_date":"2018-03-15"
"share_capital":1000000
"currency":"EUR"
"is_self":false
"suspended":false
"suspended_at":null
"suspension_reason":null
"is_buyer":true
"is_supplier":false
"source_reference":"CLIENT-00842"
"metadata":{}0 items
"created_at":"2026-01-10T09:00:00.000Z"
"updated_at":"2026-06-15T14:32:00.000Z"
}
{
  "object": "company",
  "id": "cmp_3a8f1d9c2b4e7f6a",
  "legal_name": "Dupont Industries SAS",
  "trade_name": "Dupont Industries",
  "display_name": "Dupont Industries",
  "legal_form": "SAS",
  "registration_number": "123456789",
  "registration_country": "FR",
  "tax_identifier": "FR12345678901",
  "registered_address": {
    "line1": "12 rue de la Paix",
    "city": "Paris",
    "postal_code": "75001",
    "country": "FR"
  },
  "incorporation_date": "2018-03-15",
  "share_capital": 1000000,
  "currency": "EUR",
  "is_self": false,
  "suspended": false,
  "suspended_at": null,
  "suspension_reason": null,
  "is_buyer": true,
  "is_supplier": false,
  "source_reference": "CLIENT-00842",
  "metadata": {},
  "created_at": "2026-01-10T09:00:00.000Z",
  "updated_at": "2026-06-15T14:32:00.000Z"
}

Champs

ChampTypeRequisDescription
idstringouiIdentifiant de la company (préfixe cmp_).
objectstringouiToujours "company".
merchant_idstringouiMarchand auquel appartient l’entreprise.
legal_namestringouiRaison sociale ou nom légal.
trade_namestringnonNom commercial optionnel.
display_namestringouiLecture seule. Nom commercial s’il existe, sinon nom légal.
legal_formstringnonForme juridique (SAS, SARL, EI…).
registration_numberstringnonNuméro SIREN, RCS ou équivalent.
registration_countrystringnonCode pays ISO 3166-1 alpha-2 du registre.
tax_identifierstringnonIdentifiant fiscal ou numéro de TVA.
registered_addressaddressnonAdresse du siège social.
incorporation_datedatenonDate de création (format ISO 8601).
share_capitalintegernonCapital social en centimes.
currencystringnonDevise par défaut (ISO 4217).
is_selfbooleanouiLecture seule. Indique que la company représente l’identité propre du marchand.
suspendedbooleanouiIndique si la company est suspendue.
suspended_atdatetimenonDate et heure de la suspension.
suspension_reasonstringnonMotif libre de la suspension en cours. credit_limit_exceeded pour la suspension automatique sur dépassement de limite.
is_buyerbooleanouiLa company agit comme acheteur.
is_supplierbooleanouiLa company agit comme fournisseur.
source_referencestringnonRéférence dans votre système (CRM, ERP…).
metadataobjectnonMap plate de scalaires `string | number | boolean`, selon la convention metadata de l’API.
created_atdatetimeouiDate de création.
updated_atdatetimeouiDate de dernière mise à jour.

Suspension

Une company peut être suspendue manuellement via POST /v1/companies/:id/suspend, qui accepte un reason optionnel. La suspension positionne suspended: true, horodate suspended_at et enregistre suspension_reason. Elle émet l'événement company.suspended que vos processus peuvent écouter.

Conséquences pilotées par vos processus La plateforme ne bloque rien automatiquement lors d'une suspension. C'est à vos processus de réagir à l'événement company.suspended ou de vérifier company.suspended avant d'initier une opération. Exemples de conséquences que vous pouvez orchestrer : arrêt de l'acceptation de nouvelles commandes, blocage des décaissements de crédit, cession ou recouvrement des créances en cours.

La suspension est levée via POST /v1/companies/:id/reactivate, qui remet suspended à false et émet company.reactivated.

Suspendre une company ne suspend pas ses contacts. Le blocage d'une personne physique se pilote au niveau du contact, avec son propre suspended.

Relations

La company est le point d'ancrage de la plupart des objets commerciaux et financiers de la plateforme.

Objet liéCardinalitéAccèsDescription
merchant0..1merchant.company_idMarchand dont cette company représente l’identité propre.
contact0..nGET /v1/companies/:id/contactsContacts rattachés à la company.
company_group0..nGET /v1/companies/:id/company-groupsGroupes auxquels appartient la company.
onboarding_case0..nParamètre de processusDossiers d'onboarding initiés pour cette company.
invoice0..nFiltrer invoices?buyer_id=…Factures où la company est acheteur.
credit_limit0..nParamètre de processusLimites de crédit accordées à la company.

Les contacts d'une company peuvent être résolus par rôle et niveau de certification à une date donnée via GET /v1/companies/:id/contacts/resolve. Ce point d'accès est utile pour identifier le bon interlocuteur (représentant légal, autorisateur de paiement…) dans un processus. Les rôles de contact sont documentés dans la page Rôle de contact.

Créance et dette

La plateforme calcule deux indicateurs financiers en temps réel pour chaque company :

  • Receivable (GET /v1/companies/:id/receivable) — montant total dû par la company en tant qu'acheteur, calculé sur les factures émises et non encore intégralement réglées.
  • Payable (GET /v1/companies/:id/payable) — montant total dû à la company en tant que fournisseur.
HTTP
GET /v1/companies/cmp_3a8f/receivable
"receivable":{10 items
"object":"receivable"
"buyer_id":"cmp_3a8f1d9c2b4e7f6a"
"currency":"EUR"
"balance_excluding_tax":120000
"balance_including_tax":144000
"balance_due_excluding_tax":40000
"balance_due_including_tax":48000
"oldest_due_date":"2026-05-01"
"latest_due_date":"2026-07-31"
"computed_at":"2026-06-17T10:00:00.000Z"
}
{
  "object": "receivable",
  "buyer_id": "cmp_3a8f1d9c2b4e7f6a",
  "currency": "EUR",
  "balance_excluding_tax": 120000,
  "balance_including_tax": 144000,
  "balance_due_excluding_tax": 40000,
  "balance_due_including_tax": 48000,
  "oldest_due_date": "2026-05-01",
  "latest_due_date": "2026-07-31",
  "computed_at": "2026-06-17T10:00:00.000Z"
}

Ces valeurs sont calculées dynamiquement à partir des factures et paiements courants. Le node calculate_receivable expose ce calcul dans les processus d'orchestration.

Dans les processus

Plusieurs nodes du catalogue opèrent directement sur les companies. Les nodes aval (facturation, crédit, paiement) acceptent systématiquement une company en entrée pour rattacher leurs objets à la bonne entreprise.

NodeRôleEntrées / sorties clés
get_merchant_companyRécupère l’identité légale du marchand courant sans paramètreProduit : company (is_self: true)
create_companyCrée une nouvelle companyProduit : company
search_companyCherche une company existante par identité métierRoute found / not_found · found produit : company, matched_by
set_company_typeQualifie is_buyer et/ou is_supplierAccepte : company ou draft · Produit : company
calculate_receivableCalcule le receivable courantAccepte : company

Le node search_company effectue une recherche par identité métier — source_reference, registration_number, tax_identifier ou legal_name + pays — et route selon que la company existe déjà ou non. Ce pattern est central dans les processus d'onboarding pour éviter les doublons.

HTTP
GET /v1/companies/search
  ?registration_number=123456789
  &country=FR
"company_search_result":{3 items
"object":"company_search_result"
"company":{3 items
"id":"cmp_3a8f"
"registration_number":"123456789"
"registration_country":"FR"
}
"matched_by":"registration_number"
}
{
  "object": "company_search_result",
  "company": {
    "id": "cmp_3a8f",
    "registration_number": "123456789",
    "registration_country": "FR"
  },
  "matched_by": "registration_number"
}

Événements

Chaque transition significative émet un événement livré via webhook. L'objet company complet est inclus dans le payload — aucun appel API supplémentaire n'est nécessaire pour récupérer l'état courant.

ÉvénementDéclencheur
company.createdLa company vient d'être créée.
company.updatedUn ou plusieurs champs ont été mis à jour.
company.suspendedLa company a été suspendue.
company.reactivatedLa suspension a été levée.

La configuration des webhooks et la liste complète des événements sont documentées dans Recevoir des webhooks et le catalogue des événements.