The developer API issues Israeli tax documents (חשבונית מס, קבלה, חשבונית מס קבלה, חשבונית זיכוי and more), manages customers, previews totals, and notifies you of events by webhook. It is a plain JSON-over-HTTPS API; there is nothing to install.
- Base URL:
https://invoice.slk.co.il/api/billing/v1 - Machine-readable spec:
GET /api/billing/v1/openapi.json(OpenAPI 3.1, public) - Try it free: sandbox accounts — fake
SBX-documents, nothing real is issued
Endpoints at a glance#
| Method | Path | Purpose | Page |
|---|---|---|---|
| POST | /create-document | Issue a document (idempotent) | create-document |
| GET | /documents | Search issued documents, or fetch one by id | documents |
| GET / POST | /customers | Search / create customer cards | customers |
| POST | /calculate | Dry-run totals, nothing issued | calculate |
| GET | /openapi.json | This API's OpenAPI document | — |
| POST | /api/developers/sandbox | Open a free sandbox account | sandbox |
| POST | /api/mcp | MCP endpoint for AI agents | mcp |
Store and platform webhooks arrive at POST /api/billing/ecommerce/{source}/{hookId} — you do not call that yourself; see the dashboard's connector screens.
Authentication#
One API key per business. Send X-Api-Key: <key> or Authorization: Bearer <key>. The Invoice4U-compatible shape of create-document and calculate carries the key as token in the body instead. Details: authentication.
Tenancy#
The key identifies your business, and the whole request then runs inside that business's own isolated database. A key can never read or write another business's data. There is no tenant id to send.
Idempotency#
create-document is idempotent by apiIdentifier (your order id, invoice number, anything unique). The same identifier always returns the same document with alreadyExisted: true; a retry can never mint a second document number. A crashed first attempt is completed on the next retry. Reuse the identifier only for the same logical document — a second call with different content but the same identifier returns the original document, not a new one.
Money and numbers#
| Thing | Unit |
|---|---|
| Money | Integer agorot (₪1 = 100). Never floats. 118000 = ₪1,180.00 |
| Quantity | Integer thousandths: quantityMilli: 2500 = 2.5 units |
| VAT rate | Basis points: 1800 = 18%. Only 0 (exempt) and 1800 (the statutory rate) are accepted |
| Discount | Fixed: agorot (discountType: 1). Percent: percent × 100 (discountType: 2, 1250 = 12.5%) |
| Exchange rate | ILS per 1 unit × 1,000,000 (fxRateMillionths: 3710000 = 3.71) |
| Dates | YYYY-MM-DD. issueDate must be within 30 days back and 1 day ahead |
Absolute money values are limited to ±1,000,000,000,000 agorot. The Invoice4U-compatible shape uses shekel floats and converts them with rounding.
Rate limits#
600 requests per minute per API key, across REST and MCP. Over the limit you get 429 {"error":"rate limited"}. There is no Retry-After header; back off for a few seconds and retry. Sandbox signup and the connector receivers have their own per-IP limits.
Dormant accounts and plans#
- Reads always work (
GET /documents,GET /customers,POST /calculate), even before the business is switched on — so an integration can be built and verified early. - Writes are refused while the account is dormant:
403 {"error":"billing module is dormant (billing_enabled=0)"}. - Plan gates: issuing through the API needs a plan that includes API write access, and the plan's monthly document allowance applies. Both refuse with 422 and a Hebrew message, not 402/403.
Sandbox#
An account in sandbox mode accepts the same requests and validates the same way, but returns fake SBX-000123 numbers and writes nothing to the books. See sandbox.
Errors#
Errors are JSON {"error": "<message>"} (or {"d":{"IsSuccess":false,"ErrorMessage":"…"}} for the Invoice4U-compatible shape). Status codes: 400 bad JSON, 401 bad key, 403 dormant, 404 not found, 422 refused, 429 rate limited. See errors.
Viewing documents#
viewUrl in a create response points at the signed-in viewer (/billing/documents/<id>/view); it needs a dashboard session and is not a public link. PDF/print links in the compatible shape are the same URL.
Next#
authentication · create-document · webhooks · sdks · postman · changelog