Create invoices, quotes, credit notes and purchase orders, sync clients and products, and pull payment/report data into your own tools — without touching the dashboard.
Every request is authenticated with a company-scoped API key, generated from Settings → API Keys on Agency plans. Send it as a bearer token on every request:
curl https://yourdomain.com/api/v1/invoices \
-H "Authorization: Bearer ij_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
Keys can be scoped to specific abilities (read-only, invoices, clients, reports) and revoked instantly from the dashboard. Each key is shown once at creation — store it like a password.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/invoices | List invoices, quotes, credit notes, POs |
| POST | /api/v1/invoices | Create a document (set type) |
| GET | /api/v1/invoices/{id} | Retrieve a single document |
| GET | /api/v1/invoices/{id}/pdf | Download the rendered PDF |
| GET | /api/v1/clients | List clients |
| POST | /api/v1/clients | Create a client |
| GET | /api/v1/payments | List recorded payments |
| GET | /api/v1/reports/summary | Revenue, tax & outstanding totals |
POST /api/v1/invoices
{
"type": "invoice",
"client_id": 42,
"currency": "USD",
"tax_type": "percent",
"tax_value": 8.5,
"discount_type": "flat",
"discount_value": 20,
"shipping_amount": 15,
"items": [
{ "name": "Design sprint", "quantity": 1,
"unit_price": 1200 }
]
}
The same payload shape works for type: "quotation", "credit_note", and "purchase" (purchase orders) — one schema, four document types.
Webhooks for invoice.paid, invoice.overdue and payment.received, plus per-key rate limit headers, are on our near-term roadmap. Have a specific integration in mind (Zapier, QuickBooks, a custom ERP)? Tell us and we'll prioritize it.
API access is included on the Agency plan. Compare plans or talk to us about your use case.
Start Free →