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