Invoice & Payment ID Validator

dev.workers.mohamed-bahaa53000.invoice-validatorPublished by invoice-validator.mohamed-bahaa53000.workers.devOfficial publisherv1.2.1Updated Oct 26, 2026

Pay/review/hold verdict for invoice payees: cross-checks IBAN, BIC, VAT, EIN. Paid: RapidAPI

VerifiedStreamable HTTPWeb executableFinanceBusiness & Commerce

Overview

AI-generated overview

Remote MCP server that validates invoice payee bank and tax IDs and returns a pay, review or hold verdict before a supplier is paid.

What you can do
  • Get a pay/review/hold verdict with risk score and reasons for an invoice payee, cross-checking IBAN, BIC, VAT and EIN against each other and the supplier's country
  • Validate IBANs (mod-97 checksum, country length, SEPA membership) and BIC/SWIFT codes, including BIC-versus-IBAN country matching
  • Validate EU VAT IDs offline, optionally querying the EU VIES registry for registration status, name and address
  • Validate UK VAT numbers and US EINs for format and checksum or prefix
  • Batch-validate many identifiers in one call on the paid endpoint only
When to use it
For accounts-payable and finance workflows where an assistant checks supplier bank and tax details before a payment run, catches changed-bank-details fraud patterns, or verifies VAT registration during vendor onboarding.
Requirements
A remote Streamable HTTP endpoint; nothing to install locally. The free demo endpoint needs no key but is limited to 10 tool calls per IP per UTC day. The paid RapidAPI endpoint requires the X-RapidAPI-Key and X-RapidAPI-Host headers; a free Basic plan and a paid Pro plan exist. Clients that only support stdio can bridge via npx mcp-remote.
Before you install
The RapidAPI endpoint needs the X-RapidAPI-Key secret header and is billed per request beyond the free plan; an x402 option charges per call from a USDC wallet. Validation only checks format and checksums and does not prove an account belongs to a company. With live=true, VAT IDs are sent to the EU VIES registry. Inputs may appear in standard request logs.

Installation

In SourceWeft

  1. Open Invoice & Payment ID Validator in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.workers.mohamed-bahaa53000.invoice-validator%2Finvoice-payment-id-validator/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "invoice-payment-id-validator": {
      "type": "http",
      "url": "https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcp"
    }
  }
}

README

Invoice & Payment ID Validator — remote MCP server

For accounts-payable and finance teams: before you pay an invoice, get a pay, review or hold verdict on the supplier's bank and tax details.

1. Connect (free, no key; works in Claude Desktop, Cursor, Cline, VS Code and any client that supports remote Streamable HTTP):

json
{  "mcpServers": {    "invoice-validator": {      "url": "https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcp"    }  }}

2. Ask: "Should I pay this Irish supplier's invoice? VAT IE6388047V, IBAN DE89370400440532013000, EUR." Your agent calls:

json
{"name":"check_invoice_payee","arguments":{"vat":"IE6388047V","iban":"DE89370400440532013000","supplier_country":"IE","currency":"EUR"}}

3. Get (real output from the free demo endpoint, trimmed):

json
{"verdict":"hold","risk_score":45, "summary":"Hold payment: Supplier is in IE but wants payment to a DE bank account: the classic changed-bank-details fraud pattern. Confirm by phone using a known number.", "reasons":[{"code":"iban_country_differs_from_supplier","severity":"high"}], "checks":{"iban":{"valid":true,"country":"DE","sepa":true},"vat":{"valid":true,"country":"IE"}}}

Both IDs are valid on their own. The mismatch between them is what triggers the hold.

What makes it different

Most IBAN/VAT APIs check each number on its own: "this IBAN is well-formed". That misses the real invoice-fraud signal, which is a mismatch between numbers that are each valid:

  • Changed bank details: your German supplier's invoice asks for payment to a Dutch or Lithuanian account. Every ID is valid; the verdict is hold.
  • BIC from a different country than the IBAN: the two don't belong to the same account.
  • VAT registered to someone else: with live=true, the VIES-registered company name is compared with the supplier name.
  • Unregistered VAT, test BICs, EUR invoices paid to non-SEPA accounts.

It is also MCP-native with a free, keyless demo endpoint, so an agent can try it in one config line. Single-ID validators are included too.

No-code version

Not building an agent? The same checks come in ready-made tools:

Try it free

  • No key, right now: point any MCP client at https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcp (10 tool calls per IP per day).
  • Free RapidAPI plan: 100 requests/month on the Basic plan, no card needed. Pro is $10 for 10,000.
  • Pay per call, no account (x402): agents with a USDC wallet on Base can pay $0.01 per call at https://invoice-validator.mohamed-bahaa53000.workers.dev/x402/v1/payee-check (also /x402/v1/iban, /bic, /vat/eu, /vat/gb, /ein). GET /x402 shows the terms; an unpaid call returns HTTP 402 with the payment requirements.

This is a hosted (remote) MCP server using Streamable HTTP. There is nothing to install or run locally, and this repository holds documentation and the MCP Registry manifest only. The server code is not open source.

