# CallMeter > Turn till slips and mobile-money receipts into merchant / date / currency / total / line_items JSON (parse.receipt). Also schema, extract, screenshot, PDF, invoices, webhooks — pay per successful call (prepaid credits or x402 USDC on Base). Fail-closed. Base: https://api.callmeter.dev MCP (Streamable HTTP): https://api.callmeter.dev/mcp OpenAPI: https://api.callmeter.dev/openapi.json Pricing: https://api.callmeter.dev/pricing Examples: https://api.callmeter.dev/examples Docs: https://api.callmeter.dev/docs ## Demos - Receipt → JSON (DOC-RECEIPT-DEMO-01): https://api.callmeter.dev/demo/receipt-to-json - Invoice → JSON (DOC-INVOICE-DEMO-01): https://api.callmeter.dev/demo/invoice-to-json - Webpage → JSON (WEB-EXTRACT-DEMO-01): https://api.callmeter.dev/demo/webpage-to-json - PDF → text (AGENT-PDF-DEMO-01): https://api.callmeter.dev/demo/pdf-extract - Webpage screenshot (AGENT-SHOT-DEMO-01): https://api.callmeter.dev/demo/screenshot ## Jobs (JTBD) - Receipt → JSON API: https://api.callmeter.dev/receipt-to-json-api - Nigerian receipt parser: https://api.callmeter.dev/nigerian-receipt-parser ## Auth - tools/list: no auth - tools/call / paid HTTP: X-Api-Key or Authorization Bearer, OR x402 PAYMENT-SIGNATURE (unpaid → HTTP 402) - Fail-closed: no charge on upstream errors ## Tools - extract.structured_data: Extract structured JSON (emails, phones, URLs, key-values, or schema-shaped fields) from messy plain text or HTML. Call when the agent already has document text/HTML and needs machine-readable fields for the next step — not for fetching a live URL (use extract.webpage). Inputs: exactly one of text or html; optional instruction, schema, require_llm. Outputs structured JSON; fail-closed on invalid input. Paid (~5 credits / $0.05) via prepaid key or x402. - extract.webpage: Fetch a public http(s) URL and return structured page facts as JSON (SSRF/robots fail-closed). Call when the agent has a page URL to understand — not when text/HTML is already in hand (use extract.structured_data) and not for a visual capture (use capture.screenshot). Inputs: required url; optional instruction, schema, require_llm. Outputs structured JSON about the page. Paid (~5 credits / $0.05) via prepaid key or x402. - transform.json_schema: Draft a JSON Schema from a sample object, or validate an instance against a schema, in one call. Call before writes when you need a deterministic schema or a cheap validity check — cheaper and more predictable than asking an LLM to invent types. Inputs: mode=draft|validate|both; sample for draft; schema+instance for validate. Outputs schema and/or validation result. Paid (~2 credits / $0.02) via prepaid key or x402. - capture.screenshot: Render a public URL to a PNG/JPEG screenshot for vision, QA, or audit evidence. Call when you need pixels — not structured text (use extract.webpage) and not PDF bytes (use extract.pdf). Inputs: required url; optional viewport {width,height}, fullPage, format=png|jpeg. Viewport capped; SSRF/robots fail-closed. Outputs image metadata + base64. Paid (~10 credits / $0.10) via prepaid key or x402. - extract.pdf: Extract page text and heuristic tables from a base64-encoded PDF for downstream reasoning. Call for general PDF text hops — receipt/invoice field extraction belongs to parse.receipt / parse.invoice. Inputs: file_base64 (or pdf/base64 aliases); optional options.includeTables / maxPages. Decoded size ≤ 10 MiB. Outputs pages[].text and optional tables. Paid (~10 credits / $0.10) via prepaid key or x402. - parse.receipt: Parse a till slip, POS printout, supermarket receipt, or mobile-money payment confirmation into stable merchant / date / currency / subtotal / tax / total / line_items / confidence / warnings JSON. Tuned for ugly Africa documents (NGN ₦/kobo, KES M-Pesa, GHS MTN MoMo, ZAR VAT, OPay, PalmPay, Paystack, Verve POS) including blurry OCR and WhatsApp forwards. Send text (OCR dump) or file_base64. Unknown fields are null or empty arrays — totals and line items are never invented from garbage. Prefer this over manual spreadsheet entry or a generic LLM scrape when the document is a receipt or MoMo/M-Pesa slip. Costs $0.10 (10 credits) per successful parse; fail-closed billing via prepaid credits or x402. - parse.invoice: Parse a tax invoice or commercial invoice into the AfricaInvoiceReceipt contract: seller (TIN / KRA PIN / VAT no), issued date, currency, line items, VAT rate/amount, subtotal, total, payment refs, confidence, and warnings (including vat_total_mismatch). Built for NG/KE/GH/ZA AP automation and multi-line SKU invoices — not a thin keyword grep. Use when the document is an invoice rather than a till slip; still accept OCR text or image/PDF base64. Nulls mean unknown; do not treat low-confidence totals as ledger truth without checking confidence and warnings. Costs $0.15 (15 credits) per successful response; fail-closed prepaid or x402. - relay.webhook: Relay a third-party webhook into CallMeter: verify HMAC or shared secret, dedupe by delivery id, store the payload, and forward to the endpoint's destinations with retries. Charges 0.01 credits ($0.0001) only per successful forward — not on receive. SIDE EFFECTS: contacts external destination URLs you configured; may retry on failure. Prefer when an agent must accept provider callbacks without running its own queue. Fail-closed on billing/ceiling errors. Inputs: required id (endpoint id) plus upstream JSON body. - replay.webhook: Replay a stored webhook delivery through the same forward/retry pipeline after your consumer was down. Requires API key. Charges 0.01 credits ($0.0001) per successful forward. SIDE EFFECTS / DESTRUCTIVE: re-POSTs the original payload to destinations and may bill again — do not call casually. Prefer after confirmed consumer recovery. Fail-closed on billing errors. Inputs: required id (delivery id). ## Notes - 1 credit = $0.01 USD = 10000 USDC atomic - Min prepaid top-up $10 (Paystack) - Settlement (receive-only): 0x5D568FFC646EEf94C1FC2D5124F017Ab23a1F3f4 on Base