API Documentation
REST API for integrating QuickInvoice with external apps: issue invoices, read customers and products, receive signed webhooks. Base URL: https://quickinvoice.ro/api/v1
Introduction
All requests use JSON and are isolated to the company the API key belongs to. Rate limit: 120 requests/minute per key. Keys are generated from Dashboard → Settings → API & Integrations.
Authentication
Send the key (format qi_live_…) in any of these headers:
Authorization: Bearer qi_live_... X-Api-Key: qi_live_...
# Test connection
curl https://quickinvoice.ro/api/v1/ping -H "X-Api-Key: qi_live_..."
# → { "ok": true, "company": "SC Exemplu SRL", "taxCode": "RO12345678", "apiVersion": "v1" }Invoices
GET /invoices · GET /invoices/:id · POST /invoices · GET /invoices/:id/pdf
When listing you can pass: status (DRAFT, SENT, VIEWED, PAID, PARTIAL, OVERDUE, CANCELED), type (INVOICE, PROFORMA, DELIVERY_NOTE), customerId, search, dateFrom/dateTo, page, limit (max 100).
# Issue an invoice (unitPrice = NET price; VAT is computed from taxRate)
curl -X POST https://quickinvoice.ro/api/v1/invoices \
-H "X-Api-Key: qi_live_..." -H "Content-Type: application/json" \
-d '{
"customerName": "SC Exemplu SRL",
"customerCIF": "RO12345678",
"customerEmail": "client@exemplu.ro",
"items": [
{ "description": "Web services", "quantity": 1, "unitPrice": 500, "taxRate": 21 }
]
}'If you don't send a series, the company's default series is used. The customer is created/updated automatically by phone number. Download the PDF with GET /invoices/:id/pdf.
Customers
GET /customers?search=&limit=&offset= · GET /customers/:id · POST /customers (phone required).
Products
GET /products?search=&categoryId=&type= (PRODUCT or SERVICE) · GET /products/:id. Read-only in v1.
Webhooks
You receive a JSON POST every time an event occurs. You add the endpoints in Dashboard → Settings → API & Integrations → Webhooks. Available events:
invoice.created, invoice.paid, invoice.overdue, customer.created, payment.received.
POST <your url>
X-QuickInvoice-Event: invoice.created
X-QuickInvoice-Signature: sha256=<hmac>
{
"event": "invoice.created",
"createdAt": "2026-07-05T10:00:00.000Z",
"data": {
"invoiceId": "…", "invoiceNumber": "FACT-2026-0001",
"total": 266.20, "currency": "RON", "status": "SENT"
}
}Verify the signature: compute HMAC-SHA256 over the raw request body with the webhook secret (whsec_…) and compare with the X-QuickInvoice-Signature header. An endpoint that repeatedly fails is disabled automatically.
// Node.js — verify signature
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', WHSEC)
.update(rawBody).digest('hex');
const valid = expected === req.headers['x-quickinvoice-signature'];Zapier
The simplest option, with no app to install: create a Zap with the “Webhooks by Zapier → Catch Hook” trigger, copy the generated URL and add it as a webhook in QuickInvoice (you pick the event). From now on every invoice/payment starts the Zap. You can map the fields from data into any action (Google Sheets, email, CRM, etc.).
As a polling alternative, Zapier can periodically query GET https://quickinvoice.ro/api/v1/invoices?limit=… and deduplicate by id.
Make (Integromat)
In Make, add the “Webhooks → Custom webhook” module, copy the address and set it as a webhook in QuickInvoice. The scenario starts instantly on every event, with the full payload available for the next steps.
WooCommerce
Install the official QuickInvoice for WooCommerce plugin, put the API key in WooCommerce → QuickInvoice and invoices are issued automatically on every paid order, with PDF download from the order page and the tax ID captured for B2B.
Shopify
No app to install: in Shopify Admin → Settings → Notifications → Webhooks add an Order payment (JSON) webhook to:
https://quickinvoice.ro/api/v1/webhooks/shopify?key=qi_live_...
The invoice is issued automatically on every paid order, race-safe, no duplicates.
Errors
Standard format, common codes:
400 invalid request · 401 missing/invalid/revoked key · 404 resource not found · 429 rate limit exceeded.
Need help with your integration? Write to us at contact@quickinvoice.ro.