Insolvency and VAT Checks via API for French and Spanish Companies

Two API calls, one unit each: insolvency state from BODACC and the BORME, and a company's EU VAT number with a VIES link. What each answer means.

· By the Fuentio team · 6 min read

Share image: "Insolvency and VAT Checks via API for French and Spanish Companies" on Fuentio's paper background, with the Tutorial label.

Two questions come up in every customer or supplier review: is this company in an insolvency proceeding, and is its VAT number right? The Fuentio API answers both with one call each, for 1 unit, with the source and the check date. This tutorial shows the calls, what each field means, how to read the states honestly (including "not covered"), and a small function that runs both checks.

What you'll learn

  • How to call the insolvency endpoint, and what its states mean in France and Spain
  • How to call the VAT endpoint, and why it never says "registered"
  • A real answer for each, recorded from the API
  • How to combine both in your onboarding or credit review
  • What these checks can't tell you

Insolvency: GET /v1/companies/{country}/{identifier}/insolvency

curl https://api.fuentio.com/v1/companies/FR/552100554/insolvency -H "X-API-Key: YOUR_API_KEY"

Cost: 1 unit. The answer has a state, and, when there is one, the procedure, the opened_on and closed_on dates and the list of notices, each with its official citation. covered_since gives the first day of data loaded.

France: BODACC notices, linked by SIREN

In France, the answer comes from the insolvency notices published in BODACC (bulletin A, published by the DILA), linked to the company by its SIREN. The state is one of:

StateMeaning
in_procedureA proceeding is open.
under_planThe company is under a safeguard or reorganisation plan.
closedThe proceeding is closed.
notice_foundA notice was found, but the proceeding opened before the years loaded.
none_foundNo notice, and BODACC is loaded for the company's whole life.
not_coveredThe loaded years don't cover the company: no conclusion either way.

The procedure is safeguard, reorganisation (redressement judiciaire) or liquidation. Notices about people and personal sanctions are left out.

A real answer, recorded on 12 October 2026 for PEUGEOT SA:

{
  "data": {
    "company": { "country": "FR", "id": "FR-SIREN-552100554", "name": "PEUGEOT SA" },
    "state": "not_covered",
    "procedure": null,
    "opened_on": null,
    "closed_on": null,
    "notices": [],
    "covered_since": "2008-02-13",
    "attribution": "Source: DILA, BODACC",
    "note": "From BODACC A insolvency notices (DILA), linked by SIREN. Notices about people and personal sanctions are left out. No notice outside the loaded years is not proof of no procedure."
  },
  "meta": { "cost": { "units": 1 } }
}

not_covered here is not good news or bad news: it means the loaded BODACC years (from 13 February 2008) don't cover this company's whole life, so the API won't claim there was never a proceeding. Treat not_covered as "unknown", and none_found as the only "nothing published".

Spain: "Situación concursal" acts in the BORME

In Spain, the answer comes from the BORME acts recorded as "Situación concursal". The state is notice_found, none_found or not_covered. There is no closed: the BORME doesn't say when a proceeding ends. For the full picture of a Spanish concurso, the public insolvency register remains the reference: see how to check whether a French or Spanish company is insolvent.

VAT: GET /v1/companies/{country}/{identifier}/vat

curl https://api.fuentio.com/v1/companies/FR/441639465/vat -H "X-API-Key: YOUR_API_KEY"

Cost: 1 unit. For France, the answer gives the company's EU VAT number: the one the register publishes, or, when it doesn't, the one computed from the SIREN with the standard key (a few companies have a letter key, which can't be computed). It also says how the number was obtained.

Two fields deserve attention:

  • registration_checked is always false. A VAT number can be correctly formed and still not be registered for intra-EU trade. Fuentio doesn't query VIES for you; the answer gives you the official VIES page in check_url so you can check the registration there.
  • For Spain there is no VAT number: the BORME doesn't publish them.

The same VAT information also comes with a French lookup, in meta.vat. Recorded for RENAULT on 12 October 2026:

"vat": {
  "number": "FR63441639465",
  "origin": "published by the source",
  "registration_checked": false,
  "note": "VAT registration not checked. Check the registration on the official VIES page.",
  "check_url": "https://ec.europa.eu/taxation_customs/vies/"
}

If you only need to check the format of a French VAT number you already have, you don't need an API call at all. The key is computed from the SIREN:

def french_vat(siren: str) -> str:
    key = (12 + 3 * (int(siren) % 97)) % 97
    return f"FR{key:02d}{siren}"

assert french_vat("441639465") == "FR63441639465"

For the full validation rules (SIREN and SIRET check digits too), see SIREN, SIRET and VAT number formats.

Both checks in one function

A sketch of a "financial-risk" step for onboarding or before extending payment terms, using the retry helper from the API quickstart:

def risk_checks(country, identifier, key):
    insolvency = fuentio_get(f"/v1/companies/{country}/{identifier}/insolvency", key)
    vat = fuentio_get(f"/v1/companies/{country}/{identifier}/vat", key)
    state = (insolvency.get("data") or {}).get("state")
    return {
        "insolvency_state": state,
        "needs_review": state in ("in_procedure", "under_plan", "notice_found", "not_covered"),
        "vat": vat.get("data"),
    }

needs_review flags every state where a human should look, including not_covered, because "we don't know" is not "all clear". Store each answer's meta.source and check date with your decision.

Two units per company is cheap enough to run on every new customer and again before any large credit decision. For many companies at once, the free list check runs the insolvency check for up to 20 French companies with a CSV file; in an AI agent, the same checks are the check_insolvency and check_vat tools over MCP.

A free API key gives 100 units a month. See what we cover.

Reading an insolvency notice

When the French answer contains notices, each one carries its official citation and file, and the answer gives the procedure and the opened_on and closed_on dates. Three habits make the difference:

  • Read the most recent notice first. A company can have an old, closed reorganisation and a new proceeding. The state reflects the current situation; the notices tell the story.
  • Follow the citation. Each notice points to its BODACC publication. For any decision that matters (a claim, a contract termination), a person should read the official notice itself.
  • Note who to contact. In France, the opening notice names the court-appointed representative or liquidator: that is where a creditor's claim goes, within the deadline (see how to check whether a French or Spanish company is insolvent).

Common mistakes

  • Treating not_covered as clear. It means "we can't tell from the loaded years". Route it to review when the amount justifies it.
  • Treating a well-formed VAT number as registered. Format and registration are different questions: VIES answers the second.
  • Expecting a VAT number for Spain. The BORME doesn't publish them; ask the supplier for its NIF-IVA and check it on VIES.
  • Checking once, at onboarding only. Insolvency is an event in time. Re-run the check before large orders, prepayments and credit decisions.
  • Dropping the source. Store meta.source and the check date with every result; without them, nobody can tell later what the check was based on.

Frequently asked questions

Does the API tell me if a French company is in liquidation?

Yes, when BODACC has published it: the insolvency answer gives the state (for example in_procedure), the procedure (liquidation) and the notices with their citations.

What does not_covered mean?

That the loaded years don't cover the company's whole life, so the API can't say there was never a proceeding. Treat it as unknown, not as clear.

Does Fuentio check VAT registration in VIES?

No. registration_checked is always false, and the answer links the official VIES page so you can check the registration yourself.

Can I get a Spanish company's VAT number?

No. The BORME doesn't publish VAT numbers.

Sources

← All articles · RSS feed