EndpointAuthLimits
https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcpnonefree, 10 tool calls per IP per UTC day, no batch
https://invoice-payment-id-validator.p.rapidapi.com/mcpX-RapidAPI-Key + X-RapidAPI-Host headerspaid per request via RapidAPI (free Basic plan available)

Official MCP Registry name: dev.workers.mohamed-bahaa53000.invoice-validator/invoice-payment-id-validator

Tools

  • check_invoice_payee: pay / review / hold verdict, risk score, reasons, and per-ID results. Inputs (all optional, at least one ID): iban, bic, vat, ein, supplier_country, supplier_name, currency, live.
  • validate_iban: mod-97 checksum, length for its country (100+ countries), SEPA membership; returns normalized/formatted IBAN, country, BBAN, bank/branch/account parts where known, or machine-readable error codes.
  • validate_bic: BIC/SWIFT structure (8 or 11 chars), ISO country, test-BIC flag; pass iban to check the BIC country matches the IBAN country.
  • validate_eu_vat: EU VAT ID (27 member states + XI) format and check digit offline; live=true also queries EU VIES for registration status, name and address (VIES failures return vies.checked=false, never a false "invalid").
  • validate_gb_vat: UK VAT number format, types and HMRC mod-97 / 9755 checksum.
  • validate_ein: US EIN 9-digit format and valid IRS campus prefix (EINs have no check digit, so this catches typos and fake prefixes, not every invalid number).
  • validate_batch: many identifiers in one call (paid endpoint only).

Use cases

  • Accounts-payable agents: run check_invoice_payee on every invoice and only auto-pay pay verdicts.
  • Accounts-payable agents: verify supplier IBAN/BIC and VAT IDs before approving a payment run.
  • Catch IBAN typos and BIC/IBAN country mismatches (a common fraud signal).
  • Vendor onboarding: confirm an EU VAT ID is registered in VIES.

Connect

Claude Desktop / Cursor / Cline / VS Code (any client that supports remote Streamable HTTP servers):

json
{  "mcpServers": {    "invoice-validator": {      "url": "https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcp"    }  }}

Paid / production (RapidAPI):

json
{  "mcpServers": {    "invoice-validator": {      "url": "https://invoice-payment-id-validator.p.rapidapi.com/mcp",      "headers": {        "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",        "X-RapidAPI-Host": "invoice-payment-id-validator.p.rapidapi.com"      }    }  }}

For clients that only support stdio: npx -y mcp-remote https://invoice-validator.mohamed-bahaa53000.workers.dev/demo/mcp

Notes

  • Stateless. Inputs aren't stored beyond standard request logs.
  • Validation checks format and checksums (plus VIES when live=true). It doesn't prove an account belongs to a given company.
  • VIES has maintenance windows and per-country outages. When a live lookup fails you get vies.checked=false (and an info-level vies_unavailable flag in check_invoice_payee), never "invalid". Treat that as "not checked yet": keep the invoice on review and retry the lookup later (for example after 15 to 60 minutes) instead of rejecting it.
  • A valid IBAN can still belong to a fraudster. If a known vendor's bank details change, confirm the change by phoning them on a number you already had, not one printed on the new invoice.

Source: README.md at commit b7eee80

Tools

6

check_invoice_payee

Check an invoice payee (pay / review / hold)

One call before paying a supplier: validates the IBAN, BIC, VAT (EU or UK) and EIN on the invoice AND cross-checks them against each other and the supplier's country, then returns verdict pay / review / hold with plain-English reasons. Catches the changed-bank-details fraud pattern (e.g. a German supplier asking to be paid into a foreign account), BIC/IBAN country mismatches, unregistered VAT numbers, and (with live=true) a VIES-registered company name that doesn't match the supplier name. Pass whatever the invoice has; only one field is needed.

Parametersbiceinvatibanlivecurrencysupplier_namesupplier_country

validate_iban

Validate IBAN

Validate an International Bank Account Number: mod-97 checksum, length for its country (100+ countries), SEPA membership. Returns the normalized and formatted IBAN, country and BBAN, or machine-readable error codes. Use before paying an invoice or saving supplier bank details.

Parametersvaluerequired

validate_bic

Validate BIC / SWIFT

Validate a BIC/SWIFT code (8 or 11 chars): structure, ISO country, test-BIC flag. Pass the IBAN too and it checks that the BIC country matches the IBAN country (a common fraud/typo signal).

Parametersibanvaluerequired

validate_eu_vat

Validate EU VAT number

Validate an EU VAT ID (27 member states + XI): format and check digit offline. Set live=true to also query the EU VIES registry for registration status, company name and address (slower, may be throttled; failures return vies.checked=false, never a false 'invalid').

Parameterslivevaluerequired

validate_gb_vat

Validate UK VAT number

Validate a UK (GB) VAT registration number: format, branch/government/health-authority types, and the HMRC mod-97 / 9755 checksum.

Parametersvaluerequired

validate_ein

Validate US EIN

Validate a US Employer Identification Number: 9-digit format and a valid IRS campus prefix. EINs have no check digit, so this catches typos and fake prefixes, not every invalid number.

Parametersvaluerequired

Version history

3
  1. v1.2.1LatestOct 18, 2026
  2. v1.2.0Oct 18, 2026
  3. v1.1.0Oct 18, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.