הפקת מסמכים מכל מערכת

ה-API של חשבונית בצ'ט מאפשר לאתר, לחנות, ל-CRM או לכל מערכת אחרת להפיק בשם העסק מסמכים חשבונאיים תקינים — הצעות מחיר, חשבוניות, קבלות וזיכויים — עם מספור רציף, PDF חתום דיגיטלית, מספר הקצאה מרשות המסים כשצריך, ושליחה ללקוח לפי הגדרות העסק.

Base URL
https://api.chat-invoice.co.il/v1
אימות
Authorization: Bearer ci_live_…
פורמט
JSON · תאריכים YYYY-MM-DD (שעון ישראל) · סכומים בש"ח, 2 ספרות אחרי הנקודה
מפרט
OpenAPI 3.1 · Reference · שגיאות

01התחלה מהירה

  1. יוצרים מפתח באפליקציה: הגדרות ← חיבורים ← חיבור API ← "צור מפתח". המפתח מוצג פעם אחת — שומרים אותו בצד השרת בלבד.
  2. בודקים את החיבור ורואים מה מותר לעסק:
    curl https://api.chat-invoice.co.il/v1/me -H "Authorization: Bearer $CHATINVOICE_API_KEY"
  3. מפיקים הצעת מחיר ללקוח חדש:
curl -X POST https://api.chat-invoice.co.il/v1/documents \
  -H "Authorization: Bearer $CHATINVOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: crm-8812" \
  -d '{"type":"quote","customer":{"name":"ישראל ישראלי בע\"מ","tax_id":"515123456","email":"billing@example.co.il","phone":"0501234567"},"items":[{"description":"הובלת דירה 4 חדרים","quantity":1,"unit_price":2500},{"description":"אריזה","quantity":10,"unit_price":45}],"title":"הצעה למעבר דירה","notes":"תוקף ההצעה 14 יום","external_ref":"crm-8812"}'
const res = await fetch("https://api.chat-invoice.co.il/v1/documents", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.CHATINVOICE_API_KEY,
    "Content-Type": "application/json",
    "Idempotency-Key": "crm-8812",
  },
  body: JSON.stringify({
    "type": "quote",
    "customer": {
      "name": "ישראל ישראלי בע\"מ",
      "tax_id": "515123456",
      "email": "billing@example.co.il",
      "phone": "0501234567"
    },
    "items": [
      {
        "description": "הובלת דירה 4 חדרים",
        "quantity": 1,
        "unit_price": 2500
      },
      {
        "description": "אריזה",
        "quantity": 10,
        "unit_price": 45
      }
    ],
    "title": "הצעה למעבר דירה",
    "notes": "תוקף ההצעה 14 יום",
    "external_ref": "crm-8812"
  }),
});
const doc = await res.json();
if (!res.ok) throw new Error(doc.error.code + ": " + doc.error.message);
console.log(doc.number, doc.view_url, doc.pdf_url);
import os, requests

r = requests.post(
    "https://api.chat-invoice.co.il/v1/documents",
    headers={
        "Authorization": f"Bearer {os.environ['CHATINVOICE_API_KEY']}",
        "Idempotency-Key": "crm-8812",
    },
    json={
        "type": "quote",
        "customer": {
            "name": "ישראל ישראלי בע\"מ",
            "tax_id": "515123456",
            "email": "billing@example.co.il",
            "phone": "0501234567"
        },
        "items": [
            {
                "description": "הובלת דירה 4 חדרים",
                "quantity": 1,
                "unit_price": 2500
            },
            {
                "description": "אריזה",
                "quantity": 10,
                "unit_price": 45
            }
        ],
        "title": "הצעה למעבר דירה",
        "notes": "תוקף ההצעה 14 יום",
        "external_ref": "crm-8812"
    },
    timeout=90,
)
doc = r.json()
if not r.ok:
    raise RuntimeError(f"{doc['error']['code']}: {doc['error']['message']}")
