{"uid":"cap_MgmXeSwY5907fzeawXqDl","slug":"netintel-dev-invoice-extractor-448e39df","name":"netintel.dev Invoice Extractor","description":"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.","url":"https://netintel.dev/extract/invoice","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","properties":{"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."},"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."}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"grade":{"type":"string","description":"Letter grade A-F"},"score":{"type":"number","description":"Quality score 0-100"},"cached":{"type":"boolean","description":"True if served from the in-memory cache."},"source":{"type":"object","properties":{"url":{"type":["string","null"]},"type":{"type":"string"},"content_type":{"type":["string","null"]}},"description":"Where the invoice content came from. type is \"text\" or \"url\"; url and content_type (pdf | html | text) are null in text mode."},"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."},"findings":{"type":"array","items":{"type":"string"},"description":"Informational findings (e.g. no_total_found, totals_mismatch)."},"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."}}}}}}},"responseSchema":{"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}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_PdsNm5LFacNlIv6aJ3bhg","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Extracts and validates structured invoice data (vendor, line items, totals, dates) from invoice documents, returning a graded JSON result with reconciliation check","exampleAgentPrompt":"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?","exampleUseCases":null,"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-13T12:46:09.972Z","isFirstParty":false}