Matching
Matching d'une entreprise
POST /v1/match évalue chaque mesure au regard de ce que vous savez d’une entreprise et d’un projet, et indique lesquelles conviennent vraisemblablement, pourquoi, ce qui reste inconnu et ce que chacune pourrait rapporter.
Qui décide
La requête
curl -X POST "https://api.subsido.be/v1/match" \ -H "Authorization: Bearer sb_live_..." \ -H "Content-Type: application/json" \ -d '{"company":{"postcode":"9000","employees":12,"turnover_eur":1500000,"legal_form":"bv","nace":["62.010"]},"project":{"topics":["digitalisation","investment"],"budget_eur":25000,"planned_start":"2026-11-01"},"language":"en","limit":10}'| Propriété | Signification |
|---|---|
| company | Ce que vous savez de l’entreprise. Chaque propriété est facultative. |
| project | Ce pour quoi l’entreprise cherche une aide. Chaque propriété est facultative. |
| options | Les mesures à prendre en compte. Voir ci-dessous. |
| language | nl, fr ou en (par défaut) : titres, résumés, libellés des règles et questions. |
| limit | Nombre de résultats renvoyés, de 1 à 100 (25 par défaut). Le nombre total figure de toute façon dans matched. |
Le corps est strict : une propriété que l’API ne connaît pas, où qu’elle se trouve, ou une valeur du mauvais type ou hors de sa liste, donne 400 invalid_parameter avec son nom, si bien qu’un turnover mal orthographié ne devient jamais une inconnue en silence. Une valeur lisible mais impossible (un code postal hors de Belgique, un numéro d’entreprise dont le chiffre de contrôle est faux, un montant négatif) donne 422 invalid_body avec la propriété dans details.field. Envoyez Content-Type: application/json.
Une information que vous ne donnez pas est inconnue, jamais supposée. C’est tout l’intérêt : au lieu d’un score assuré bâti sur des suppositions, la réponse indique quelles informations trancheraient pour chaque mesure.
company
| Propriété | Type | Signification |
|---|---|---|
| enterprise_number | string | Le numéro BCE sous toute forme usuelle (BE0123.456.749, 0123 456 749 ou les anciens neuf chiffres). Contrôlé par son modulo 97 et renvoyé sous la forme 0123.456.749. Un simple identifiant : aucun registre n’est consulté, il n’ajoute donc aucune information. |
| postcode | string | Le code postal belge du siège ou de l’unité d’établissement concernée. Détermine la région et la province si vous ne les donnez pas. |
| region, regions | string, string[] | Où l’entreprise a un établissement : flanders, brussels, wallonia. region est un raccourci pour une liste d’un seul élément ; les deux peuvent être donnés et sont combinés. |
| province | string | L’une des dix provinces (east_flanders, liege, ...). Bruxelles n’appartient à aucune. |
| size | string | micro, small, medium ou large. Déduite des chiffres ci-dessous en son absence. |
| employees | number | Effectif en unités de travail annuel (ETP). |
| turnover_eur, balance_sheet_eur | number | Le chiffre d’affaires annuel et le total du bilan du dernier exercice clôturé. |
| nace | string[] | Les codes NACE-BEL de l’entreprise, avec ou sans points : 62.010, 62010, 62.01. Donnez au moins la division à deux chiffres. |
| legal_form | string | L’abréviation que l’on tape, en néerlandais ou en français : bv/srl (et les anciennes bvba/sprl), nv/sa, cv/sc, vof/snc, commv/scs, maatschap, eenmanszaak/entreprise individuelle, vzw/asbl, ivzw/aisbl, stichting/fondation, se, public, other. La casse, les points et les espaces sont ignorés. |
| applicant_type | string | L’une des valeurs companyself_employednon_profitpublic_bodyresearch_organisationindividualfarmersocial_enterprise Déduit de la forme juridique en son absence. |
| founded_on | date | YYYY-MM-DD. Donne l’âge de l’entreprise. |
| age_years | number | L’âge directement, si vous n’avez pas la date. |
| has_legal_personality | boolean | Déduit de la forme juridique en son absence : une entreprise individuelle et une société simple (maatschap) n’ont pas la personnalité juridique. |
| de_minimis_received_eur | number | Les aides de minimis reçues au cours des trois dernières années. |
| in_difficulty | boolean | Si l’entreprise est une entreprise en difficulté au sens des règles européennes en matière d’aides d’État. |
project
| Propriété | Type | Signification |
|---|---|---|
| topics | string[] | L’objet du projet, sous forme d’identifiants de thèmes (digitalisation, energy_efficiency, ... ; GET /v1/taxonomy les liste). Sert à la pertinence, et à écarter les mesures qui portent sur autre chose. |
| budget_eur | number | Le coût du projet. Utilisé par les règles de budget et par l’estimation. |
| started | boolean | Si le projet a déjà commencé. Beaucoup de régimes refusent les coûts engagés avant la demande. |
| planned_start | date | Donne started si vous ne le fournissez pas : un début aujourd’hui ou avant signifie commencé. |
| region | string | Où le projet ou l’investissement a lieu, si ce n’est pas simplement là où l’entreprise est établie. |
| cost_types | string[] | Les coûts à financer : training, consultancy, equipment, software, personnel, ... (la liste des coûts éligibles). |
| duration_months | number | La durée du projet. |
| partners | number | Les partenaires indépendants qui mènent le projet, demandeur compris. |
options
| Propriété | Par défaut | Signification |
|---|---|---|
| statuses | open, continuous, forthcoming, unknown | Les statuts des mesures à prendre en compte. |
| instrument_types | tous | Uniquement ces types d’instruments (grant, loan, tax_deduction, ...). |
| include_not_eligible | false | Renvoie aussi les mesures qu’une règle exclut, en not_eligible, avec la règle qui a échoué. |
| include_unrelated | false | Si des thèmes de projet sont donnés, une mesure dont les thèmes n’ont rien en commun avec eux (pas même un thème voisin) est écartée, sauf si cette option est activée. Une mesure sans aucun thème est conservée dans tous les cas. |
Ce qui est déduit
Les informations que vous n’avez pas données sont déduites, prudemment, de celles que vous avez données, et chaque déduction figure dans profile.derived avec les propriétés dont elle provient. estimate: true signale une déduction qui repose sur une hypothèse.
| Déduit | À partir de | Comment |
|---|---|---|
| company.regions | company.postcode | Un code postal belge détermine sa région. Uniquement si vous n’avez donné ni region ni regions. |
| company.province | company.postcode | Et sa province, sauf pour Bruxelles, qui n’en a pas. Uniquement si vous n’avez pas donné de province. |
| company.size | employees, turnover_eur, balance_sheet_eur | La définition européenne des PME, ci-dessous. Avec le seul effectif, c’est l’effectif qui décide, et estimate vaut true. |
| company.applicant_type | company.legal_form | srl, sa, sc, snc, scs, maatschap et se sont une entreprise (company) ; entreprise individuelle est un indépendant (self_employed) ; asbl, aisbl et fondation sont un organisme sans but lucratif (non_profit) ; public est un organisme public (public_body). Les abréviations néerlandaises suivent la même répartition. |
| company.has_legal_personality | company.legal_form | False pour entreprise individuelle et maatschap, true pour les autres formes, inconnu pour other. |
| company.age_years | company.founded_on | Années révolues à la date du jour à Bruxelles : une entreprise fondée le 1er octobre 2019 a six ans le 27 septembre 2026, et non sept. Une date future est ignorée, avec un avertissement. |
| project.started | project.planned_start | Commencé si le début prévu est aujourd’hui ou avant. |
| project.region | les régions de l’entreprise | Quand l’entreprise est dans une seule région et que vous n’avez pas donné de région de projet. estimate vaut true : le projet est supposé se dérouler là où se trouve l’entreprise. |
Catégories de taille
Recommandation 2003/361/CE : un plafond d’effectif et soit le plafond de chiffre d’affaires, soit celui du total du bilan. Une entreprise qui dépasse les plafonds financiers d’une catégorie passe à la catégorie supérieure.
| Catégorie | Effectif (UTA) | Chiffre d’affaires | ou total du bilan |
|---|---|---|---|
| micro | moins de 10 | au plus 2 millions € | au plus 2 millions € |
| small | moins de 50 | au plus 10 millions € | au plus 10 millions € |
| medium | moins de 250 | au plus 50 millions € | au plus 43 millions € |
| large | tout le reste |
Les entreprises partenaires et liées modifient les chiffres qu’utilise la définition, et l’API ne les voit pas. C’est l’une des raisons pour lesquelles un résultat dit « probable » et non « éligible ». Certaines mesures (le tax shelter belge, par exemple) appliquent plutôt le critère de taille du Code des sociétés et des associations ; leurs règles testent alors directement les chiffres : envoyez donc les chiffres, et pas seulement size.
Les quatre statuts
Les règles de chaque mesure sont évaluées selon une logique à trois valeurs (pass, fail, unknown ; voir les règles d’éligibilité), et ce résultat, combiné à la qualité des règles de la mesure, donne le statut :
| match_status | Exactement quand |
|---|---|
| likely_eligible | Toutes les règles sont satisfaites, et les règles de la mesure sont curated ou extracted (rules_basis) avec une confidence d’au moins 0,7. C’est le statut le plus fort de cette API. |
| possibly_eligible | Aucune règle n’a échoué, et au moins une n’a pas pu être tranchée faute d’une information. unknowns liste les informations qui trancheraient. |
| needs_review | Toutes les règles sont satisfaites, mais elles sont seulement déduites de champs structurés, ou leur confidence est inférieure à 0,7 : les conditions décisives sont surtout du texte qui n’est pas évalué. Lisez la page officielle. Une mesure sans aucune règle se retrouve aussi ici. |
| not_eligible | Une règle a échoué ; reasons indique laquelle. Renvoyé uniquement avec options.include_not_eligible. |
Les résultats sont triés par statut dans cet ordre, puis selon ce qui peut être demandé le plus tôt (ouvert, permanent, à venir, inconnu, suspendu, budget épuisé, clôturé), puis par score, puis par l’échéance la plus proche.
La réponse
{
"matches": [
{
"subsidy_id": "federal:investeringsaftrek",
"match_status": "likely_eligible",
"confidence": 0.9,
"relevance": 1,
"score": 0.98,
"reasons": [
{
"id": "applicant_type",
"field": "company.applicant_type",
"op": "in",
"value": [
"company",
"self_employed",
"farmer"
],
"label": "Industrial, commercial or agricultural business, or liberal profession",
"result": "pass",
"actual": "company",
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
"source_section": "Wie kan de investeringsaftrek genieten?",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
}
],
"unknowns": [],
"matched_topics": [
"digitalisation",
"investment"
],
"estimate": {
"max_amount_eur": 10000,
"rate_applied": 40,
"basis": "€25,000 × 40%"
},
"subsidy": {
"id": "federal:investeringsaftrek",
"title": "Investment deduction",
"summary": "Tax deduction from FOD Financiën for companies, self-employed people and farmers in Belgium. Covers 10% to 40% of eligible costs. Applications accepted at any time.",
"status": "continuous",
"instrument_type": "tax_deduction",
"issuer": "FOD Financiën",
"scope": "national",
"regions": [],
"topics": [
"investment",
"digitalisation",
"energy_efficiency",
"renewable_energy"
],
"opens_at": null,
"closes_at": null,
"rolling": true,
"budget_exhaustion_possible": false,
"funding": {
"rate_min": 10,
"rate_max": 40,
"amount_min": null,
"amount_max": null,
"annual_cap": null,
"de_minimis": null
},
"rules_basis": "curated",
"source": {
"id": "curated_federal",
"url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
"authority": "FOD Financiën",
"last_checked_at": "2026-09-27T06:00:12+02:00",
"freshness": "fresh"
},
"links": {
"api": "https://api.subsido.be/v1/subsidies/federal:investeringsaftrek",
"web": "https://subsido.be/en/grants/investeringsaftrek",
"apply": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek"
}
}
},
{
"subsidy_id": "federal:tax-shelter-start-up",
"match_status": "possibly_eligible",
"confidence": 0.9,
"relevance": 0.25,
"score": 0.515,
"reasons": [
{
"id": "size",
"field": "company.employees",
"op": "lte",
"value": 50,
"label": "At most 50 employees (annual average)",
"result": "pass",
"actual": 12,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "size_turnover_a",
"field": "company.turnover_eur",
"op": "lte",
"value": 11250000,
"label": "Annual turnover at most EUR 11,250,000 (excl. VAT)",
"result": "pass",
"actual": 1500000,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "size_employees_b",
"field": "company.employees",
"op": "lte",
"value": 50,
"label": "At most 50 employees (annual average)",
"result": "pass",
"actual": 12,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "size_balance_b",
"field": "company.balance_sheet_eur",
"op": "lte",
"value": 6000000,
"label": "Balance sheet total at most EUR 6,000,000",
"result": "unknown",
"actual": null,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "size_turnover_c",
"field": "company.turnover_eur",
"op": "lte",
"value": 11250000,
"label": "Annual turnover at most EUR 11,250,000 (excl. VAT)",
"result": "pass",
"actual": 1500000,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "size_balance_c",
"field": "company.balance_sheet_eur",
"op": "lte",
"value": 6000000,
"label": "Balance sheet total at most EUR 6,000,000",
"result": "unknown",
"actual": null,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": "Art. 1:24 WVV",
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": null
}
},
{
"id": "age_max",
"field": "company.age_years",
"op": "lt",
"value": 4,
"label": "Within the first four years after incorporation",
"result": "unknown",
"actual": null,
"provenance": {
"method": "curated",
"source_url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"source_section": null,
"review_status": "verified",
"reviewed_at": "2026-09-27",
"note": "Completed years: the fifth year after incorporation belongs to the scale-up regime."
}
}
],
"unknowns": [
{
"field": "company.age_years",
"request_path": "company.founded_on",
"question": "When was the company founded?"
}
],
"matched_topics": [],
"estimate": {
"max_amount_eur": 11250,
"rate_applied": 45,
"basis": "€25,000 × 45%, capped at €500,000"
},
"subsidy": {
"id": "federal:tax-shelter-start-up",
"title": "Tax shelter for start-ups",
"summary": "Tax credit from FOD Financiën for small companies in Belgium. Covers 30% to 45% of eligible costs, up to €500,000. Applications accepted at any time.",
"status": "continuous",
"instrument_type": "tax_credit",
"issuer": "FOD Financiën",
"scope": "national",
"regions": [],
"topics": [
"starting_business",
"financing"
],
"opens_at": null,
"closes_at": null,
"rolling": true,
"budget_exhaustion_possible": false,
"funding": {
"rate_min": 30,
"rate_max": 45,
"amount_min": null,
"amount_max": 500000,
"annual_cap": null,
"de_minimis": null
},
"rules_basis": "curated",
"source": {
"id": "curated_federal",
"url": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up",
"authority": "FOD Financiën",
"last_checked_at": "2026-09-27T06:00:12+02:00",
"freshness": "fresh"
},
"links": {
"api": "https://api.subsido.be/v1/subsidies/federal:tax-shelter-start-up",
"web": "https://subsido.be/en/grants/tax-shelter-start-up",
"apply": "https://financien.belgium.be/nl/ondernemingen/tax-shelter-kleine-ondernemingen/startende-start-up"
}
}
}
],
"matched": 2,
"evaluated": 412,
"profile": {
"facts": {
"company.applicant_type": "company",
"company.employees": 12,
"company.has_legal_personality": true,
"company.legal_form": "bv",
"company.nace": [
"62010"
],
"company.province": "east_flanders",
"company.regions": [
"flanders"
],
"company.size": "small",
"company.turnover_eur": 1500000,
"project.budget_eur": 25000,
"project.region": "flanders",
"project.started": false,
"project.topics": [
"digitalisation",
"investment"
]
},
"derived": [
{
"field": "company.regions",
"value": [
"flanders"
],
"from": [
"company.postcode"
],
"estimate": false
},
{
"field": "company.province",
"value": "east_flanders",
"from": [
"company.postcode"
],
"estimate": false
},
{
"field": "company.size",
"value": "small",
"from": [
"company.employees",
"company.turnover_eur"
],
"estimate": false
},
{
"field": "company.applicant_type",
"value": "company",
"from": [
"company.legal_form"
],
"estimate": false
},
{
"field": "company.has_legal_personality",
"value": true,
"from": [
"company.legal_form"
],
"estimate": false
},
{
"field": "project.started",
"value": false,
"from": [
"project.planned_start"
],
"estimate": false
},
{
"field": "project.region",
"value": "flanders",
"from": [
"company.region"
],
"estimate": true
}
],
"enterprise_number": null,
"warnings": []
},
"missing_information": [
{
"field": "company.age_years",
"request_path": "company.founded_on",
"question": "When was the company founded?",
"would_settle": 1
}
],
"language": "en",
"disclaimer": "Independent service. Not affiliated with, endorsed by, or operated by any government or public authority. Eligibility and awards are decided by the competent authority.",
"meta": {
"request_id": "req_0192d3a4b5c67d8e9f0a1b2c3d4e5f61",
"warnings": []
}
}Valeurs d’exemple. Le résultat du tax shelter montre la logique à l’œuvre : son critère de taille est « deux critères sur trois », écrit comme un any de trois paires. La première paire est satisfaite, donc le total du bilan inconnu dans les deux autres n’a pas d’importance et n’est pas demandé ; l’âge de l’entreprise est inconnu et serait décisif, il est donc demandé.
| Champ | Signification |
|---|---|
| matches[] | Les meilleurs d’abord, limit au plus. |
| matches[].subsidy_id, match_status | La mesure et le statut ci-dessus. |
| matches[].confidence | De 0 à 1 : dans quelle mesure les règles couvrent ce qui détermine l’éligibilité pour cette mesure (son eligibility.confidence). |
| matches[].relevance | De 0 à 1 : l’adéquation entre les thèmes de la mesure et ceux du projet. Un thème commun compte entièrement, un thème voisin (énergie et efficacité énergétique, investissement et financement) à moitié. 0,5 si vous n’avez pas donné de thèmes ; 0,25 pour une mesure sans thème. |
| matches[].score | 0,5 × relevance + 0,3 × poids du statut (1 ; 0,7 ; 0,5 ; 0) + 0,2 × confidence, à trois décimales. Sert au tri, ce n’est pas une probabilité. |
| matches[].reasons[] | Chaque condition de l’arbre de règles de la mesure, dans l’ordre : id, field, op, value, un label dans votre langue, le result (pass, fail ou unknown), la valeur de l’entreprise dans actual (ou null), et la provenance de la règle : où et comment elle a été lue. |
| matches[].unknowns[] | Les informations inconnues qui pourraient changer le résultat : field, le request_path qui la fournit et la question à poser, dans votre langue. Vide dès que le résultat est tranché. |
| matches[].matched_topics | Les thèmes du projet que la mesure partage. |
| matches[].estimate | Voir ci-dessous, ou null. |
| matches[].subsidy | Ce qu’il faut pour afficher la mesure sans seconde requête : titre, résumé, statut, type d’instrument, nom de l’organisme, portée, régions, thèmes, dates, financement, rules_basis, la source avec son URL officielle et sa dernière vérification, et les links (api, web, apply). |
| matched | Le nombre total de mesures retenues, avant limit. |
| evaluated | Le nombre de mesures évaluées. |
| profile | Les informations évaluées (facts, par champ de règle), ce qui a été déduit et à partir de quoi (derived), le enterprise_number normalisé et les warnings. |
| missing_information[] | Sur l’ensemble des résultats renvoyés, les informations manquantes qui en trancheraient le plus, les plus utiles d’abord : field, request_path, question et would_settle (le nombre de résultats où elle apparaît). Posez ces questions, envoyez les réponses, et possibly_eligible devient un statut tranché. |
| language, disclaimer, meta | La langue utilisée, la déclaration d’indépendance et l’identifiant de la requête. |
De l’inconnu à une réponse tranchée
request_path est la propriété à envoyer, qui n’est pas toujours le champ de la règle : une règle d’âge sur company.age_years demande company.founded_on, et une règle de région sur company.regions demande company.region. Construisez le formulaire de suivi à partir de missing_information, renvoyez la même requête avec les nouvelles informations, et les règles inconnues deviennent satisfaites ou non.L’estimation
Un calcul sur les chiffres publiés, à titre indicatif uniquement :
- Le taux est le palier le plus élevé de
funding.ratespour la taille de l’entreprise, oufunding.rate_maxsi aucun palier ne cite cette taille. - Le plafond est le plus bas de
funding.amount_maxetfunding.annual_cap. - Avec un budget de projet et un taux : budget × taux, plafonné. Sinon, s’il y a un plafond : le plafond, comme montant maximal. Sinon
null. basisexprime le calcul en toutes lettres, dans votre langue (25 000 € × 40 %,plafonné à 7 500 €). Pour une mesure fiscale, le montant est l’ampleur de l’avantage que décrit le taux, pas un versement.
Ce que coûte un matching
Chaque POST /v1/match compte pour une requête et une évaluation de matching, quel que soit le nombre de mesures évaluées. Une requête refusée pour des informations invalides n’est pas comptée comme évaluation. Les évaluations de matching ont leur propre quota mensuel : vous pouvez continuer à lire des mesures une fois celui-ci épuisé ; voir limites et quotas.
Matching en masse
À partir de BusinessPOST /v1/match/bulk nécessite la capacité bulk_match.
De nombreuses entreprises en une seule requête : jusqu’à 500 avec Business et 5 000 avec Enterprise. Chacune porte votre propre reference (de 1 à 200 caractères, unique dans la requête), renvoyée telle quelle.
{
"companies": [
{
"reference": "client-0042",
"company": {
"postcode": "2000",
"employees": 4,
"legal_form": "bv"
},
"project": {
"topics": [
"energy_efficiency"
]
}
},
{
"reference": "client-0043",
"company": {
"postcode": "4000",
"nace": [
"47.110"
]
}
}
],
"options": {
"statuses": [
"open",
"continuous"
]
},
"language": "fr",
"limit_per_company": 10
}La réponse est { results, evaluated, language, disclaimer, meta }, un résultat par entreprise dans l’ordre de la requête : { reference, matches, matched, missing_information, error }. Une entreprise dont les informations sont invalides reçoit sa propre error ({ code, message, details }) et une liste de résultats vide, et n’est pas comptée ; les autres comptent chacune pour une évaluation. limit_per_company va de 1 à 100 (10 par défaut). La requête entière est refusée avec match_quota_exceeded si ses entreprises valides vous feraient dépasser votre quota, et avec plan_required si elle contient plus d’entreprises que votre formule n’en permet par requête.
Pour réévaluer les mêmes entreprises chaque fois qu’une mesure change, placez-les plutôt dans une liste de suivi : la réévaluation est incluse.
