> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VAT Registration

> Check whether a VAT number is registered for cross-border trade in an EU member state or Northern Ireland.

Check whether a VAT number is registered today for cross-border trade in an EU member state or Northern Ireland. Give `country`, the two-letter code the source uses (`EL` for Greece, `XI` for Northern Ireland), and `vat_number`; spaces, dots and dashes are removed, and a leading country code equal to `country` is removed. `registered` is true when the number is registered and false when the source says it is not. The registered name and address come back where the member state gives them; some confirm a number and withhold both, which is `null` here. `checked_at` is when the source made the check. A number that is not registered is a completed result. When a member state's own service does not answer or is too busy, the call fails and is never reported as not registered. It confirms registration, not who owns or controls the company.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

<ParamField body="country" type="string" required>
  Two-letter code the source uses: the 27 EU member states (EL for Greece) or XI for Northern Ireland. One of `AT`, `BE`, `BG`, `CY`, `CZ`, `DE`, `DK`, `EE`, `EL`, `ES`, `FI`, `FR`, `HR`, `HU`, `IE`, `IT`, `LT`, `LU`, `LV`, `MT`, `NL`, `PL`, `PT`, `RO`, `SE`, `SI`, `SK`, `XI`.
</ParamField>

<ParamField body="vat_number" type="string" required>
  The VAT number, 2 to 14 letters and digits once spaces, dots and dashes are removed; a leading country code equal to country is removed. 2 to 40 characters. letters, digits, spaces, dots and dashes only.
</ParamField>

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

<ResponseField name="data.request_id" type="string">
  Durable job ID for audit and lookup
</ResponseField>

<ResponseField name="data.status" type="string">
  Job status: `completed`
</ResponseField>

<ResponseField name="data.tool" type="string">
  Always `company_vat_registration`
</ResponseField>

<ResponseField name="data.result" type="object">
  The answer, described under Result below
</ResponseField>

<ResponseField name="data.evidence" type="object">
  Where the answer came from and when
</ResponseField>

<ResponseField name="data.evidence.source" type="string">
  The public body the data comes from. Always `European Commission`.
</ResponseField>

<ResponseField name="data.evidence.source_kind" type="string">
  `public` when the data comes from a public body, `commercial` otherwise
</ResponseField>

<ResponseField name="data.evidence.retrieved_at" type="string">
  When the lookup was made, as an ISO 8601 UTC time
</ResponseField>

<ResponseField name="data.evidence.as_of" type="string">
  When the source says the fact was last updated, or `null` when the source gives no date
</ResponseField>

## Result

Nested under `data.result`.

<ResponseField name="data.result.registered" type="boolean">
  True when the number is registered for cross-border trade; false when the source says it is not.
</ResponseField>

<ResponseField name="data.result.country" type="string">
  The country code that was checked.
</ResponseField>

<ResponseField name="data.result.vat_number" type="string">
  The number that was checked, without spaces, dots, dashes or the country code.
</ResponseField>

<ResponseField name="data.result.name" type="string">
  The registered name, or null when the number is not registered or the member state withholds it.
</ResponseField>

<ResponseField name="data.result.address" type="string">
  The registered address, or null when the number is not registered or the member state withholds it.
</ResponseField>

<ResponseField name="data.result.checked_at" type="string">
  When the source made the check, ISO 8601 UTC.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://win.oneshotagent.com/v1/tools/lookup/company-vat-registration \
    -H "Content-Type: application/json" \
    -H "payment-signature: <base64 x402 payment>" \
    -d '{
      "country": "IE",
      "vat_number": "6388047V"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/company-vat-registration", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "payment-signature": paymentProof,
    },
    body: JSON.stringify({
      "country": "IE",
      "vat_number": "6388047V"
    }),
  });
  ```

  ```typescript SDK theme={null}
  const result = await agent.tool('lookup/company-vat-registration', {
    country: 'IE',
    vat_number: '6388047V'
  });
  console.log(result.data.result);
  console.log(result.data.evidence);
  ```
</RequestExample>

<ResponseExample>
  ```json Response (200) theme={null}
  {
    "success": true,
    "data": {
      "request_id": "uuid",
      "receipt_id": "rcpt_...",
      "status": "completed",
      "tool": "company_vat_registration",
      "result": {
        "registered": true,
        "country": "IE",
        "vat_number": "6388047V",
        "name": "GOOGLE IRELAND LIMITED",
        "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
        "checked_at": "2026-10-13T14:24:09.159Z"
      },
      "evidence": {
        "source": "European Commission",
        "source_kind": "public",
        "retrieved_at": "2026-10-13T14:24:10.000Z",
        "as_of": "2026-10-13T14:24:09.159Z"
      }
    }
  }
  ```
</ResponseExample>

<Info>Price: \$0.005 per lookup. See [Pricing](/pricing) for every tool.</Info>

## Notes

* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.