# netintel.dev Invoice Extractor

> netintel.dev Invoice Extractor is a paid API for AI agents from netintel.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-09-13).

Extracts and validates structured invoice data (vendor, line items, totals, dates) from invoice documents, returning a graded JSON result with reconciliation check

## Facts

- Endpoint: POST https://netintel.dev/extract/invoice
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-dev-invoice-extractor-448e39df
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_MgmXeSwY5907fzeawXqDl

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 netintel-dev-invoice-extractor-448e39df -d '<json body>'
```

Example prompt: Can you extract all the structured data from this invoice — vendor name, invoice number, line items, subtotal, tax, and total — and tell me whether the totals reconcile correctly?

## When to prefer this

Use this endpoint when you need to programmatically extract structured fields from invoice documents, especially when you also need automatic validation that line items and totals are consistent. Prefer this over generic OCR when you want a graded quality score and reconciliation check built in, and when you are comfortable with pay-per-call micropayment pricing via x402.

## Known failure modes

- Invalid or unreadable document — returns parsing error or low grade with findings
- Document is not an invoice — model may return empty fields or low score
- Network or payment failure — 402 payment required if USDC payment not attached
- Malformed request body — returns 400 bad request
- Invoice totals do not reconcile — captured in findings array with totals_reconcile=false

## How this service works

Extract structured data from invoice or receipt text — or directly from an invoice URL (PDF, HTML, or plain text, fetched and parsed server-side) — using Claude Haiku: returns vendor, invoice number, dates, line items, subtotal, tax, total, and currency as clean JSON for accounts-payable, expense processing, and bookkeeping automation.

## Output

A JSON object containing a letter grade (e.g. 'A') and numeric score (0-100), the full invoice fields (vendor, invoice number, invoice date, due date, currency, subtotal, tax, total), an array of line items (description, quantity, unit price, amount), a boolean indicating whether totals reconcile, line item count, a findings array of anomalies or issues, and a cached flag.

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "enum": [
      "POST"
     ]
    },
    "bodyType": {
     "type": "string",
     "enum": [
      "json",
      "form-data",
      "text"
     ]
    },
    "body": {
     "type": "object",
     "properties": {
      "text": {
       "type": "string",
       "description": "The invoice or receipt content ITSELF (email body, OCR dump, pasted PDF text) — not an instruction or question about an invoice. Have only a link? Pass url instead. Text with no extractable invoice data returns an uncharged 400 (NO_INVOICE_CONTENT). Max 10000 words or 50KB."
      },
      "url": {
       "type": "string",
       "description": "Publicly reachable invoice URL — PDF, HTML, or plain text; fetched and parsed server-side (e.g. https://vendor.example/invoice-42.pdf). Provide exactly one of text or url."
      }
     }
    }
   },
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "invoice": {
       "type": "object",
       "description": "Parsed invoice fields: vendor, invoice_number, invoice_date, due_date, line_items (array of {description, quantity, unit_price, amount}), subtotal, tax, total, currency. Missing fields are null."
      },
      "line_item_count": {
       "type": "number",
       "description": "Number of line items extracted."
      },
      "totals_reconcile": {
       "type": [
        "boolean",
        "null"
       ],
       "description": "True if sum(line_items.amount) + tax ≈ total (within $0.02). False if they do not reconcile. Null if total or subtotal is missing."
      },
      "cached": {
       "type": "boolean",
       "description": "True if served from the in-memory cache."
      },
      "score": {
       "type": "number",
       "description": "Quality score 0-100"
      },
      "grade": {
       "type": "string",
       "description": "Letter grade A-F"
      },
      "findings": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "description": "Informational findings (e.g. no_total_found, totals_mismatch)."
      },
     
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "grade": "A",
  "score": 100,
  "cached": false,
  "source": {
   "url": null,
   "type": "text",
   "content_type": null
  },
  "invoice": {
   "tax": 5.58,
   "total": 67.58,
   "vendor": "Acme Supplies Inc",
   "currency": "USD",
   "due_date": "2024-03-31",
   "subtotal": 62,
   "line_items": [
    {
     "amount": 50,
     "quantity": 10,
     "unit_price": 5,
     "description": "Widget A"
    },
    {
     "amount": 12,
     "quantity": 1,
     "unit_price": 12,
     "description": "Shipping"
    }
   ],
   "invoice_date": "2024-03-01",
   "invoice_number": "INV-2024-0142"
  },
  "findings": [],
  "line_item_count": 2,
  "totals_reconcile": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-dev-invoice-extractor-448e39df/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel.dev](https://www.zero.xyz/host/netintel.dev/llms.txt)
