mirrored listing x402 eip155:8453

LIVE EU VAT number validation against VIES, the European Commission's official service — n

LIVE EU VAT number validation against VIES, the European Commission's official service — not a format check: the number is verified in the member state's actual register, returning the registered trader name and address where published. Covers all 27 member states plus Northern Ireland (XI). Essential before B2B invoicing with reverse charge.

Do you run agentbit.app? This listing was mirrored from Coinbase's public Bazaar. Claim it in 30 seconds — no account required — and it becomes verified, permanently overriding the mirrored copy.

Claim this listing
20000 (raw units)
price
1
calls / 30d
1
unique payers
2026-09-06
updated

Provider

agentbit.app · discovered, not yet claimed by its owner

Payment (x402 accepts[])

[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "payTo": "0x4395C7e383b7e05665aad7f36ed77c01923Dd965",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "20000",
    "maxTimeoutSeconds": 300
  }
]

Output schema

{
  "bazaar": {
    "info": {
      "description": "Live EU VAT validation for invoicing, onboarding and compliance workflows. The number is checked against VIES — the European Commission's official cross-border VAT information exchange system — which queries the member state's real register: a valid answer means the trader is registered for intra-EU transactions RIGHT NOW, and where the member state publishes them you also get the registered trader name and address to match against what your counterparty claimed. Accepts the number in any common shape ('RO12345678', 'ro 123-456.78', or country and number as separate fields); Greece's EL prefix and Northern Ireland's XI are handled. Member-state outages (a VIES reality) are reported as retryable errors, never as false negatives, and an invalid answer explains that some states have domestic-only registrations that VIES does not cover. Reverse-charge B2B invoicing inside the EU requires exactly this check — agents issuing invoices should run it before every new counterparty.",
      "errors": [
        {
          "code": "PAYMENT_REQUIRED",
          "description": "Missing or invalid payment — retry with a valid PAYMENT-SIGNATURE header",
          "retryable": true,
          "status": 402
        },
        {
          "code": "VALIDATION_ERROR",
          "description": "Request body does not match the input schema",
          "retryable": false,
          "status": 422
        },
        {
          "code": "RATE_LIMITED",
          "description": "Too many requests from this client",
          "retryable": true,
          "status": 429
        },
        {
          "code": "UPSTREAM_TIMEOUT",
          "description": "Upstream data source unavailable — safe to retry",
          "retryable": true,
          "status": 502
        }
      ],
      "input": {
        "body": {
          "vat_number": "RO14399840"
        },
        "bodyType": "json",
        "method": "POST",
        "type": "http"
      },
      "networks": [
        "eip155:8453"
      ],
      "output": {
        "example": {
          "checked_at": "2026-09-06T12:00:00Z",
          "country": "RO",
          "full_vat_number": "RO14399840",
          "note": "Number is registered for cross-border EU transactions.",
          "source": "VIES (European Commission, official)",
          "trader_address": "STR. EXEMPLU 1, CLUJ-NAPOCA",
          "trader_name": "EXAMPLE SRL",
          "valid": true,
          "vat_number": "14399840"
        },
        "type": "json"
      },
      "pricing": {
        "amount": 0.02,
        "currency": "USDC",
        "firstCallFree": true,
        "model": "per-call",
        "quoteHint": "Send your wallet address in an X-BUYER-WALLET header on the unpaid request to receive your personalized (volume-discounted) quote.",
        "volumeDiscounts": [
          {
            "minCalls30d": 100,
            "percent": 10
          },
          {
            "minCalls30d": 1000,
            "percent": 20
          }
        ]
      },
      "reliability": {
        "measuredAt": "2026-09-06T13:16:41+00:00",
        "p50LatencyMs": 406,
        "p95LatencyMs": 406,
        "sampleSize": 1,
        "successRatePercent": 100,
        "windowDays": 30
      }
    },
    "schema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "description": {
          "type": "string"
        },
        "errors": {
          "items": {
            "properties": {
              "code": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "status": {
                "type": "integer"
              }
            },
            "required": [
              "status",
              "code"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "input": {
          "additionalProperties": false,
          "properties": {
            "body": {
              "description": "EU VAT Validation input. LIVE EU VAT number validation against VIES, the European Commission's official service — not a format check: the number is verified in the member state's actual register, returning the registered trader name and address where published. Covers all 27 member states plus Northern Ireland (XI). Essential before B2B invoicing with reverse charge.",
              "properties": {
                "country": {
                  "description": "Two-letter member state code if not included in vat_number (EL for Greece, XI for Northern Ireland)",
                  "type": "string"
                },
                "vat_number": {
                  "description": "VAT number, with or without the country prefix, e.g. RO12345678",
                  "type": "string"
                }
              },
              "required": [
                "vat_number"
              ],
              "type": "object"
            },
            "bodyType": {
              "enum": [
                "json",
                "form-data",
                "text"
              ],
              "type": "string"
            },
            "headers": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "method": {
              "enum": [
                "POST",
                "PUT",
                "PATCH"
              ],
              "type": "string"
            },
            "queryParams": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "type": {
              "const": "http",
              "type": "string"
            }
          },
          "required": [
            "type",
            "method",
            "bodyType",
            "body"
          ],
          "type": "object"
        },
        "networks": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "output": {
          "properties": {
            "example": {
              "type": "object"
            },
            "type": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        "pricing": {
          "properties": {
            "amount": {
              "type": [
                "number",
                "null"
              ]
            },
            "currency": {
              "type": "string"
            },
            "firstCallFree": {
              "type": "boolean"
            },
            "maxAmount": {
              "type": "number"
            },
            "model": {
              "type": "string"
            },
            "quoteHint": {
              "type": "string"
            },
            "volumeDiscounts": {
              "items": {
                "properties": {
                  "minCalls30d": {
                    "type": "integer"
                  },
                  "percent": {
                    "type": "number"
                  }
                },
                "required": [
                  "minCalls30d",
                  "percent"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "reliability": {
          "properties": {
            "measuredAt": {
              "type": "string"
            },
            "p50LatencyMs": {
              "type": [
                "integer",
                "null"
              ]
            },
            "p95LatencyMs": {
              "type": [
                "integer",
                "null"
              ]
            },
            "sampleSize": {
              "type": "integer"
            },
            "successRatePercent": {
              "type": "number"
            },
            "windowDays": {
              "type": "integer"
            }
          },
          "required": [
            "successRatePercent",
            "sampleSize",
            "windowDays"
          ],
          "type": "object"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}

Use it

curl

curl "https://agentbit.app/v1/compliance/vat"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid

JavaScript

const res = await fetch("https://agentbit.app/v1/compliance/vat");
if (res.status === 402) {
  const { accepts } = await res.json();
  // pay one of accepts[] via an x402 client, then retry with the payment header
}

Python

import httpx
res = httpx.get("https://agentbit.app/v1/compliance/vat")
if res.status_code == 402:
    accepts = res.json()["accepts"]
    # pay one of accepts[] via an x402 client, then retry with the payment header

Machine-readable

Everything on this page is also available as clean JSON at /resources/10990.json, and this resource appears in /discovery/resources and /discovery/search.