Automate Invoice Processing

Extract line items, totals, and vendor details from invoices into structured JSON for accounting workflows.

Who this is for

Accounts payable teams and finance automation platforms use this recipe to eliminate manual invoice data entry. Upload an invoice in any supported format and receive structured JSON with vendor details, line items, and totals — ready to feed into your ERP or accounting system.

curl -X POST https://api.iterationlayer.com/document-extraction/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "files": [
      {
        "type": "url",
        "name": "invoice.pdf",
        "url": "https://example.com/invoices/2026-001.pdf"
      }
    ],
    "schema": {
      "fields": [
        { "name": "vendor", "type": "TEXT", "description": "Vendor or supplier name" },
        { "name": "invoice_number", "type": "TEXT", "description": "Invoice reference number" },
        { "name": "date", "type": "DATE", "description": "Invoice date" },
        { "name": "line_items", "type": "ARRAY", "description": "Individual line items", "fields": [
          { "name": "description", "type": "TEXT", "description": "Item description" },
          { "name": "quantity", "type": "INTEGER", "description": "Quantity ordered" },
          { "name": "unit_price", "type": "CURRENCY_AMOUNT", "description": "Price per unit" }
        ]},
        { "name": "total_amount", "type": "CURRENCY_AMOUNT", "description": "Total invoice amount" }
      ]
    }
  }'
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });

const result = await client.extract({
  files: [
    {
      type: "url",
      name: "invoice.pdf",
      url: "https://example.com/invoices/2026-001.pdf",
    },
  ],
  schema: {
    fields: [
      { name: "vendor", type: "TEXT", description: "Vendor or supplier name" },
      { name: "invoice_number", type: "TEXT", description: "Invoice reference number" },
      { name: "date", type: "DATE", description: "Invoice date" },
      { name: "line_items", type: "ARRAY", description: "Individual line items", fields: [
        { name: "description", type: "TEXT", description: "Item description" },
        { name: "quantity", type: "INTEGER", description: "Quantity ordered" },
        { name: "unit_price", type: "CURRENCY_AMOUNT", description: "Price per unit" },
      ]},
      { name: "total_amount", type: "CURRENCY_AMOUNT", description: "Total invoice amount" },
    ],
  },
});

console.log(result);
from iterationlayer import IterationLayer
client = IterationLayer(api_key="YOUR_API_KEY")

result = client.extract(
    files=[
        {
            "type": "url",
            "name": "invoice.pdf",
            "url": "https://example.com/invoices/2026-001.pdf",
        }
    ],
    schema={
        "fields": [
            {"name": "vendor", "type": "TEXT", "description": "Vendor or supplier name"},
            {"name": "invoice_number", "type": "TEXT", "description": "Invoice reference number"},
            {"name": "date", "type": "DATE", "description": "Invoice date"},
            {"name": "line_items", "type": "ARRAY", "description": "Individual line items", "fields": [
                {"name": "description", "type": "TEXT", "description": "Item description"},
                {"name": "quantity", "type": "INTEGER", "description": "Quantity ordered"},
                {"name": "unit_price", "type": "CURRENCY_AMOUNT", "description": "Price per unit"},
            ]},
            {"name": "total_amount", "type": "CURRENCY_AMOUNT", "description": "Total invoice amount"},
        ]
    },
)

print(result)
package main

import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.Extract(il.ExtractRequest{
    Files: []il.FileInput{
        il.NewFileFromURL("invoice.pdf", "https://example.com/invoices/2026-001.pdf"),
    },
    Schema: il.ExtractionSchema{
        "vendor":         il.NewTextFieldConfig("vendor", "Vendor or supplier name"),
        "invoice_number": il.NewTextFieldConfig("invoice_number", "Invoice reference number"),
        "date":           il.NewDateFieldConfig("date", "Invoice date"),
        "line_items": il.NewArrayFieldConfig("line_items", "Individual line items", []il.FieldConfig{
            il.NewTextFieldConfig("description", "Item description"),
            il.NewIntegerFieldConfig("quantity", "Quantity ordered"),
            il.NewCurrencyAmountFieldConfig("unit_price", "Price per unit"),
        }),
        "total_amount": il.NewCurrencyAmountFieldConfig("total_amount", "Total invoice amount"),
    },
})

Related Recipes

Start building in minutes

Free trial credits included. No credit card required.