Read receipts, invoices and your own documents into data you can check

Describe the fields you need, send a photo or a PDF, and get JSON back. Values come with where they were printed, how sure ReceViz is, and which checks they passed, so your code knows what to trust and what to show a person.

A card terminal receipt with the values ReceViz read highlightedBLUE DHOW CAFE. DUBAI MARINA WALK. TID: 12345678. MID: 200300400500. DATE: 26/09/2026. TIME: 14:05. BATCH NO: 000045. INVOICE NO: 000102. RRN: 626914123456. AUTH CODE: A1B2C3. VISA. ************4242. SALE. AMOUNT. AED 150.00. APPROVED. CARDHOLDER COPY. Each value in the JSON beside it is highlighted where it was printed.BLUE DHOW CAFEDUBAI MARINA WALKTID: 12345678MID: 200300400500DATE: 26/09/2026TIME: 14:05BATCH NO: 000045INVOICE NO: 000102RRN: 626914123456AUTH CODE: A1B2C3VISA************4242SALEAMOUNTAED 150.00APPROVEDCARDHOLDER COPY
POST /v1/extractions200application/json, trimmed
{
"id": "rv_req_8fK2aQ0zT3mN1pL5vB7xY9",
"status": "succeeded",
"document_type": "payment_receipt",
"mode": "standard",
"data": {
"currency": "AED",
"payment_method": "card",
},
"fields": {
"amount": {
"value": 150,
"type": "currency",
"status": "ok",
"confidence": 0.906,
"verified": false,
"source": "rules",
"page": 1,
"bounding_box": { "x": 0.77, "y": 0.7136, "width": 0.18, "height": 0.05 },
"raw_text": "AED 150.00"
}
},
"review": {
"required": false,
"reasons": []
}
}
The highlights are the bounding boxes the API returned for this receipt, and the values are what it read. Point at a value, or move to it with the keyboard, to see its evidence.

How it works

  1. Define the fields

    Start from a receipt or invoice template, or write your own document type: each field's type, the labels it is printed under, and the checks it must pass. Publish it as a version.

    {
      "key": "amount",
      "type": "currency",
      "required": true,
      "semantic": "total_amount",
      "aliases": ["TOTAL", "AMOUNT DUE"],
      "confidence_threshold": 0.8
    }
  2. Send a document

    A photo, a PDF, or the text your app already read on the device, to one endpoint. Small documents come back in the same response; large ones by polling or a signed webhook.

    curl "$RECEVIZ_API/extractions" \
      -H "Authorization: Bearer $RECEVIZ_SECRET_KEY" \
      -F "file=@receipt.jpg" \
      -F "document_type=payment_receipt"
  3. Get checked data

    The values, shaped like your document type and ready to store; the evidence for each one; and a clear answer to whether a person should look before you use them.

    "review": {
      "required": false,
      "reasons": []
    }

What makes it different

The evidence behind each value

Values come back with the page, the box and the printed text they were read from, a confidence from 0 to 1, and the checks they passed. Whoever reviews a result sees what the machine saw.

What each value comes with

Checks first, a second reader when you ask

Patterns, ranges, dates and the document's own sums are checked on every standard request. VERIFIED mode adds a language model that re-reads only the uncertain fields; its answer must be printed on the lines it cites, and a disagreement is reported for review, never applied silently.

How confidence and verification work

Long receipts keep their small print

Adaptive Document Tiling reads a long receipt or a large scan in overlapping regions at full resolution, then puts the lines back together in the page's coordinates, each line once.

How Adaptive Document Tiling works

Capture that keeps frames on the device

The Web SDK finds the document in the camera view, waits for a sharp, still, well-lit moment and takes one picture. Frames are analysed in the page and never uploaded; only the picture your code sends is. The iOS and Android SDKs, built the same way, are in development.

Read about the Web SDK

Privacy you set, per organization

Four settings decide what ReceViz keeps and where document text may go. An application can only make its organization's settings stricter. They are controls, not a certificate: the documentation says exactly what each one does, so you can judge how they fit your obligations.

What is stored, and for how long

Result retention
Results are kept for 30 days or 24 hours, or handed over once and not kept. The uploaded file is never kept once it has been read.
Evidence
Return the printed text and its position with each value, the position only, or the values alone.
Language models
Allow document text to reach a language model, or keep it away. With them off, VERIFIED mode is refused rather than quietly weakened.
Quality telemetry
Record nothing; record per-field agreement that never holds a value or a line of text; or also keep the text of a misread, only when a request explicitly shares it.

Try it on your own documents

ReceViz reviews every request for access. Once your organization is approved, you create keys and document types in the console and try them in its Playground before writing any code.