# Invoice & Receipt to Excel (`enezli/invoice-to-excel`) Actor

Invoice and receipt OCR to Excel. Reads PDF and image invoices/receipts with AI and extracts date, seller, tax ID, VAT/tax, total and line items into a clean Excel or CSV table. No subscription, no manual data entry.

- **URL**: https://apify.com/enezli/invoice-to-excel.md
- **Developed by:** [Turgay NANTA](https://apify.com/enezli) (community)
- **Categories:** Automation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 document processeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Invoice & Receipt to Excel

Reads your PDF, image, Excel or Word **invoices and receipts** with AI and extracts **date, seller, tax ID, VAT/tax, total and line items** into a clean spreadsheet that pastes straight into Excel.

> **No subscription — you only pay per document you process.**

***

### What it does

Typing hundreds of invoices into a spreadsheet by hand takes hours and is error-prone. This actor turns that into **minutes**:

- 📥 **Every file type:** PDF · image (PNG/JPG/WEBP/GIF) · Excel (.xlsx) · Word (.docx) · text/CSV/HTML
- 🧠 **AI reading:** date · seller · tax/VAT ID · subtotal · VAT/tax · total · line items · currency
- 📤 **The format you want:** Table · **Excel (.xlsx)** · CSV · **PDF report** · HTML report
- 🌍 **Works on any language** — invoices in English, Turkish, German, Spanish, French and more
- ✅ **Honest:** unreadable or suspicious fields are flagged **"Low confidence"** — never fabricated

### How it works

1. Upload your invoices (`files` — base64) or paste them as text (`texts`).
2. Choose an output format (Excel / CSV / PDF / HTML / All).
3. Run → you first get a **free preview** (document/page count). Turn on `process` to extract.
4. Grab your clean table from the **Dataset** tab, or the extra file from the key-value store.

### Who it's for

Small-business owners · accountants · bookkeepers · finance assistants · e-commerce sellers — anyone who enters invoices every month.

### Why this actor

- **No subscription** — competitors charge a fixed monthly fee; here you pay only per document processed.
- **Transparent accuracy** — uncertain fields are shown to you, not hidden.
- **One tool** for many input types and many output formats.
- **Free preview first** — see the document/page count before any charge.

### Output

Delivered in two layers:

- **Dataset (table):** one row per invoice — columns: `Document` · `Date` · `Year` · `Month` · `Day` · `Seller` · `Tax ID` · `Subtotal` · `VAT/Tax` · `Total` · `Currency` · `Confidence` · `Note`. Amount columns stay numeric (summable) but display with thousands separators.
- **Extra files (key-value store):** `INVOICE_TABLE.xlsx` · `INVOICE_TABLE.csv` · `INVOICE_REPORT.pdf` · `INVOICE_REPORT.html` (depending on the chosen format). A `PREVIEW` and a `REPORT` summary are also stored.

#### Example output

| Document | Date | Seller | Tax ID | Subtotal | VAT/Tax | Total | Currency |
|---|---|---|---|---:|---:|---:|---|
| invoice1.pdf | 2026-06-01 | Acme Metals Inc. | 1740832609 | 3,443.20 | 688.64 | 4,131.84 | USD |

### Pricing (Pay-Per-Event)

You only pay for what you use:

- **Actor start** — once per run.
- **Documents processed** — per document the AI actually extracts. The free preview and any skipped/empty documents are **not** charged.

No monthly subscription.

# Actor input Schema

## `files` (type: `array`):

The invoices to process — ALL common file types: PDF, image (png/jpg/webp/gif), Excel (.xlsx), Word (.docx), text/CSV/HTML. Each item: {name, data} (data = base64 or a data-URI). The type is detected automatically from the file signature + extension.

## `output_format` (type: `string`):

A table is always produced (dataset). Additionally you can request Excel (.xlsx), CSV, a PDF report or an HTML report. 'All' produces every format. Extra files are downloadable from the run's key-value store.

## `texts` (type: `array`):

Plain-text invoice content instead of an image (OCR output or pasted text). Handy for quick tests and BYOD.

## `language` (type: `string`):

Language for any descriptive labels the AI generates. Field values are always copied verbatim from the document.

## `model` (type: `string`):

Vision model. The default is a strong model (accurate seller/tax ID even on tricky invoice layouts). For very simple/standard invoices the cheaper model lowers cost.

## `process` (type: `boolean`):

When off, you only get a FREE preview (document/page count). When on, the documents are processed with AI — you are charged per processed document.

## Actor input object example

```json
{
  "files": [],
  "output_format": "excel",
  "texts": [
    "INVOICE  Invoice Date: 2026-06-29  Seller: ABC Ltd  Tax ID: 1234567890  Subtotal: 1,000.00 USD  VAT/Tax: 200.00 USD  Grand Total: 1,200.00 USD"
  ],
  "language": "English",
  "model": "claude-sonnet-4-6",
  "process": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "files": [],
    "texts": [
        "INVOICE  Invoice Date: 2026-06-29  Seller: ABC Ltd  Tax ID: 1234567890  Subtotal: 1,000.00 USD  VAT/Tax: 200.00 USD  Grand Total: 1,200.00 USD"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("enezli/invoice-to-excel").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "files": [],
    "texts": ["INVOICE  Invoice Date: 2026-06-29  Seller: ABC Ltd  Tax ID: 1234567890  Subtotal: 1,000.00 USD  VAT/Tax: 200.00 USD  Grand Total: 1,200.00 USD"],
}

# Run the Actor and wait for it to finish
run = client.actor("enezli/invoice-to-excel").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "files": [],
  "texts": [
    "INVOICE  Invoice Date: 2026-06-29  Seller: ABC Ltd  Tax ID: 1234567890  Subtotal: 1,000.00 USD  VAT/Tax: 200.00 USD  Grand Total: 1,200.00 USD"
  ]
}' |
apify call enezli/invoice-to-excel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=enezli/invoice-to-excel",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4DsJccCLYsNMkawTg/builds/b9XBhfVAIySASxBMP/openapi.json
