Base URL
https://freebillgen.com/api/v1
Authentication
Every request uses a Bearer token. Create one under Settings → API keys, give it the per-resource read/write scopes it needs, set an optional expiry, and send it on each request:
Authorization: Bearer <your-api-key>A key only ever reaches your own account’s data, and you can revoke it at any time.
What you can do
- Read invoices, clients, companies, payments and recurring schedules
- Create and update them (write API - Pro)
- Pull VAT and aging reports as JSON
- Register webhook endpoints for invoice and payment events (Pro)
- Idempotency-Key header on writes - a retried request never double-acts
- Cursor pagination via links.next, tunable with per_page (max 100)
Conventions
- Idempotency
- Send an Idempotency-Key header on any create or action call; a retried request returns the original result instead of acting twice.
- Pagination
- List endpoints are cursor-paginated - follow links.next (or pass ?cursor=...), and tune ?per_page= (max 100).
- Money
- Amounts are JSON strings with two decimals, e.g. "121.00", to avoid float rounding.
- IDs
- Every resource is addressed by an opaque id, never a sequential number.
Example: list your invoices
curl https://freebillgen.com/api/v1/invoices \
-H "Authorization: Bearer $FREEBILLGEN_API_KEY"
Open the full interactive API reference →
Invoice API questions
Is the invoice API free?
Yes - the read API is included in the free tier at no cost. The write API (creating and updating invoices) and webhooks are part of the optional Pro add-on.
How do I authenticate?
Create a Bearer token under Settings -> API keys, assign it read/write scopes per resource, and send it as an Authorization: Bearer header on every request. Keys are scoped to your own account and can be revoked or expired.
Can I create invoices programmatically?
Yes, via the write API, which is part of the Pro add-on. It produces the same tax-compliant invoices as the web app, with sequential numbering and VAT handling applied server-side.
How do I avoid creating duplicate invoices on retry?
Send an Idempotency-Key header on the create call. If the request is retried with the same key, the API returns the original result instead of creating a second invoice.