Skip to content
Eden Engine

Invoice Validator: VAT Fields, Line-Item Math & EU Compliance Check

omnial/x402-invoice-validate

Given an invoice's VAT numbers, amounts, and line items (plus optional fields like invoice number, date, and vendor/buyer name and address), checks the line-item math and that the fields required for EU compliance are present, returning a pass/fail verdict with itemized errors for missing required fields and warnings for missing recommended ones. The tax-total comparison did not compute in testing (expected tax and difference came back null with the check passing), so do not rely on it to catch a wrong tax amount. Your input is sent to an outside service for processing; remove secrets and personal data first.

activeper callv4

Price

Up to $0.0325 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

Eden Engine

Computed by Eden Engine from the inputs you provide.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/x402-invoice-validate" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/x402-invoice-validate" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/x402-invoice-validate", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/x402-invoice-validate", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0325
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "vendor_vat",
    "buyer_vat",
    "amounts",
    "line_items"
  ],
  "properties": {
    "amounts": {
      "type": "object",
      "description": "Invoice totals, e.g. { subtotal, tax_amount, total }."
    },
    "currency": {
      "type": "string",
      "description": "Invoice currency code, e.g. \"EUR\". Recommended for full EU compliance validation."
    },
    "due_date": {
      "type": "string",
      "description": "Payment due date (ISO 8601). Recommended for full EU compliance validation."
    },
    "buyer_vat": {
      "type": "string",
      "description": "Buyer's VAT identification number, e.g. \"FR12345678901\"."
    },
    "buyer_name": {
      "type": "string",
      "description": "Buyer's legal name. Recommended for full EU compliance validation."
    },
    "line_items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Invoice line items, each with quantity, unit_price, tax_rate, line_total."
    },
    "vendor_vat": {
      "type": "string",
      "description": "Vendor's VAT identification number, e.g. \"DE123456789\"."
    },
    "vendor_name": {
      "type": "string",
      "description": "Vendor's legal name. Required for full EU compliance validation."
    },
    "invoice_date": {
      "type": "string",
      "description": "Invoice issue date (ISO 8601). Required for full EU compliance validation."
    },
    "buyer_address": {
      "type": "string",
      "description": "Buyer's address. Recommended for full EU compliance validation."
    },
    "invoice_number": {
      "type": "string",
      "description": "Invoice number. Required for full EU compliance validation."
    },
    "vendor_address": {
      "type": "string",
      "description": "Vendor's address. Required for full EU compliance validation."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "valid": {
      "type": "boolean",
      "description": "Overall pass/fail verdict. False if any hard error was found."
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The invoice field the error refers to."
          },
          "issue": {
            "type": "string",
            "description": "Human-readable description of the problem."
          }
        },
        "additionalProperties": true
      },
      "description": "Hard failures (missing required fields, e.g. invoice_number/invoice_date/vendor_name/vendor_address, or failed checks). Empty array, not omitted, when there are none."
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The invoice field the warning refers to."
          },
          "issue": {
            "type": "string",
            "description": "Human-readable description of the problem."
          }
        },
        "additionalProperties": true
      },
      "description": "Soft issues (missing recommended fields, e.g. buyer_name/buyer_address/due_date/currency) that do not affect `valid` but do affect `eu_compliant`. Empty array, not omitted, when there are none."
    },
    "eu_compliant": {
      "type": "boolean",
      "description": "True only when every recommended field is also present (no warnings) -- observed false on the partial invoice (4 warnings, 4 errors, `valid: false`) and true on the complete one (0 warnings, 0 errors, `valid: true`); both invoices had identical, passing `tax_calculation_check`/`line_items_check` results, so `eu_compliant` here is driven by field completeness, not by the math checks."
    },
    "line_items_check": {
      "type": "object",
      "properties": {
        "failed": {
          "type": "number"
        },
        "passed": {
          "type": "number"
        },
        "total_checked": {
          "type": "number",
          "description": "Number of line items checked."
        }
      },
      "description": "Result of checking each line item's quantity * unit_price = line_total math.",
      "additionalProperties": true
    },
    "tax_calculation_check": {
      "type": "object",
      "properties": {
        "pass": {
          "type": "boolean"
        },
        "actual_tax": {
          "type": "number",
          "description": "The invoice's own reported `amounts.tax_amount`, echoed back."
        },
        "difference": {
          "type": [
            "number",
            "null"
          ],
          "description": "Usually `null`, tracking `expected_tax`'s null-ness above."
        },
        "expected_tax": {
          "type": [
            "number",
            "null"
          ],
          "description": "Usually `null` (e.g. for invoices with a single flat tax_rate line item) -- may only populate when the endpoint can independently recompute an expected tax figure from the line items; unconfirmed when non-null."
        }
      },
      "description": "Result of checking the invoice's reported tax amount.",
      "additionalProperties": true
    }
  },
  "description": "The validation result.",
  "additionalProperties": true
}