Flovvyfor business
Flovvy Receipts API · for businesses

Receipts in.
Every line out.

Send a photo of a receipt and get back clean JSON: merchant, date, totals and every product line — quantity, weight, price per kg. Plus a check that tells you when the lines add up to the printed total.

Data stays in the EU Usually 4⁠–⁠7 seconds 1 credit per receipt
Photo of a supermarket receipt from Aurora Market: eight lines, bananas and parmesan sold by weight, a discount, total 21.50 euro.
{
  "status": "completed",
  "merchant": {
    "name": "AURORA MARKET",
    "country": "IT" },
  "category": "groceries",
  "issued_on": "2026-10-16",
  "currency": "EUR",
  "totals": { "total": 21.5, "tax": 1.34 },
  "lines": [
    { "n": 1,
      "description": "BANANE BIO",
      "weight": 1.235, "unit": "kg",
      "price_per_unit": 1.99,
      "total": 2.46 },
    { "n": 3,
      "description": "LATTE INTERO 1L",
      "quantity": 2, "unit_price": 1.29,
      "total": 2.58 },
    { "n": 7, "kind": "discount",
      "total": -0.5, "applies_to": 6 },
    … 8 lines in all
  ],
  "reconciled": true
}
99.9%of product lines read with the right amount
281 / 281receipt totals read correctly
25+countries and currencies, Latin and non-Latin scripts
Under 10 sto read 100+ receipts sent at the same time

Accuracy measured on our own bench of 254 hand-transcribed receipts, with the engine this API runs on: how we tested it — and its limits. Speed measured in three load tests on our production servers in October 2026, from when the photos reached us.

How it works

From photo to data in seconds

One call from your servers, or a folder of photos dropped into the console. No templates to set up, no fields to map.

Send a photo

A JPEG, PNG or WebP of one whole receipt, up to 8 MB. Wait up to 30 seconds for the answer in the same call, or read it when it’s ready.

We read every line

Products, quantities, weights, unit prices, discounts and tax — in the language printed on the receipt, Greek, Chinese or Arabic included.

You get the data

JSON with a fixed, versioned schema — or CSV and Excel from the console. reconciled: true when the lines add up.

The data

Not just the total. Every line, as printed.

Merchant, date and total are the start. Flovvy returns the whole receipt, line by line, so you can work with what was actually bought.

  • Merchant name and country, date, currency, total, tax and net
  • Every line with its description as printed — never translated — quantity, unit price and total
  • Weights and units (kg, g, l, ml, lb, oz…) with the price per unit: 1.235 kg at €1.99/kg
  • Line discounts as lines of their own, linked to the product they apply to
  • A spending category out of 17, and warnings when the receipt has no date or no printed total
The receipt object · schema 2026-10-15
{ "n": 2,
  "kind": "item",
  "description": "PARMIGIANO REGG. 24M",
  "quantity": 1,
  "unit_price": 7.14,
  "total": 7.14,
  "weight": 0.312,
  "unit": "kg",
  "price_per_unit": 22.9,
  "applies_to": null }

Reconciled to the cent. reconciled: true means the lines, with the printed tax and discounts, add up exactly to the printed total. When they don’t, you know which receipts deserve a second look — before they reach your books.

Send a receipt and wait for the result
curl -X POST "$FLOVVY_BASE_URL/v1/receipts" \
  -H "Authorization: Bearer $FLOVVY_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042" \
  -d "{\"image_base64\": \"$(base64 -w0 receipt.jpg)\",
       \"client_reference\": \"order-1042\",
       \"wait\": 30}"
Response
HTTP/1.1 200 OK
Flovvy-Credits-Remaining: 9812
Flovvy-Request-Id: req_1701e4119387d595…

{ "id": "rcp_966dfd59aa21…", "status": "completed",
  "client_reference": "order-1042", "reconciled": true, … }
For developers

An API you can integrate in an afternoon

  • Free test keys that return a fixed example: build the whole integration before spending a credit
  • Answer in the same call with wait (up to 30 s), or poll — your choice
  • Idempotency-Key for safe retries: the same request never reads or charges twice
  • Automatic retries when our AI provider is busy, and capacity shared fairly between customers
  • An OpenAPI 3.1 contract and a versioned schema: breaking changes only with a new version, announced in advance
The console

Everything in one place, for the whole team

Your developers create keys, your operations team uploads photos from the browser, your finance team buys credits and downloads invoices. Everyone signs in with two-step verification.

Console overview of a demo account: 11,565 credits, 9,302 receipts read in 30 days, 97% with matching totals, and a bar chart of credits used per day.
Credits left, receipts read, the share whose totals match, and how fast results arrive — at a glance.
Receipts list with search and filters by period, status, totals, source and environment; each row shows merchant, reference, time, status and total.
Everything sent in the last 90 days, from the API and from the console. Search, filter, export to CSV, Excel or JSON.
Detail of one receipt: merchant Aurora Market, total 21.50 euro, a green note saying the totals match, and the eight lines with weights and prices per kg.
Each receipt line by line, with the photo and the JSON next to it. Re-read it, download it or delete it.
Credits page: the balance with the part from the monthly plan, a low-balance alert, and the packs and monthly plans to buy.
Buy packs or a monthly plan, set a low-balance alert, find payments, invoices and every credit movement.
API keys page with a test key for staging and a live key for the production server.
Test and live keys, created and revoked by you. Rotate a key without downtime.
Team page listing three people with roles Admin, Operator and Developer and their two-step verification status.
Invite colleagues as Admin, Developer, Operator or Billing. Two-step verification is required for everyone.

