Developer API · ₪400/month

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.

1

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.

2

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.

3

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 · reports

The 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:sync

Triggers israeli-bank-scrapers on demand. Requires explicit consent when creating the key. Not enabled by the general write scope.

email-scan:write

Approve/reject items detected by email scanning (Pro). Allows bypassing the dashboard's human review.

whatsapp:send

Proactive 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.

GET
/api/v1/invoices?month=YYYY-MM

List of invoices in a given month (up to 200).

POST
/api/v1/invoices

Creates a tax invoice / receipt / invoice-receipt / credit invoice. Accepts client_id and items[].

GET
/api/v1/invoices/{id}

Details of a single invoice (including allocation_number).

PATCH
/api/v1/invoices/{id}

Update allowed fields (status / notes / payment_method).

GET
/api/v1/invoices/{id}/pdf

Returns the invoice PDF as application/pdf.

POST
/api/v1/invoices/{id}/mark-paid

Marks as paid and automatically issues a receipt in the same call — compliant with the Israeli legal requirement to issue a receipt upon receiving payment.

POST
/api/v1/invoices/{id}/credit

Issues a credit invoice (full by default, partial with items[]).

POST
/api/v1/invoices/{id}/send

Sends the invoice to the client on WhatsApp with a PDF; if the 24-hour window has expired, an approved template is sent.

POST
/api/v1/invoices/{id}/reminder

Payment 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.

GET
/api/v1/quotes?month=YYYY-MM

List of quotes.

POST
/api/v1/quotes

Creates a new quote.

POST
/api/v1/quotes/{id}/convert

Converts a quote into an invoice. With type=receipt + payment_method it creates an invoice-receipt in one step.

GET
/api/v1/delivery-notes?month=YYYY-MM

List of delivery notes.

POST
/api/v1/delivery-notes

Creates 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.

GET
/api/v1/clients

List of clients with accumulated outstanding balance.

POST
/api/v1/clients

Creates a new client.

POST
/api/v1/clients/{id}/send

Sends 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
GET
/api/v1/expenses?month=YYYY-MM

List of expenses.

POST
/api/v1/expenses

Manual expense recording.

POST
/api/v1/expenses/scan

OCR 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.

GET
/api/v1/bank/accounts

Bank account metadata (without credentials).

GET
/api/v1/bank/transactions

Bank transactions with account_id/from/to/reconciled filters and lazy cursor-based streaming.

POST
/api/v1/bank/accounts/{id}/sync

Triggers the scraper on demand (israeli-bank-scrapers).

scope: bank:sync
GET
/api/v1/email-scan/pending

Queue of expenses detected from email and awaiting approval.

POST
/api/v1/email-scan/{id}/approve

Approves an item from the email and creates an expense record from it.

scope: email-scan:write
POST
/api/v1/email-scan/{id}/reject

Rejects an item from the email and marks it skipped.

scope: email-scan:write

Withholding tax

Withholding tax certificates for suppliers — documentation for the annual Form 856.

GET
/api/v1/withholding/certificates?active_on=YYYY-MM-DD

List of withholding certificates. active_on filters to those valid on the specified day.

POST
/api/v1/withholding/certificates

Records 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.

GET
/api/v1/webhooks

List of registered endpoints.

POST
/api/v1/webhooks

Registers a new endpoint. Returns the secret only once.

DELETE
/api/v1/webhooks

Deletes an endpoint by id.

Payments, reports & management

Payment links, accounting reports, and managing the keys themselves.

GET
/api/v1/ping

Health check — returns the business id, the key's scopes, and a server timestamp. Useful for the initial setup of an integration.

GET
/api/v1/usage?days=30

Summary 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.

POST
/api/v1/payments/link

Creates an HYP payment link for an existing invoice.

GET
/api/v1/reports/vat?from=&to=

VAT report.

GET
/api/v1/reports/profit-loss?from=&to=

Profit & loss report.

GET
/api/v1/reports/balance-sheet?as_of=

Balance sheet for a given day.

GET
/api/v1/stats?month=YYYY-MM

Monthly statistics.

GET
/api/v1/settings

Business 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 generationopenapi-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.

  1. Register your app at /dashboard/developers under "My apps (OAuth)". You'll receive a client_id and a client_secret (save it — it won't be shown again).
  2. 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
  3. The user verifies an OTP with Quickly, approves the scopes, and returns to you with:?code=...&state=...
  4. 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 }
  5. 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