FR
Copied
Modules

Financial data

Frozen during alpha. This module is built and listed across the product as a regular module, but it cannot be launched while outsend is in alpha — extracting and parsing filed annual accounts is too resource-intensive for the current alpha capacity. The new-job page shows it with a 🛠️ "unavailable in alpha" banner and a disabled Launch button, and POST /api/jobs/finance returns 503. It will be enabled once capacity allows, with the contract described below.

The finance module turns each company in a list into a financial profile built from publicly filed annual accounts. Where legal_data returns an administrative snapshot with headline figures (revenue, net income, capital), finance goes deeper: multi-year revenue, profitability, balance-sheet structure, and derived solvency and liquidity ratios with a consolidated risk score.

The module is read-only: no credentials are required, no fees are charged by the upstream sources, and no business is contacted as part of the lookup.

Purpose

Qualify a list financially before spending outreach effort on it — prioritise solid companies and screen out fragile structures.

Typical use cases:

Inputs

finance is an enrichment module: it consumes an existing list of POI rather than producing one. The expected input is a poi_list, typically the output of a discovery job.

Field Required Notes
nom yes Company name, used for matching.
siren no If present, used for an exact match (preferred).
code_postal no Disambiguates fuzzy name matches.

Match resolution mirrors legal_data: exact SIREN lookup when available, then a fuzzy match on nom + code_postal. A row that cannot be resolved — or a company that has not filed accounts — is returned with empty enrichment columns and an error code (see Errors).

Outputs

Each input row is augmented with the following columns. Empty values are preserved as empty strings — the module never fabricates a value.

Column Type Description
ca_3ans object Revenue for the last three filed fiscal years.
resultat_net number Net income for the latest filed year, in EUR.
ebitda number Earnings before interest, taxes, D&A, in EUR.
fonds_propres number Shareholders' equity, in EUR.
dettes_financieres number Financial debt, in EUR.
tresorerie number Cash and cash equivalents, in EUR.
bfr number Working capital requirement, in EUR.
ratio_solvabilite number Solvency ratio (equity / total assets).
ratio_liquidite number Current ratio (current assets / current liabilities).
marge_nette number Net margin (net income / revenue), as a percentage.
score_risque string Consolidated risk score (faible, modere, eleve).
date_cloture date Closing date of the latest filed fiscal year.

Lifecycle

Standard job lifecycle — see Jobs lifecycle. Progress is reported per company processed. While the module is frozen in alpha, no job can be created; the section below documents the contract that applies once it is enabled.

Pipeline

Not pipelinable in alpha. The module appears in the dashboard, the new-job picker, the tools catalogue, and the landing page as an active module, but it is not exposed as a pipeline node while frozen. Once enabled it consumes a poi_list and emits an enriched_list carrying the original rows plus the columns described in Outputs.

Endpoints

Create a job

POST /api/jobs/finance

During alpha this endpoint returns 503 with an explanatory message. The request body below describes the contract that applies once the module is enabled:

{
  "items": [
    { "nom": "Boulangerie Martin", "code_postal": "75011" },
    { "siren": "552120222" }
  ],
  "source_job_id": "job_01HXYZ..."
}

Either items or source_job_id must be provided. When source_job_id references a completed discovery job, its rows are used as input directly.

Retrieve a job

GET /api/jobs/{job_id}

Returns the current state, progress counters, and — when done — the download URL for the enriched CSV.

Financial figures depend on the company having filed its accounts. A large share of French SMEs file under a confidentiality option, in which case detailed figures are unavailable and the row is returned with empty financial columns and a no_accounts_filed code.

Errors

Row-level errors are reported in an error column on the enriched output. Job-level errors transition the job to failed.

Code Scope Meaning
alpha_unavailable job Module is frozen during alpha. POST returns 503.
not_found row No registry match for the provided name and postcode.
no_accounts_filed row Company exists but has not filed (or filed confidential) accounts.
ambiguous_match row Several candidates with equal score; none selected.
source_unavailable job One or more upstream public sources are unreachable.
invalid_input job Input list is empty or missing required fields.

What's next