Skip to content

Getting Started

Generate your first ZUGFeRD-compliant invoice in under 5 minutes.

Prerequisites

Quick Start

1. Get your API Key

After signing up, go to your dashboard and create a new API key.

Sandbox vs Live

  • Sandbox keys (env_sandbox_...) generate PDFs with a watermark, unlimited usage
  • Live keys (env_live_...) generate production PDFs, count against your quota

2. Make your first request

bash
curl -X POST https://api.envoice.dev/v1/generate \
  -H "X-API-Key: env_sandbox_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "minimal",
    "invoice": {
      "number": "2026-001",
      "date": "2026-01-15",
      "seller": {
        "name": "Acme GmbH",
        "vatId": "DE123456789",
        "street": "Hauptstraße 1",
        "city": "Berlin",
        "postalCode": "10115",
        "country": "DE"
      },
      "buyer": {
        "name": "Customer AG",
        "city": "München",
        "country": "DE"
      },
      "items": [{
        "description": "Consulting Services",
        "quantity": 8,
        "unit": "HUR",
        "unitPrice": 150.00,
        "vatRate": 19.0
      }]
    }
  }'

3. Handle the response

json
{
  "pdf_base64": "JVBERi0xLjcK...",
  "filename": "invoice-2026-001.pdf",
  "validation": {
    "status": "valid",
    "profile": "EN16931",
    "version": "2.3.2"
  },
  "account": {
    "remaining": 499,
    "plan": "starter"
  }
}

The pdf_base64 field contains your ZUGFeRD-compliant PDF/A-3 document.

4. Save the PDF

bash
# Decode and save the PDF (example using jq)
curl ... | jq -r '.pdf_base64' | base64 -d > invoice.pdf

Using an SDK

We provide official SDKs for 8 languages. Here's a quick example with TypeScript:

typescript
import { EnvoiceClient } from '@envoice/sdk'

const client = new EnvoiceClient('env_sandbox_xxx')

const result = await client.invoice()
  .number('2026-001')
  .date('2026-01-15')
  .seller({ name: 'Acme GmbH', vatId: 'DE123456789', city: 'Berlin', country: 'DE' })
  .buyer({ name: 'Customer AG', city: 'München', country: 'DE' })
  .addItem({ description: 'Consulting', quantity: 8, unit: 'HUR', unitPrice: 150 })
  .template('minimal')
  .generate()

if (result.success) {
  await result.savePdf('./invoice.pdf')
}

See all available SDKs.

Next Steps

ZUGFeRD 2.3 & Factur-X 1.0 compliant