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.
{
"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
}
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.
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.
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
{ "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.
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}"
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, … }
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-Keyfor 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
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.
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.
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.
100 credits to read real receipts, and test keys that never use credits.
Monthly plans
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.
We agree a price per receipt with you, with bank transfer and a signed order form.
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.
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
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.