# Fiscavo > Fiscavo is free invoicing software for freelancers and small businesses in the EU. Create, send, and track professional invoices with multi-currency support, automatic PDF generation, and client management. - Multi-currency invoicing (EUR, USD, GBP, CHF, SEK) with locale-aware formatting - Professional PDF generation with live preview before sending - Client management with contact details, addresses, and tax IDs - Tax handling with configurable rates and notes (supports EU VAT) - Invoice status tracking: Draft, Sent, Paid, Overdue, Cancelled - Activity audit trail for all invoice lifecycle events - Dark mode with hand-tuned color palette - Google OAuth authentication - Web application at https://fiscavo.com - API at https://api.fiscavo.com ## Blog Practical guides on invoicing, freelance operations, EU VAT, and getting paid faster — written for European freelancers and small B2B operators. - [How to Write a Freelance Invoice (With Examples)](https://fiscavo.com/blog/how-to-write-freelance-invoice): The eight essentials of a freelance invoice, a worked EU example, common mistakes, and a VAT/reverse-charge primer. - [What to Include on an Invoice: The Complete Checklist](https://fiscavo.com/blog/what-to-include-on-invoice): Universal essentials, EU-specific extras, optional fields that accelerate payment, bank-details guidance, and a printable checklist. - [How to Chase Unpaid Invoices (Without Burning the Relationship)](https://fiscavo.com/blog/how-to-chase-unpaid-invoices): A five-touch chase sequence with copy-paste email templates, escalation thresholds, and the EU Late Payment Directive (2011/7/EU) statutory rights every freelancer has. ## API - [Generate Invoice PDF](https://api.fiscavo.com/api/public/generate-invoice): POST endpoint that accepts invoice data as JSON and returns a professional PDF. No authentication required. Rate limited to 5 requests per minute per IP. ### Example Request ``` POST https://api.fiscavo.com/api/public/generate-invoice Content-Type: application/json { "from": { "name": "My Company", "country": "Germany", "vatNumber": "DE123456789", "bankName": "Deutsche Bank", "iban": "DE89370400440532013000" }, "to": { "name": "Client Corp", "address": "Friedrichstraße 123", "city": "Berlin", "postalCode": "10115", "country": "Germany" }, "invoiceNumber": "INV-001", "issueDate": "2026-03-31", "dueDate": "2026-04-14", "currency": "EUR", "lineItems": [ { "description": "Consulting", "quantity": 10, "rate": 150.00, "unit": "HOUR" } ], "taxRate": 21, "taxNote": "VAT 21%" } ``` ### Response **Default** (`Accept: application/pdf` or omitted): Returns `application/pdf` binary with the generated invoice. **For AI agents** (`Accept: application/json`): Returns a JSON object with a download URL. This is the recommended mode for AI agents — you can present the link directly to the user. ``` { "downloadUrl": "https://api.fiscavo.com/api/public/invoices/{token}", "fileName": "invoice-INV-001.pdf" } ``` ### GET alternative (for agents that cannot POST) If you cannot make POST requests, use the GET endpoint with a base64url-encoded JSON payload in the `data` query parameter: ``` GET https://api.fiscavo.com/api/public/generate-invoice?data= ``` The JSON payload is the same as the POST body above, base64url-encoded (RFC 4648 Section 5 — use `-` and `_` instead of `+` and `/`, no padding). The response is always JSON with `downloadUrl` and `fileName`. The PDF includes a "Generated with Fiscavo" footer. ### Fields - `from`: Sender/business info. Required: `name`. Optional: `address`, `city`, `postalCode`, `country`, `registrationNumber`, `vatNumber`, `bankName`, `iban`, `swift`. - `to`: Recipient/client info. Required: `name`. Optional: `address`, `city`, `postalCode`, `country`, `taxId`. - `invoiceNumber`: Your invoice reference number. - `issueDate`, `dueDate`: ISO 8601 dates (YYYY-MM-DD). - `currency`: ISO 4217 code (EUR, USD, GBP, CHF, SEK). Default: EUR. - `lineItems`: Array of items. Each has `description`, `quantity`, `rate` (in major currency units, e.g. 150.00), and optional `unit` (DAY, HOUR, ITEM, MONTH). - `taxRate`: Tax percentage as integer (21 = 21%). Default: 0. - `taxNote`: Optional note displayed on the invoice (e.g. "VAT 21%").