# MDB B2B Check (MDB Group) > Live checks of business partners in official registers: EU VAT IDs (VIES), Swiss UIDs (UID register), EORI (EU Commission), Peppol e-invoicing, LEI (GLEIF), IBAN format, ECB exchange rates. No login. On request (with_receipt: true) a result carries a signed receipt (Ed25519). ## Access - MCP (Streamable HTTP): https://b2b.mdb-group.info/mcp - HTTP API: POST https://b2b.mdb-group.info/api/v1/ with the tool's arguments as JSON body (content-type: application/json). Input data is never accepted in the URL. GET only for the tool list https://b2b.mdb-group.info/api/v1/ and for https://b2b.mdb-group.info/api/v1/vies_status without parameters. - OpenAPI description: https://b2b.mdb-group.info/openapi.json - Human documentation: https://b2b.mdb-group.info/docs - Receipt public keys: https://b2b.mdb-group.info/.well-known/mdb-receipt-keys.json - Limit: 30 checks per 10 minutes per connection (a partner check counts as 4; rejected requests count nothing). ## Tools - [check_vat_id](https://b2b.mdb-group.info/api/v1/check_vat_id): Checks one EU VAT ID (27 member states plus XI) or one Swiss UID live in the official register (VIES or the Swiss UID register). Returns valid / invalid / unavailable / format_error, the registered name and address where published, the source with the time of the check (UTC) and a ready-to-file record. Accepts any common spelling (spaces, dots, dashes, lower case, 'MWST'). Use before reverse-charge invoices or to verify a business partner. - [check_vat_ids](https://b2b.mdb-group.info/api/v1/check_vat_ids): Checks up to 20 EU VAT IDs and/or Swiss UIDs live in the official registers. Returns one result per number in the same order, plus a summary count. Duplicates are looked up once. - [validate_vat_format](https://b2b.mdb-group.info/api/v1/validate_vat_format): Offline check of format and check digit for up to 100 EU VAT IDs or Swiss UIDs, without contacting any register. Fast and unlimited. It cannot tell whether a number is registered; use check_vat_id for that. - [vies_status](https://b2b.mdb-group.info/api/v1/vies_status): Shows which EU member state services in VIES are currently available. Use it when a check returned 'unavailable' to see whether the national service is down. - [find_swiss_company](https://b2b.mdb-group.info/api/v1/find_swiss_company): Searches the public Swiss UID register by company name (optionally with postal code or town) and returns up to 10 matches with UID, name, address and VAT registration status. Use it when the user knows a Swiss company's name but not its UID. - [check_eori](https://b2b.mdb-group.info/api/v1/check_eori): Checks up to 10 EU EORI customs numbers (incl. XI) live in the European Commission's EOS validation service. Returns registered / not registered, and name and address where the holder agreed to publish them. GB EORI numbers are not supported. - [find_peppol_participant](https://b2b.mdb-group.info/api/v1/find_peppol_participant): Looks up whether a company can receive e-invoices via Peppol. Search by VAT ID (the usual Peppol identifiers are derived automatically), by a known Peppol participant ID, or by company name. Returns two parts: the Peppol Directory (where listing is voluntary) and, for a VAT ID or participant ID, the Peppol network itself (SML and the provider's SMP), which also finds companies that are not listed in the directory. 'registered' with confirmed: true (the provider's SMP lists business documents) means reachable via Peppol, with the documents it receives; 'registered' without confirmed is only an SML entry and does not prove reachability. 'not registered' only covers the identifiers looked up; the company may use another one. A name search asks the directory only. - [find_lei](https://b2b.mdb-group.info/api/v1/find_lei): Looks up a company's LEI in the GLEIF database: by LEI code (with entity status, registration status, BIC and direct and ultimate parent company) or by company name (possible matches, optionally filtered by country). - [check_business_partner](https://b2b.mdb-group.info/api/v1/check_business_partner): One report on a business partner before invoicing or delivering: VAT ID (VIES or Swiss UID register), EORI customs number (the given one, or the VAT ID tried as EORI), Peppol e-invoicing reachability, and LEI with parent company. Each part names its own source and time and has its own status; a part whose source is down says so without affecting the others. No sanctions screening. - [check_iban](https://b2b.mdb-group.info/api/v1/check_iban): Use for one or several IBANs when no BIC is given. With a BIC, use check_payment_details. Offline check of up to 20 IBANs: format, length for the country and check digits. Optionally compares the account's country with the partner's country (argument partner: a country code or the partner's VAT ID) and flags a mismatch as a notice; without partner the result says that no comparison was made. It cannot verify who owns the account. - [get_exchange_rate](https://b2b.mdb-group.info/api/v1/get_exchange_rate): Returns the European Central Bank's euro reference rate for a currency on a given date (or the last rate before it, on weekends and holidays), and optionally converts an amount to or from euro. Use it for invoices in foreign currency. - [check_payment_details](https://b2b.mdb-group.info/api/v1/check_payment_details): Use when an IBAN comes together with a BIC (SWIFT code). For IBANs without a BIC, use check_iban. Checks the IBAN (length for the country per SWIFT IBAN Registry, 89 countries, and check digits) and the BIC (format, 8 or 11 characters; BIC country against the IBAN country; the bank behind the BIC where GLEIF's BIC-to-LEI list has it). Optionally compares the account country with the partner's country (argument partner); without it the result says that no comparison was made. It cannot verify who owns the account. - [calculate_late_interest](https://b2b.mdb-group.info/api/v1/calculate_late_interest): Calculates the statutory minimum interest on a late business payment. Euro area: ECB main refinancing rate on 1 January / 1 July of each half-year plus 8 percentage points, split by half-year, plus a fixed 40 EUR compensation (Directive 2011/7/EU); the ECB rate is loaded live. Sweden (SEK), Denmark (DKK), Poland (PLN) and Czechia (CZK): the national reference rate plus 8 points (Poland: 10) and the national fixed compensation (SEK 450, DKK 310, EUR 40/70/100 in PLN, at least CZK 1,200); in Czechia one rate for the whole delay. Switzerland: 5 % per year (Art. 104 OR). Hungary and Romania are not supported. Returns the formula, the rate for each period and the amounts. Contracts and national laws can differ. - [validate_tax_id_format](https://b2b.mdb-group.info/api/v1/validate_tax_id_format): Offline check of format and check digit for up to 50 tax or company numbers outside the EU (e.g. GB VAT, NO, AU ABN, NZ IRD, SG UEN, JP corporate number, CA BN, US EIN, IN GSTIN, BR CNPJ, MX RFC, TR, ZA, KR, AR, CL, CN, CO, IL, RU, UA) as well as EU VAT IDs and Swiss UIDs. Each answer states its depth: 'only the format was checked' or 'not supported'. It never says that a number is registered. - [check_company_register](https://b2b.mdb-group.info/api/v1/check_company_register): Looks up a company live in the official national company register of Norway (Brønnøysund Enhetsregisteret), Czechia (ARES) or Finland (PRH / YTJ), by company number or by name (at most 10 matches). Returns name, legal form, address, registration date, state as the register says it ("active" only where the register says so, "registered" = entered and not deleted, "deleted"), bankruptcy, liquidation or restructuring as separate fields where the register publishes them, and whether the company is VAT registered (true, false, or null if the register says nothing). Each field appears only if the register provides it. Use it to confirm that a Norwegian, Czech or Finnish partner exists and is active. - [check_registered_bank_account](https://b2b.mdb-group.info/api/v1/check_registered_bank_account): Checks live whether a bank account is reported to the tax authority for a given taxpayer: Poland (Ministry of Finance white list, 'Wykaz podatników VAT'; the answer carries the ministry's identifier of the query, requestId) or Czechia (register of VAT payers, published accounts, with the flag 'nespolehlivý plátce' / unreliable VAT payer). It shows whether the account is reported for this taxpayer; it does not prove who owns the account, and 'not registered' is a hint, not a judgement. Poland: the NIP and the account are sent to the ministry. Czechia: only the DIČ is sent to the register; the account is compared locally with the published list. - [verify_receipt](https://b2b.mdb-group.info/api/v1/verify_receipt): Checks whether a receipt from this service is genuine and unchanged, using MDB Group's published public keys (https://b2b.mdb-group.info/.well-known/mdb-receipt-keys.json). Pass the receipt object (or the whole tool result that contains it, or its JSON text). Optionally pass the result it belongs to, to confirm that the result was not changed either. Answers "valid" (genuine and unchanged) or "invalid" with a reason: UNKNOWN_KEY_ID, BAD_SIGNATURE, MALFORMED, RESULT_MISMATCH or MALFORMED_RESULT (the given result could not be read). "unavailable" (KEYS_NOT_CONFIGURED) means this server has no usable key right now and could not judge the receipt; that is not "invalid". A genuine receipt proves that this service delivered the result at that time, not that the official source said so (except the VIES consultation number). ## Rules for using results MDB B2B Check checks EU VAT IDs (27 member states plus XI for Northern Ireland) in VIES and Swiss UIDs in the Swiss UID register, live. Rules for presenting results: - "valid" and "invalid" come from the official register. "unavailable" means the source did not answer: never present it as invalid; suggest trying again later. - "format_error" means the number cannot exist as written; explain the message to the user. - If name/address are missing, repeat details_note (some countries, e.g. Germany and Spain, do not publish them). - Answer in this order: result in one sentence; who (name, address); how it was checked (how_checked.steps, briefly); source and time with the how_checked.check_yourself link; limits (details_note); offer record_text when the user wants to file the result. Keep it short; leave out a point that has nothing to say. - A consultation number (official proof of the check) is only issued when the user gives their own EU VAT ID as requester_vat_id. - Results are information only, not tax or legal advice. For a full check of a business partner (VAT ID, EORI customs number, Peppol e-invoicing, LEI and parent company) use check_business_partner. Peppol: "not listed" in the Peppol Directory is a hint, not proof (listing is voluntary); network.status "registered" with network.confirmed true (the provider's SMP lists business documents) means the company can receive Peppol documents, even if it is not listed; "registered" without confirmed is only an SML entry that the SMP does not confirm: do not say it can receive; "not_registered" only covers the identifiers looked up. LEI name matches are hints, not proof. An EORI check of a VAT ID that returns "invalid" only means no EORI number exists under that exact number (in e.g. Austria and Germany EORI numbers differ from VAT IDs); never say the company has no EORI number. No sanctions screening is offered. check_iban only tests format and check digits and can flag a country mismatch; it never proves account ownership. get_exchange_rate returns ECB reference rates. Signed receipts only on request: set with_receipt to true only when the user wants a signed record of the check for their files. The receipt is a signed record that this service delivered the result at that time, not that the official source said so. The VIES consultation number (requester_vat_id) is separate from this and is the official proof of a VIES check. verify_receipt checks a receipt. Bank details: use check_iban for one or several IBANs when no BIC is given; use check_payment_details when an IBAN comes together with a BIC (bic is required there). Pass the partner's country or VAT ID as partner (not vat_id or country); without it the account country is not compared, and the result says so. check_payment_details checks format, country and the bank behind the BIC per GLEIF; always say that account ownership was not checked, and that a BIC not found in GLEIF is neutral. calculate_late_interest gives the statutory minimum for B2B late payment (euro area: ECB rate + 8 points and 40 EUR; Sweden, Denmark, Poland, Czechia: national reference rate + 8 or 10 points and the national fixed compensation, in the national currency; Switzerland: 5 %); always mention that contracts and national laws can differ, and repeat the assumptions in details_note. validate_tax_id_format checks the format of tax and company numbers in many countries outside the EU; a pass means "only the format was checked", never that the number is registered. ## Signed receipts Only on request: add "with_receipt": true to the arguments of any tool except verify_receipt, and only when a signed record is wanted for the files. Without it the answer has no receipt. If no receipt can be issued, receipt_note says why. The VIES consultation number (requester_vat_id) is separate and is the official proof of a VIES check. This receipt attests that MDB Group's service MDB B2B Check delivered this result at the stated time. It does not attest that the official source said so. Exception: a VIES consultation number is issued by the European Commission's VIES itself and is official proof of that VIES check. Signed bytes: RFC 8785 (JCS) of the receipt without the field "signature", UTF-8; Ed25519 (RFC 8032); signature base64url without padding. Check a receipt with the verify_receipt tool or with the public keys. ## Contact MDB Group s.r.o., apps@mdb-group.info, https://mdb-group.info/privacy.html, https://mdb-group.info/terms.html