The Quickly API. Everything in the dashboard, from code too.
A full REST API for all business operations — tax invoices, receipts, quotes, delivery notes, AI receipt scanning, bank connection, accounting reports. SHAAM allocation numbers are issued automatically for every invoice over the threshold. The key also works with ChatGPT (OAuth) and Claude Desktop (MCP).
Quick start
3 steps — from activation to your first invoice.
Enable the Addon
Go to Dashboard → Settings → 'Enable API access'. You'll be taken to checkout for ₪400/month (HYP/CreditGuard). After a successful payment the 'API Keys' area opens.
Create a key
In the API Keys card click 'Create key', give it a name (e.g. 'Make.com') and choose the permissions. The sensitive permissions (bank sync, email scan approval, sending WhatsApp to clients) require explicit selection.
Call the API
All calls with an Authorization: Bearer qkly_live_... header.
curl https://www.quicklyinv.co.il/api/v1/invoices \
-H "Authorization: Bearer qkly_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"client_id": "<client UUID>",
"items": [
{ "description": "Consulting", "quantity": 1, "unit_price": 500, "total": 500, "vat_rate": 17 }
],
"type": "invoice"
}'The response will include the SHAAM allocation_number when the invoice passed the threshold.
Authentication & permissions
Every key belongs to a single business and is stored as a SHA-256 hash. A key can be revoked at any moment from the dashboard; calls with a revoked key get an immediate 401.
read · write · reportsThe default for a new key. Allows reading and creating invoices, clients, expenses, and reports. Does not grant access to the bank scraper or to email-scan approval.
bank:syncTriggers israeli-bank-scrapers on demand. Requires explicit consent when creating the key. Not enabled by the general write scope.
email-scan:writeApprove/reject items detected by email scanning (Pro). Allows bypassing the dashboard's human review.
whatsapp:sendProactive messages to your clients. Sending an invoice and a reminder for existing invoices does not require this scope — they rely on the general API addon consent.
Endpoint catalog
All calls are under https://www.quicklyinv.co.il and return JSON in the format { success, data | error }.
Invoices & receipts
Create, mark as paid, credit, send to client. Every tax invoice created through the API automatically requests a SHAAM allocation number when the amount is over the threshold — exactly like in the chat and the dashboard.
/api/v1/invoices?month=YYYY-MMList of invoices in a given month (up to 200).
/api/v1/invoicesCreates a tax invoice / receipt / invoice-receipt / credit invoice. Accepts client_id and items[].
/api/v1/invoices/{id}Details of a single invoice (including allocation_number).
/api/v1/invoices/{id}Update allowed fields (status / notes / payment_method).
/api/v1/invoices/{id}/pdfReturns the invoice PDF as application/pdf.
/api/v1/invoices/{id}/mark-paidMarks as paid and automatically issues a receipt in the same call — compliant with the Israeli legal requirement to issue a receipt upon receiving payment.
/api/v1/invoices/{id}/creditIssues a credit invoice (full by default, partial with items[]).
/api/v1/invoices/{id}/sendSends the invoice to the client on WhatsApp with a PDF; if the 24-hour window has expired, an approved template is sent.
/api/v1/invoices/{id}/reminderPayment reminder to the client on WhatsApp, with automatic tier selection based on days overdue.
Quotes & delivery notes
The documents that accompany the invoice — before payment and after.
/api/v1/quotes?month=YYYY-MMList of quotes.
/api/v1/quotesCreates a new quote.
/api/v1/quotes/{id}/convertConverts a quote into an invoice. With type=receipt + payment_method it creates an invoice-receipt in one step.
/api/v1/delivery-notes?month=YYYY-MMList of delivery notes.
/api/v1/delivery-notesCreates a new delivery note.
Clients & expenses
Manage contacts, record expenses, and scan receipts from an image. The OCR uses Gemini Vision and understands Hebrew — parking, gas, electricity bills, and the rest of the Israeli genres.
/api/v1/clientsList of clients with accumulated outstanding balance.
/api/v1/clientsCreates a new client.
/api/v1/clients/{id}/sendSends a WhatsApp message to the client. Within the 24h window — free text. Outside the window — template fallback (default re_engagement). Limited to 10 sends/client/24h. Requires the whatsapp:send scope.
scope: whatsapp:send/api/v1/expenses?month=YYYY-MMList of expenses.
/api/v1/expensesManual expense recording.
/api/v1/expenses/scanOCR for a receipt: multipart with file, or JSON with image_base64 + mime_type. The ?commit=true option saves directly. Limited to 100 calls/day per business.
Bank & email scanning
Operations that require explicit scopes. The standard key (read + write + reports) cannot access these until you check the relevant scope when creating the key.
/api/v1/bank/accountsBank account metadata (without credentials).
/api/v1/bank/transactionsBank transactions with account_id/from/to/reconciled filters and lazy cursor-based streaming.
/api/v1/bank/accounts/{id}/syncTriggers the scraper on demand (israeli-bank-scrapers).
scope: bank:sync/api/v1/email-scan/pendingQueue of expenses detected from email and awaiting approval.
/api/v1/email-scan/{id}/approveApproves an item from the email and creates an expense record from it.
scope: email-scan:write/api/v1/email-scan/{id}/rejectRejects an item from the email and marks it skipped.
scope: email-scan:writeWithholding tax
Withholding tax certificates for suppliers — documentation for the annual Form 856.
/api/v1/withholding/certificates?active_on=YYYY-MM-DDList of withholding certificates. active_on filters to those valid on the specified day.
/api/v1/withholding/certificatesRecords a new withholding certificate for a supplier (name, business ID, withholding rate, validity).
Webhooks
Subscribe to events — Quickly performs a signed POST to your URL when something happens (invoice created, payment received, etc.). HMAC-SHA256 signature in the X-Quickly-Signature header. Supported events: invoice.created · invoice.paid · invoice.cancelled · expense.created · quote.created · quote.converted · bank.transaction_added · email_scan.item_pending.
/api/v1/webhooksList of registered endpoints.
/api/v1/webhooksRegisters a new endpoint. Returns the secret only once.
/api/v1/webhooksDeletes an endpoint by id.
Payments, reports & management
Payment links, accounting reports, and managing the keys themselves.
/api/v1/pingHealth check — returns the business id, the key's scopes, and a server timestamp. Useful for the initial setup of an integration.
/api/v1/usage?days=30Summary of API calls over the last N days (default 30, max 365): total, breakdown by endpoint, and daily breakdown. Aggregation — not a log of every call.
/api/v1/payments/linkCreates an HYP payment link for an existing invoice.
/api/v1/reports/vat?from=&to=VAT report.
/api/v1/reports/profit-loss?from=&to=Profit & loss report.
/api/v1/reports/balance-sheet?as_of=Balance sheet for a given day.
/api/v1/stats?month=YYYY-MMMonthly statistics.
/api/v1/settingsBusiness details (safe fields only).
More examples
Scan a receipt with an image
curl https://www.quicklyinv.co.il/api/v1/expenses/scan?commit=true \
-H "Authorization: Bearer qkly_live_..." \
-F "file=@receipt.jpg"Mark an invoice as paid and issue a receipt
curl -X POST https://www.quicklyinv.co.il/api/v1/invoices/{id}/mark-paid \
-H "Authorization: Bearer qkly_live_..." \
-H "Content-Type: application/json" \
-d '{ "payment_method": "credit_card" }'Convert a quote into an invoice-receipt
curl -X POST https://www.quicklyinv.co.il/api/v1/quotes/{id}/convert \
-H "Authorization: Bearer qkly_live_..." \
-H "Content-Type: application/json" \
-d '{ "type": "receipt", "payment_method": "bit" }'Bi-monthly VAT report
curl "https://www.quicklyinv.co.il/api/v1/reports/vat?from=2026-05-01&to=2026-06-30" \
-H "Authorization: Bearer qkly_live_..."Quick health check (Ping)
curl https://www.quicklyinv.co.il/api/v1/ping \
-H "Authorization: Bearer qkly_live_..."
# The response includes the scopes granted to the key — useful for quickly verifying the setup.Register a webhook and verify the signature
# 1) Register an endpoint — you'll receive the secret once
curl -X POST https://www.quicklyinv.co.il/api/v1/webhooks \
-H "Authorization: Bearer qkly_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://api.example.co/quickly-events",
"events": ["invoice.paid", "invoice.created"],
"description": "Make.com integration"
}'
# Response: { ..., "secret": "whsec_..." } // save it!2) On the receiving side — verify the signature in Node.js:
import crypto from "crypto";
function verify(secret, header, rawBody) {
const m = Object.fromEntries(header.split(",").map(p => p.split("=")));
const expected = crypto.createHmac("sha256", secret)
.update(`${m.t}.${rawBody}`).digest("hex");
return expected === m.v1 && Math.abs(Date.now()/1000 - +m.t) < 300;
}
// app.post("/quickly-events", (req, res) => {
// const ok = verify(SECRET, req.headers["x-quickly-signature"], rawBody);
// if (!ok) return res.status(401).end();
// const { event, data } = JSON.parse(rawBody);
// // ... handle event
// res.status(200).end();
// });OpenAPI Spec
The official spec in OpenAPI 3.0 format is available at:
https://www.quicklyinv.co.il/api/v1/openapi.json- · ChatGPT Custom GPT — in GPT Builder under Actions → Schema → Import from URL, paste the address.
- · Postman / Insomnia — File → Import → Link.
- · SDK generation —
openapi-generator-cli generate -i https://www.quicklyinv.co.il/api/v1/openapi.json -g typescript-fetch -o ./quickly-sdk
Connecting to AI assistants
The same key works with both MCP (Claude Desktop) and ChatGPT Custom GPT (OAuth).
Claude Desktop · MCP
Add the following section to claude_desktop_config.json:
{
"mcpServers": {
"quickly": {
"command": "npx",
"args": ["-y", "@quickly/mcp-server"],
"env": {
"QUICKLY_API_KEY": "qkly_live_..."
}
}
}
}ChatGPT · Custom GPT
In GPT Builder, under Actions → Authentication → OAuth, use the following values:
- · Authorization URL:
https://www.quicklyinv.co.il/api/oauth/authorize - · Token URL:
https://www.quicklyinv.co.il/api/oauth/token - · Scope:
read write - · OpenAPI Schema URL:
https://www.quicklyinv.co.il/api/v1/openapi.json
Building your own Connector
If you're building an app (CRM, ERP, automation) and want your users to connect their Quickly account via OAuth — similar to Make.com — here's the flow.
- Register your app at /dashboard/developers under "My apps (OAuth)". You'll receive a
client_idand aclient_secret(save it — it won't be shown again). - Send your user to this URL (replace the parameters):
https://www.quicklyinv.co.il/api/oauth/authorize ?client_id=app_... &redirect_uri=https://your-app.com/oauth/callback &response_type=code &state=<random-csrf-token> &scope=read+write+reports - The user verifies an OTP with Quickly, approves the scopes, and returns to you with:
?code=...&state=... - Exchange the code for a token from your server:
curl -X POST https://www.quicklyinv.co.il/api/oauth/token \ -d "grant_type=authorization_code" \ -d "code=<from-redirect>" \ -d "redirect_uri=https://your-app.com/oauth/callback" \ -d "client_id=app_..." \ -d "client_secret=secret_..." # Response: { access_token, refresh_token, expires_in, scope } - Use the access_token as a Bearer in every call to
/api/v1/*. Refresh with:curl -X POST https://www.quicklyinv.co.il/api/oauth/token \ -d "grant_type=refresh_token" \ -d "refresh_token=..." \ -d "client_id=app_..." \ -d "client_secret=secret_..."
Ready to start building?
₪400/month + VAT. Cancel any time, no contract.
Enable API access from the dashboard