print(doc["number"], doc["view_url"], doc["pdf_url"])
$ch = curl_init("https://api.chat-invoice.co.il/v1/documents");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer " . getenv("CHATINVOICE_API_KEY"),
    "Content-Type: application/json",
    "Idempotency-Key: crm-8812",
  ],
  CURLOPT_POSTFIELDS => json_encode([
    "type" => "quote",
    "customer" => [
      "name" => "ישראל ישראלי בע\"מ",
      "tax_id" => "515123456",
      "email" => "billing@example.co.il",
      "phone" => "0501234567"
    ],
    "items" => [
      [
        "description" => "הובלת דירה 4 חדרים",
        "quantity" => 1,
        "unit_price" => 2500
      ],
      [
        "description" => "אריזה",
        "quantity" => 10,
        "unit_price" => 45
      ]
    ],
    "title" => "הצעה למעבר דירה",
    "notes" => "תוקף ההצעה 14 יום",
    "external_ref" => "crm-8812"
  ], JSON_UNESCAPED_UNICODE),
]);
$doc = json_decode(curl_exec($ch), true);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) { throw new Exception($doc["error"]["code"]); }
echo $doc["number"], " ", $doc["view_url"];

התשובה (201) מכילה את מספר המסמך, הסכומים כפי שחושבו, קישור צפייה וקישור PDF:

{
  "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "public_id": "RFayPUSCNKnD",
  "type": "quote",
  "number": 1328,
  "status": "open",
  "date": "2026-09-07",
  "due_date": null,
  "external_ref": "crm-8812",
  "customer": {
    "id": "3f9c2a1e-6b7d-4c8e-9f0a-1b2c3d4e5f60",
    "name": "ישראל ישראלי בע\"מ",
    "tax_id": "515123456"
  },
  "totals": {
    "subtotal": 2500,
    "discount": 0,
    "vat": 450,
    "vat_rate": 18,
    "total": 2950,
    "paid": 0,
    "currency": "ILS"
  },
  "allocation_number": null,
  "allocation": {
    "status": "not_required",
    "number": null,
    "reason": null
  },
  "delivery": {
    "status": "disabled",
    "channel": null,
    "scheduled_for": null
  },
  "view_url": "https://doc.chat-invoice.co.il/view/RFayPUSCNKnD",
  "pdf_url": "https://doc.chat-invoice.co.il/pdf/RFayPUSCNKnD",
  "based_on": null,
  "cancelled_at": null,
  "created_at": "2026-09-07T10:21:44.120Z"
}

ואותו דבר לחשבונית מס/קבלה על תשלום שהתקבל — הפעם ללקוח קיים לפי customer.id, עם אימות סכום:

{
  "type": "tax_invoice_receipt",
  "customer": {
    "id": "3f9c2a1e-6b7d-4c8e-9f0a-1b2c3d4e5f60"
  },
  "items": [
    {
      "description": "שירות חודשי — ספטמבר",
      "quantity": 1,
      "unit_price": 590
    }
  ],
  "payments": [
    {
      "method": "bank_transfer",
      "amount": 590,
      "reference": "778812"
    }
  ],
  "expected_total": 590,
  "external_ref": "order-10021"
}

02אימות ואבטחה

03מה מותר לעסק שלך

