<!-- BusyBot node reference — https://busybot.net/tools/mindee/ -->

> Node: Mindee (`mindee`) · Action (binary) · v1
> Category: Utility · Credentials: Mindee Receipt API (`mindeeReceiptApi`), Mindee Invoice API (`mindeeInvoiceApi`)
> Updated: 2026-08-16

# Mindee

> Extract structured data from receipts and invoices via Mindee OCR

## Overview

The Mindee tool uploads binary document files (images or PDFs) to the Mindee prediction API and returns structured JSON data extracted via OCR and AI. It supports two resources: Receipt — upload a receipt image/PDF and extract date, supplier, amounts, currency, taxes, category, and other financial fields; and Invoice — upload an invoice image/PDF and extract invoice number, dates, supplier/customer info, line items, amounts, taxes, and payment details. Both resources support API versions 1 (legacy), 3, and 4 (recommended). The tool can return cleaned/flattened data or the full raw API response. Mindee uses separate API keys for receipt and invoice endpoints. The binary document is sent as multipart form data, and no new binary data is produced — only JSON extraction results.

**Category:** Utility  
**Tool Name:** `mindee`  
**Version:** 1

**Appearance:** Icon: `lucide-ScanLine` | Color: `#6236FF`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Mindee Receipt API** or **Mindee Invoice API** credentials — Mindee issues a separate key per product, and the node uses the one matching the Resource you select.
See the [Credentials Guide](https://busybot.net/credentials/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Invoice | `invoice` |
| Receipt | `receipt` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Predict | `predict` | Upload a document and extract structured data |

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| API Version | `options` | No | `4` | Which Mindee API version to use. Version 4 is recommended. |
| | | | | Options: `1` (Mindee API v1 — deprecated), `3` (Mindee API v3), `4` (Mindee API v4 — latest) |
| Input Binary Field | `string` | Yes | `data` | Name of the binary property containing the document file (image or PDF) to upload. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Operation is `predict`)_ |
| RAW Data | `boolean` | No | `false` | Whether to return the full API response as-is (true) or cleaned/flattened extraction results (false). |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Keep low to respect Mindee rate limits. |

Parameter values on this node are used exactly as typed — `{{ … }}` expressions are not evaluated here, so set the binary field name to a literal value rather than to an expression.

## Output Data

One output item per input item. The extraction result is merged into the item JSON at the top level, so the incoming fields stay addressable alongside it. The uploaded document is forwarded unchanged as binary on the output item — and on error items too, so a retry branch still has the file. The node never creates new binary data.

What lands on the item depends on **RAW Data**.

### RAW Data off (the default) — cleaned and flattened

Mindee returns every field as an object with a value, a confidence and page coordinates. With RAW Data off, the node flattens that: each prediction field becomes a single plain property whose value is the field's extracted value, so `{{ $json.total_amount }}` reads a number or string rather than an object.

On API versions 3 and 4 the item also carries three document-level properties before the fields:

```json
{
  "id": "b3f9c1d2-4e5a-4c7b-9f10-2a6d8e0b1c34",
  "name": "receipt-2026-03-14.jpg",
  "number_of_pages": 1
}
```

- `id` — Mindee's document identifier for this prediction.
- `name` — the file name Mindee recorded for the upload.
- `number_of_pages` — how many pages the document had.

The remaining properties are the prediction fields themselves, named exactly as Mindee names them for the product you called, with four flattening rules applied:

| Field | Becomes |
|-------|---------|
| `taxes` | An object `{ amount, rate }` taken from the **first** tax line only. Documents with several tax rates lose all but the first. |
| `locale` | Two separate properties: `currency` (the currency code) and `locale` (the locale value). The original nested object is not kept. |
| `line_items` (invoices, v3/v4) | An array of objects, each trimmed to `description`, `product_code`, `quantity`, `tax_amount`, `tax_rate`, `total_amount` and `unit_price`. |
| Any other object field | Its single meaningful value — the field's `value`, or failing that its `name`, `raw`, `degrees`, `amount` or `iban`. |

Scalar fields and plain arrays pass through unchanged.

On API version 1 the same flattening applies to the first prediction in the response, but there are no `id`, `name` or `number_of_pages` properties and no `line_items` handling.

### RAW Data on — the full response

The whole Mindee response is merged instead, untouched. That gives you `document` (with the nested `inference` and its `prediction` objects, each carrying its confidence and bounding polygon) on versions 3 and 4, `predictions` on version 1, and the `api_request` envelope describing the call. Turn this on when you need confidence scores or positional data; leave it off when you just want the values.

## Usage Examples

- Extract date, supplier, and total from a receipt photo
- Parse an invoice PDF to get line items and amounts
- Process expense receipt images in bulk and return structured data
- Extract invoice number, due date, and supplier details from a scanned invoice

## Example Configuration

Read a receipt photo attached to the item and return flattened fields:

```json
{
  "type": "mindee",
  "parameters": {
    "resource": "receipt",
    "operation": "predict",
    "binaryPropertyName": "data",
    "apiVersion": 4,
    "rawData": false
  }
}
```

Parse an invoice PDF, keeping the full response with confidences:

```json
{
  "type": "mindee",
  "parameters": {
    "resource": "invoice",
    "operation": "predict",
    "binaryPropertyName": "data",
    "apiVersion": 4,
    "rawData": true,
    "maxConcurrency": 2
  }
}
```

Process a large batch of receipts one at a time to stay under the rate limit:

```json
{
  "type": "mindee",
  "parameters": {
    "resource": "receipt",
    "operation": "predict",
    "binaryPropertyName": "data",
    "apiVersion": 4,
    "rawData": false,
    "maxConcurrency": 1
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Upload receipt or invoice images/PDFs to Mindee OCR API and receive structured extracted data as JSON.

### Important notes

- **Receipts and invoices need different keys.** Mindee issues one API key per product, and the node picks the credential from the Resource you select — a receipt key will not authenticate an invoice run.
- **The document must arrive as binary data.** Put a Download, Read File or S3 node in front, and make sure the binary property name matches exactly; names are case-sensitive.
- **Version 4 is the one to use.** Version 1 is deprecated and reaches a different endpoint with a different auth header; version 3 is supported for older integrations. Only `1`, `3` and `4` are accepted.
- **Turn RAW Data on for confidence scores.** The cleaned output deliberately drops confidences and coordinates in exchange for flat, directly usable values.
- **Multi-rate tax documents lose detail when cleaned.** Only the first tax line survives the flattening — use RAW Data if a document can carry more than one rate.
- **Keep Max Concurrency low.** Mindee rate-limits per key; 1 or 2 is sensible for high-volume batches.