A Supplier-Onboarding Check for France and Spain: One Workflow, Two Registers

Onboard French and Spanish suppliers with one workflow: what to collect, which checks to run in each country, how to decide, what to store, when to re-check.

· By the Fuentio team · 6 min read

Share image: "A Supplier-Onboarding Check for France and Spain: One Workflow, Two Registers" on Fuentio's paper background, with the Guide label.

If you buy from both France and Spain, your supplier onboarding meets two very different registers. France has a live directory with a status for every company. Spain publishes registered acts in a gazette, with no live status and no lookup by tax ID. A good onboarding check respects both, without two separate processes.

This guide lays out one workflow that works for both countries: what to collect from the supplier, which checks to run in each country, how to turn the answers into a decision, what to store for audit, and when to check again. It ends with a code sketch and a unit budget.

What you'll learn

  • What to ask a new supplier for, country by country
  • The checks to run, and why they differ between France and Spain
  • A decision table you can adapt
  • What to store so the check can be shown later
  • When to re-check, and what it costs

Step 1: collect the right identifiers

FranceSpain
Company identifierSIREN (9 digits) or SIRET (14)Exact registered name (denominación social) and province
Also ask forVAT number, registered addressNIF, registered address
WhyThe SIREN finds the company directlyThe gazette publishes companies by name and registry sheet, not by tax ID

For Spain, once you've found the company, store its Registro Mercantil sheet (for example V-5581): it becomes your identifier. See how to find a Spanish company by name.

Bank details are not a register question: confirm them with the supplier by phone, on a number you already trust (see supplier bank-detail change fraud).

Step 2: run the checks

France

  1. Verify the company (POST /v1/verifications, 5 units): status from the Sirene directory, registered address, and an outcome with a proof code.
  2. Insolvency (GET …/insolvency, 1 unit): BODACC notices since 2008.
  3. VAT (GET …/vat, 1 unit): the number the register publishes or the one computed from the SIREN; check its registration on VIES.
  4. Address (GET …/address, 1 unit): validated against the national address base, with the number of companies at the same address.

Spain

  1. Find the company by name (GET /v1/companies/search?country=ES&q=…, 2 units a page) and pick the right sheet using the province and address.
  2. Verify it (5 units): the outcome will usually be partial with status_unknown, because the gazette publishes events, not a status. That is expected.
  3. Insolvency (1 unit): "Situación concursal" acts in the BORME. For a declaration of insolvency, the public insolvency register is the reference.

The details of each call are in verify a company and get a proof code via API and insolvency and VAT checks via API.

Step 3: decide

Fuentio gives facts and an outcome; your policy makes the decision. A starting point:

SituationFranceSpain
Verification verifiedApproveRare (status is usually unknown)
Verification partialReview the reasonsNormal: approve if the acts show nothing alarming and the amount is moderate
Verification unverifiedStop, ask the supplierStop, ask the supplier
Insolvency in_procedure or notice_foundEscalateEscalate
Insolvency not_coveredUnknown, not clear: decide by amount at stakeSame
Address shared by many companiesAsk for an operating address if you pay in advanceNot available yet
VAT number doesn't matchAsk, and check on VIESCheck the NIF-IVA on VIES

Two principles keep this honest:

  • "Not covered" is never "clear". A source that can't answer is a gap, not a pass.
  • A search result is not a match. For Spain, confirm the sheet with the province and address before you rely on it.

Step 4: store the evidence

For each supplier, store with the record:

  • the proof code of the verification (anyone you share it with can check it on the proof page, without a key);
  • the outcome and reasons;
  • the date of each check and its source (meta.source, meta.last_verified_at);
  • the decision and who made it.

That is your audit trail: a year later you can show what the register said on the day, and why you decided as you did.

Step 5: re-check at the right moments

  • Before each large order or prepayment, re-run the verification and the insolvency check.
  • When the supplier announces a change (address, name, bank details), run the full check again.
  • Periodically for your critical suppliers, for example monthly.
  • Automatically, with a key: watch_company sends you the changes in a company's official records, signed, to your own https endpoint (3 watches on the Free plan, 100 on paid plans).

A code sketch

def onboard(country, key, siren=None, name=None, province=None):
    if country == "FR":
        identifier = siren
    else:
        found = fuentio_get(f"/v1/companies/search?country=ES&q={name}", key)
        candidates = found.get("data") or []
        identifier = candidates[0]["identifiers"][0]["value"] if candidates else None
        # in production, confirm the province and address before going on
    if not identifier:
        return {"decision": "ask_supplier", "why": "company not found"}
    v = fuentio_post("/v1/verifications", key, {"country": country, "identifier": identifier})
    ins = fuentio_get(f"/v1/companies/{country}/{identifier}/insolvency", key)
    return {
        "identifier": identifier,
        "outcome": v["data"]["result"]["outcome"],
        "reasons": v["data"]["result"]["reasons"],
        "proof_code": v["data"]["proof_code"],
        "insolvency_state": (ins.get("data") or {}).get("state"),
    }

fuentio_get is the retry helper from the API quickstart; fuentio_post is the same with a JSON body.

What it costs

CheckFranceSpain
Search—2
Verification55
Insolvency11
VAT1—
Address1—
Per supplier8 units8 units

A free key (100 units a month) covers about a dozen full onboardings to try the workflow; the Starter plan (€49 a month, 2,000 units) covers around 250. Before writing code, try the free list check on up to 20 suppliers, or let an AI agent run the checks over MCP. See what we cover.

Who does what

A check works best when each team owns one part of it.

  • Procurement collects the identifiers (SIREN, or registered name and province) and runs the register checks when the supplier is created.
  • Finance confirms bank details with the supplier by phone, on a known number, and never from an email. It also triggers a new check before large prepayments.
  • Compliance or a named reviewer handles everything the table routes to review or escalation, and decides.
  • Whoever owns the supplier relationship reports changes the supplier announces: a new address, a new name, new bank details. Each one restarts the check.

Write this down in one page and link it from your procurement tool. The best workflow fails when nobody knows it's theirs.

Frequently asked questions

Why can't I onboard a Spanish supplier with its NIF?

Because the Spanish gazette publishes companies by name and registry sheet, not by tax ID. Ask for the exact registered name and province, find the sheet, then store it.

Is a "partial" verification enough for a Spanish supplier?

Often, yes: it is the normal outcome when the source has no live status. Read the reasons and the latest acts, and add checks when the amount at stake justifies it.

What should I keep for an audit?

The proof code, the outcome and reasons, the date and source of each check, and the decision with who made it.

How often should I re-check suppliers?

Before large orders or prepayments, whenever a supplier announces a change, and periodically for critical suppliers. A watch can notify you of register changes automatically.

Sources

← All articles · RSS feed