# Handel Invoice Audit

> Handel Invoice Audit is a paid API for AI agents from handel.halowerk.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-14).

Validates an invoice by recomputing all line totals, discounts, tax groups, and grand totals from raw line data, then comparing each computed figure against the document's stated values.

## Facts

- Endpoint: POST https://handel.halowerk.com/v1/invoice-audit
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/handel-invoice-audit-1efacb27
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_a5UbaoK77ddhkhgTqx5NI

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 handel-invoice-audit-1efacb27 -d '<json body>'
```

Example prompt: Can you audit this invoice for me? It claims a net total of €1,240.00, tax of €235.60, and gross of €1,475.60 — here are the line items with quantities, unit prices, a 5% line discount, and a 3% document-level discount. Run the numbers and tell me if anything doesn't match.

## When to prefer this

Choose this endpoint when you need to arithmetically validate an invoice's internal consistency — recomputing every calculation from raw line data and checking it against stated totals. It is ideal for accounts-payable automation, pre-payment auditing, supplier invoice verification, and compliance checks. Prefer it over generic document parsers when you already have structured line-item data and need a trustworthy, deterministic math check rather than data extraction.

## Known failure modes

- Missing required line fields (quantity, unit price, or line total) cause validation to fail
- Ambiguous discount application order leads to comparison errors if not specified correctly
- Invoices with unsupported tax structures (e.g. compound taxes) may not be handled
- Malformed or non-numeric values in line items return an error
- Rounding convention mismatches between the invoice issuer and the audit engine may produce minor false positives

## How this service works

Rebuilds an invoice from its lines and compares the result with the stated totals. Line by line it checks quantity times unit price against the line total, applies line and document discounts in the right order, groups the net amounts by tax rate and computes the tax per group, then compares net, tax and gross with what the document claims.

## Output

A structured audit report breaking down each invoice line's recomputed total versus the stated value, grouping net amounts by tax rate with computed tax per group, and providing a final comparison of recomputed net, tax, and gross totals against the document's claims — including mismatch flags where figures diverge.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "lines": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "quantity",
     "unit_price"
    ],
    "properties": {
     "quantity": {
      "type": "number"
     },
     "tax_rate": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Tax rate in percent for this line."
     },
     "line_total": {
      "type": "number",
      "description": "The stated line total. Recomputed if absent."
     },
     "unit_price": {
      "type": "number"
     },
     "description": {
      "type": "string",
      "maxLength": 300
     },
     "discount_pct": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Discount on this line in percent."
     }
    },
    "additionalProperties": false
   },
   "maxItems": 500,
   "minItems": 1,
   "description": "The invoice lines."
  },
  "country": {
   "type": "string",
   "maxLength": 2,
   "minLength": 2,
   "description": "Country whose standard rates the tax rates are checked against."
  },
  "currency": {
   "type": "string",
   "default": "EUR",
   "maxLength": 3,
   "minLength": 3
  },
  "due_date": {
   "type": "string",
   "maxLength": 10,
   "description": "Due date as YYYY-MM-DD."
  },
  "stated_net": {
   "type": "number",
   "description": "Net total as stated on the invoice."
  },
  "stated_tax": {
   "type": "number",
   "description": "Tax total as stated."
  },
  "invoice_date": {
   "type": "string",
   "maxLength": 10,
   "description": "Invoice date as YYYY-MM-DD."
  },
  "stated_gross": {
   "type": "number",
   "description": "Gross total as stated."
  },
  "reverse_charge": {
   "type": "boolean",
   "default": false,
   "description": "Whether the invoice claims the reverse charge."
  },
  "default_tax_rate": {
   "type": "number",
   "maximum": 100,
   "minimum": 0,
   "description": "Tax rate for lines that do not carry one."
  },
  "customer_vat_number": {
   "type": "string",
   "maxLength": 20,
   "description": "Customer VAT number, required for the reverse charge."
  },
  "document_discount_pct": {
   "type": "number",
   "maximum": 100,
   "minimum": 0,
   "description": "Discount on the whole document, applied after line discounts."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/handel-invoice-audit-1efacb27/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from handel.halowerk.com](https://www.zero.xyz/host/handel.halowerk.com/llms.txt)