Upload from the browser

Drop up to 100 photos at a time, HEIC included. A test mode lets anyone try the flow for free.

Find and export

Search by merchant, reference or id; filter by status and totals; export to CSV, Excel or JSON.

Roles that fit your team

Admin, Developer, Operator and Billing: each person sees what their job needs, and nothing else.

Pricing

A plan for every volume. No hidden fees.

1 credit = 1 receipt read. A monthly plan for a steady volume, packs to top up or to pay as you go. No setup fee, no fee per user. Prices in euro, excluding VAT.

Start free

100 credits to read real receipts, and test keys that never use credits.

Get your free credits

Monthly plans

Start

5,000 receipts a month
€400 / month
€0.080 per receipt
Choose Start

Growth

10,000 receipts a month
€700 / month
€0.070 per receipt
Choose Growth
Lowest price per receipt

Business

50,000 receipts a month
€3,000 / month
€0.060 per receipt
Choose Business

Monthly plans are paid by card. The month’s credits are used first; the unused ones expire at renewal. Change plan from the next month, cancel at any time.

Top-up packs

One-off, and they never expire. Card, SEPA debit or bank transfer.

1,000 credits€0.140 per receipt
€140one-off
2,000 credits€0.120 per receipt
€240one-off
5,000 credits€0.100 per receipt
€500one-off
More than 50,000 receipts a month?

We agree a price per receipt with you, with bank transfer and a signed order form.

Talk to us

You pay for readings we perform

A photo we read uses its credit, even if it turns out not to be a readable receipt — the reading costs us too.

The credit comes back when we fail

If our AI provider doesn’t answer, or the result doesn’t arrive in time, the credit returns to you automatically.

Retries are free

The same request with the same Idempotency-Key within 24 hours returns the same receipt, at no cost. Test keys never use credits.

Security & privacy

Your receipts stay yours — and in the EU

Receipts can reveal more than prices: a pharmacy purchase is health data. We treat every receipt as if it held it, with the same safeguards for all.

  • Stored and read in the EU: database and photos in Frankfurt, AI reading in the provider’s European regions
  • A data processing agreement (GDPR art. 28) comes with the contract
  • Photos deleted after 7 days, results after 90 — or whenever you delete them
  • Receipts we misread help us learn your formats and improve the tool you use. Never shared, never used to train anyone else’s AI, and you can turn it off
  • Two-step verification for every console user, roles, and a log of the actions on the account
99.5%monthly availability target for the API
4⁠–⁠7 susual time from photo to result
1 working dayto answer support requests by email
FAQ

Questions businesses ask us

What can I send?

A photo of one whole receipt per request: JPEG, PNG or WebP up to 8 MB (the console also takes HEIC). We built and tested the engine on receipts; for other purchase documents, write to us and we’ll tell you honestly how it does.

Which countries and languages do you read?

Receipts from any country, in the language printed on them. Our test bench covers more than 25 countries and currencies, including Greek, Cyrillic, Arabic, Chinese, Japanese and Korean receipts. Descriptions come back exactly as printed, never translated.

How fast is it?

Usually 4⁠–⁠7 seconds from photo to JSON for one receipt. Receipts are read in parallel, so a batch doesn’t wait in line: in three load tests in October 2026, 106 receipts sent at the same time were all read in 6.8 to 8.3 seconds, measured from when they reached us. With wait you get the result in the same call; if our AI provider is busy, the receipt is retried automatically and may take a few minutes.

When is a credit used, and when does it come back?

A credit is reserved when we accept the photo and used when we read it — also if the photo turns out not to be a readable receipt, or has no total. It comes back automatically when the reading wasn’t performed or didn’t arrive in time, and every failed receipt tells you which case it is (failure.credit_refunded).

Do monthly plan credits expire?

Yes: the credits of a month are used first and the unused ones expire at renewal, when the new month arrives. Pack credits, trial credits and custom-price credits never expire, so a pack is the right top-up if a month runs out.

Can we try it before paying?

Yes. Test keys never use credits and return a fixed example, so your developers can build the whole integration first. Then 100 free credits let you read your own receipts before choosing a plan.

Where is the data, and who can see it?

In the European Union: the database and the photos in Frankfurt, the AI reading in the provider’s European regions. Photos are deleted after 7 days and results after 90; you can delete them earlier from the console. Receipts we fail to read, or whose totals don’t add up, may be kept up to 12 months to improve the reading, unless you opt out. We act as your data processor under a GDPR art. 28 agreement, and our access to your account is logged.

What contract do we sign?

Our terms of service and the data processing agreement, signed with an order form or accepted online in the console. We are Foryou Srl, an Italian company: every payment gets an invoice.

Is there an SLA?

We commit to targets — 99.5% monthly availability, results in under 15 seconds for 95% of receipts (usually it takes 4⁠–⁠7), an answer to support within one working day. They are targets, without penalty credits.

Read your first receipt today.

Write to us: we set up your account with a test key and 100 free credits, usually within a working day.