Skip to the content

Quick start

Create a key, send a receipt and read the checked result.

On this page

You will create a test key, add a document type from a built-in template, send a photo of a card terminal receipt, and read what ReceViz returns. The console's Playground makes the same requests from your browser if you would rather try it there first.

Set up in the console#

You sign in to the console with an AccountHouse or Accmerio account; ReceViz has no separate sign-up.

ReceViz gives each organization its own applications, keys and document types. If your organization does not have access yet, request access for it; ReceViz reviews every request. If it already uses ReceViz, ask one of its owners or admins to add your email under Members: you are in the next time you sign in with that email. Once you are in, open the console and:

  1. Create an application with the environment development. Applications in development and test issue test keys (rv_test_…); only production applications issue live keys (rv_live_…).
  2. Add a document type from the Payment Terminal Receipt template and publish it (publishing needs the admin or owner role). Its key is payment_receipt. Extraction always uses a published version, never a draft.
  3. Create a secret key for the application. It is shown once: ReceViz keeps only a hash of it. Store it in your server's environment as RECEVIZ_SECRET_KEY.

A secret key belongs on your server

Never put it in a web page, a mobile app or a repository. Apps and pages use short-lived client tokens instead; see Authentication.

Send a document#

Send the photo to POST /v1/extractions as multipart form data, with the document type and a mode. standard reads the fields and runs every deterministic check.

RECEVIZ_API="https://accounthouse-backend-793493499887.me-central1.run.app/api/receviz/v1"

curl "$RECEVIZ_API/extractions" \
  -H "Authorization: Bearer $RECEVIZ_SECRET_KEY" \
  -F "file=@receipt.jpg" \
  -F "document_type=payment_receipt" \
  -F "mode=standard"

A photo or a short PDF is read while you wait, and the response is 200. A file over 10 MB or a PDF of more than three pages is queued instead and answered with 202; the Extractions guide shows how to collect it.

Read the result#

This is the response, trimmed to the parts that matter first:

json
{
  "id": "rv_req_8fK2aQ0zT3mN1pL5vB7xY9",
  "object": "extraction",
  "status": "succeeded",
  "document_type": "payment_receipt",
  "schema_version": 1,
  "mode": "standard",
  "data": {
    "amount": 150,
    "currency": "AED",
    "transaction_date": "2026-09-26",
    "transaction_time": "14:05",
    "receipt_number": "000102",
    "rrn": "626914123456",
    "auth_code": "A1B2C3",
    "terminal_id": "12345678",
    "payment_method": "card",
    "card_scheme": "visa",
    "card_last_four": "4242",
    "approved": true,
    "merchant": "BLUE DHOW CAFE",
    "merchant_address": "DUBAI MARINA WALK"
  },
  "fields": {
    "amount": {
      "value": 150,
      "type": "currency",
      "status": "ok",
      "confidence": 0.906,
      "verified": false,
      "checks": [],
      "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": []
  }
}
  • data holds the values alone, shaped exactly like the document type. It is what you store. A field that was not found is null, never left out.
  • fields holds each value with its evidence: its status, a confidence from 0 to 1, what checked it, the page, the box it was printed in (fractions of the page from the top-left corner) and the printed text itself.
  • review.required is true when a person should look, and review.reasons says which field and why. Accept a result automatically only when it is false.

The id is also the request id: it is in the X-Request-Id header, in the console's request log and in any webhook about this extraction.

Where to go next#