# Invoket VAT Treatment Checker

> Invoket VAT Treatment Checker is a paid API for AI agents from api.invoket.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Determines the applicable EU VAT treatment, rate, and optionally computed tax amount for a transaction on a specific date, based on official TEDB data.

## Facts

- Endpoint: POST https://api.invoket.com/invoice/vat-treatment
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/invoket-vat-treatment-checker-b5010627
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_hsAYB2DMcIwWEMXzz8Lwl

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability invoket-vat-treatment-checker-b5010627 -d '<json body>'
```

Example prompt: What's the VAT treatment for a B2B intra-EU dispatch of goods from Germany to France on 2024-11-01 for a business customer with valid VAT status — the taxable base is EUR 1200?

## When to prefer this

Use this endpoint when an AI agent needs to determine the legally correct EU VAT treatment before issuing an invoice, processing a payment, or filing a tax record. It is specifically suited for cross-border EU transactions where the supply kind, customer type, and VAT status interact under TEDB rules. Prefer this over generic tax APIs when you need official TEDB provenance, date-specific historical rates, or computed VAT amounts tied to a specific transaction context — not just a country's standard rate.

## Known failure modes

- Date before TEDB snapshot coverage → 400 error, not extrapolated
- Invalid or unrecognized supply_kind value → 400 with list of admitted values
- Inconsistent combination (e.g. services_b2b_general with customer_type=consumer) → paid 200 with undetermined status, not a guess
- Invalid ISO 4217 currency code (XXX/XTS or unknown) → 400
- Invalid or dual-bad country codes → 400 naming both issues
- Amount exceeding overflow threshold → 400, never a 5xx
- Unknown future date beyond snapshot → 400

## How this service works

The checks your agent runs before it acts: verify a bank account, a phone number, a law in force, the weather or a vehicle — computed from official sources, with provenance in every response. You only pay for answers.

## Output

Returns the VAT treatment applicable to the described transaction, including the rate in force on the requested date (sourced from the official TEDB snapshot), validity window for that rate, whether reverse charge or zero-rating applies, and — if an amount was supplied — the computed VAT and gross amounts. Every response includes provenance indicating the authoritative source.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "date",
  "amount",
  "currency",
  "supply_kind",
  "customer_type",
  "customer_country",
  "supplier_country",
  "transaction_type",
  "customer_vat_status"
 ],
 "properties": {
  "date": {
   "type": "string",
   "description": "Date VAT becomes chargeable (YYYY-MM-DD, and a real calendar date): the rate served is the one in force AT THAT DATE, each rate carrying its own validity in the committed TEDB snapshot. Earlier than the snapshot is a 400, never extrapolated"
  },
  "amount": {
   "type": "string",
   "description": "Optional taxable base (simple decimal string): supplying it triggers computed, and then currency (ISO 4217; XXX and XTS refused) is required. An overflowing amount is a 400, never a 5xx"
  },
  "currency": {
   "type": "string"
  },
  "supply_kind": {
   "type": "string",
   "description": "Closed enumeration, required: general (domestic), intra_eu_dispatch, export_outside_eu, import, services_b2b_general, services_b2c_general, services_land_related (then add property_country), services_electronic_b2c. A value outside the list is a 400 naming the admitted values - never a fallback to general"
  },
  "customer_type": {
   "type": "string"
  },
  "customer_country": {
   "type": "string"
  },
  "supplier_country": {
   "type": "string",
   "description": "Where the supplier is established, ISO 3166-1 alpha-2 (EL accepted for GR), required - as is customer_country (where the customer is established, or where the goods arrive). Both are checked together, so two bad codes are two issues in one 400. Territories outside the VAT territory of the Union that ISO can express (IC, EA, AX, French overseas departments) are third territories; Monaco is FR"
  },
  "transaction_type": {
   "type": "string",
   "description": "goods | services, required - as is customer_type (business | consumer). Both must be CONSISTENT with supply_kind: a services_b2b_general declared with a consumer customer is a motivated refusal (paid 200, undetermined), never a guess"
  },
  "customer_vat_status": {
   "type": "string",
   "description": "valid | invalid | unknown (default). DECLARED, never verified here: zero network by design. invalid and unknown are treated identically - the Directive does not distinguish them - and both make the intra-Community exemption (Art. 138(1)(b)) and the Art. 196 reverse charge fall away, the supply being taxed at the supplier's rate. Live check: GET /company/vat"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object"
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/invoket-vat-treatment-checker-b5010627/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.invoket.com](https://www.zero.xyz/host/api.invoket.com/llms.txt)