סוג העוסק קובע אילו מסמכים חוקי להפיק. עוסק פטור (וגם עמותה/מלכ"ר) לא מפיק חשבונית מס — הוא מפיק קבלה על תשלום וחשבונית עסקה כדרישת-תשלום. הבקשה תיענה ב-422 legal_type_forbidden ושום מספר לא יישרף. GET /v1/document-types מחזיר מראש רק מה שמותר לעסק.

typeעבריתEnglishpaymentsdiscountעוסק פטור / עמותה
quoteהצעת מחירQuoteאסורכןכן
orderהזמנהOrderאסורכןכן
delivery_noteתעודת משלוחDelivery noteאסורכןכן
return_noteהחזרה מלקוחReturn noteאסורכןכן
proformaחשבונית עסקהProforma invoiceאסורכןכן
tax_invoiceחשבונית מסTax invoiceאסורכןלא
tax_invoice_receiptחשבונית מס/קבלהTax invoice receiptחובהכןלא
receiptקבלהReceiptחובהלאכן
credit_noteחשבונית זיכויCredit noteאסורכןלא
donation_receiptקבלה על תרומהDonation receiptחובהלאכן
מה אתם לא שולחים: מספר מסמך, שיעור מע"מ, פטור ממע"מ, מספר הקצאה, סטטוס, סכומים סופיים. כל אלה נקבעים אצלנו לפי הגדרות העסק והחוק — שדה לא מוכר נדחה ב-400.

04סכומים, מע"מ ותשלומים

methodעבריתextra fields
cashמזומן
bank_transferהעברה בנקאיתreference
credit_cardכרטיס אשראיcard_last_digits, card_type
checkהמחאהcheck_number, check_date, bank_code, branch, account
bit · paybox · paypal · apple_pay · google_payביט · פייבוקס · PayPal · Apple Pay · Google Payreference

05מספר הקצאה (חשבונית ישראל)

חשבונית מס / חשבונית מס-קבלה / חשבונית זיכוי מעל 5,000 ₪ לפני מע"מ דורשת מספר הקצאה מרשות המסים כדי שהלקוח יוכל לקזז מע"מ. אם העסק מחובר לרשות המסים (tax_authority_connected ב-/v1/me) — אנחנו מבקשים את המספר אוטומטית אחרי ההפקה ומטביעים אותו ב-PDF.

06שליחה ללקוח

אם לעסק מופעלת שליחה אוטומטית (הגדרות ← אוטומציה), כל מסמך שמופק דרך ה-API נשלח ללקוח בערוץ שנבחר — וואטסאפ, מייל או שניהם — בדיוק כמו מסמך מהצ'אט, כולל שעות שקט (מסמך שמופק בלילה יוצא בבוקר). התשובה מדווחת ב-delivery.status: queued · deferred_quiet_hours (+scheduled_for) · no_recipient (אין טלפון/מייל בכרטיס) · disabled · suppressed · send_failed.

רוצים לשלוח בעצמכם? שלחו "send": false והשתמשו ב-view_url (עמוד צפייה) או pdf_url (קובץ). עותק לרו"ח נשלח לפי הגדרות העסק בלי קשר.

07ביטול וזיכוי

מסמך שהופק לא נמחק — המספר נשאר בפנקס.

{
  "type": "credit_note",
  "based_on": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "customer": {
    "id": "3f9c2a1e-6b7d-4c8e-9f0a-1b2c3d4e5f60"
  },
  "items": [
    {
      "description": "זיכוי — שירות חודשי ספטמבר",
      "quantity": 1,
      "unit_price": 590
    }
  ]
}

08מגבלות, מנוי וגרסאות

09שגיאות

כל שגיאה חוזרת באותו מבנה, עם קוד יציב, הסבר, המלצה מה לעשות, ודגל retryable:

{
  "error": {
    "code": "legal_type_forbidden",
    "message": "This business type may not issue the requested document type.",
    "message_he": "סוג העוסק אינו רשאי להפיק מסמך מסוג זה.",
    "hint": "GET /v1/document-types lists what this business may issue. An exempt dealer (osek patur) issues receipts / proforma invoices instead of tax invoices.",
    "retryable": false,
    "doc_url": "https://api.chat-invoice.co.il/docs/errors#legal_type_forbidden"
  },
  "request_id": "5f1c9b2e-0d4a-4b1e-9d1c-2f7a1b3c4d5e"
}

הקטלוג המלא: /docs/errors · גם כ-JSON: GET /v1/errors.

חשבונית בצ'ט · API v1.0 · עודכן 2026-09-07 · openapi.yaml · llms.txt