Company ( company )
The company represents a legal or natural entity identified on your platform — corporation, sole proprietorship, or natural person acting as a business partner. It is a pivotal business-model object: invoices, payments, onboarding cases, and credit limits are all attached to it.
Role
A company may first represent the merchant's own identity. In that case,
is_self is read-only and is true for the merchant company. It may also qualify a commercial partner along two orthogonal dimensions: is_buyer and
is_supplier. These flags are independent — the same entity may be merchant, buyer, and supplier according to the model.
Buyer (
is_buyer: true) — the company receives invoices, makes payments, and may receive a credit limit.Supplier (
is_supplier: true) — the company issues invoices, receives payments, and may be financed.
Qualification can be set at creation or changed later through the
set_company_typenode. It guides downstream processes: invoicing, credit, and reconciliation nodes use it to validate their inputs.
Identifier and structure
Each company has a stable identifier prefixed with cmp_. This identifier remains stable over time and lets clients identify object type without an extra API call.
{
"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"
}Fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Company identifier (prefix `cmp_`). |
object | string | yes | Always "company". |
merchant_id | string | yes | Merchant to which the company belongs. |
legal_name | string | yes | Legal name. |
trade_name | string | no | Optional trade name. |
display_name | string | yes | Read-only. Trading name when present, otherwise legal name. |
legal_form | string | no | Forme juridique (SAS, SARL, EI…). |
registration_number | string | no | SIREN, RCS, or equivalent registration number. |
registration_country | string | no | ISO 3166-1 alpha-2 country code of the registry. |
tax_identifier | string | no | Tax identifier or VAT number. |
registered_address | address | no | Registered office address. |
incorporation_date | date | no | Creation/incorporation date (ISO 8601). |
share_capital | integer | no | Share capital in minor currency units. |
currency | string | no | Default currency (ISO 4217). |
is_self | boolean | yes | Read-only. Indicates that the company represents the merchant's own identity. |
suspended | boolean | yes | Whether the company is suspended. |
suspended_at | datetime | no | Date and time of suspension. |
suspension_reason | string | no | Free-form reason for the current suspension. `credit_limit_exceeded` for automatic suspension after exceeding a limit. |
is_buyer | boolean | yes | The company acts as a buyer. |
is_supplier | boolean | yes | The company acts as a supplier. |
source_reference | string | no | Reference in your system (CRM, ERP…). |
metadata | object | no | Flat map of `string | number | boolean` scalars, following the API metadata convention. |
created_at | datetime | yes | Creation date. |
updated_at | datetime | yes | Last update date. |
Suspension
A company may be manually suspended through POST /v1/companies/:id/suspend, which accepts an optional reason . Suspension sets
suspended: true, timestamps suspended_at, and records
suspension_reason. It emits the company.suspended
event that your processes can consume.
The platform blocks nothing automatically when a company is suspended. Your processes must react to the company.suspended event or check
company.suspended before initiating an operation. Examples of consequences you can orchestrate: stop accepting new orders, block credit disbursements, assign or collect outstanding receivables.
Suspension is lifted through POST /v1/companies/:id/reactivate, which sets
suspended to false and emits company.reactivated.
Suspending a company does not suspend its contacts. Blocking a natural person is handled at
contactlevel, with its own
suspended.
Relationships
The company is the anchor point for most commercial and financial objects on the platform.
| Linked object | Cardinality | Access | Description |
|---|---|---|---|
merchant | 0..1 | merchant.company_id | Merchant whose own identity this company represents. |
contact | 0..n | GET /v1/companies/:id/contacts | Contacts attached to the company. |
company_group | 0..n | GET /v1/companies/:id/company-groups | Groups to which the company belongs. |
onboarding_case | 0..n | Process parameter | Onboarding cases started for this company. |
invoice | 0..n | Filtrer invoices?buyer_id=… | Invoices where the company is the buyer. |
credit_limit | 0..n | Process parameter | Credit limits granted to the company. |
A company's contacts can be resolved by role and certification level at a given date through GET /v1/companies/:id/contacts/resolve. This access point is useful for identifying the right person — legal representative, payment authorizer, etc. — in a process. Contact roles are documented on the Contact role.
Receivable and payable
page. The platform calculates two financial indicators in real time for every company:
Receivable (
GET /v1/companies/:id/receivable) — total amount owed by the company as buyer, calculated from issued invoices not yet fully settled.Payable (
GET /v1/companies/:id/payable) — total amount owed to the company as supplier.
GET /v1/companies/cmp_3a8f/receivable
{
"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"
}These values are calculated dynamically from current invoices and payments. The calculate_receivable node exposes this calculation in orchestration processes.
In processes
Several catalog nodes operate directly on companies. Downstream invoicing, credit, and payment nodes consistently accept a company input to attach their objects to the correct company.
| Node | Role | Key inputs / outputs |
|---|---|---|
get_merchant_company | Retrieves the current merchant's legal identity without a parameter | Produces: company (is_self: true) |
create_company | Creates a new company | Produces: company |
search_company | Searches for an existing company by business identity | Route found / not_found · found produces: company, matched_by |
set_company_type | Sets `is_buyer` and/or `is_supplier` | Accepts: company or draft · Produces: company |
calculate_receivable | Calculates the current receivable | Accepts: company |
The node search_company performs a search by business identity —
source_reference, registration_number, tax_identifier or
legal_name + country — and routes according to whether the company already exists. This pattern is central to onboarding processes to avoid duplicates.
GET /v1/companies/search ?registration_number=123456789 &country=FR
{
"object": "company_search_result",
"company": {
"id": "cmp_3a8f",
"registration_number": "123456789",
"registration_country": "FR"
},
"matched_by": "registration_number"
}Events
Every significant transition emits an event delivered by webhook. The complete
company object is included in the payload — no additional API call is needed to retrieve current state.
| Event | Trigger |
|---|---|
company.created | The company was just created. |
company.updated | One or more fields were updated. |
company.suspended | The company was suspended. |
company.reactivated | The suspension was lifted. |
Webhook configuration and the complete event list are documented in the Receive webhooks and the event catalog.