Webhooks
Signed notifications that Zestt pushes to your HTTPS endpoints when events occur. Manage endpoints, send test events and redeliver past deliveries.
- GET/webhooks
- POST/webhooks
- GET/webhooks/{webhook_id}
- PATCH/webhooks/{webhook_id}
- DEL/webhooks/{webhook_id}
- POST/webhooks/{webhook_id}/test
- GET/webhooks/{webhook_id}/deliveries
- POST/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver
- EVENTorder.created
- EVENTorder.updated
- EVENTdocument.received
- EVENTjournal_lines.approved_for_export
The Webhook object
Attributes
{
"id": "wh_01J9KR2B7N",
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"status": "active",
"description": "Priority ERP: orders and documents",
"last_delivery_at": "2026-09-14T09:48:33+03:00",
"consecutive_failures": 0,
"created_at": "2026-09-01T11:20:00+03:00"
}
/webhooksResponses
200All of the account's webhook endpoints.
Show 8 child attributesHide child attributes
curl "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks", {
method: "GET",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.get(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.GetAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks");
var data = await res.Content.ReadAsStringAsync();
{
"data": [
{
"id": "wh_01J9KR2B7N",
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"status": "active",
"description": "Priority ERP: orders and documents",
"last_delivery_at": "2026-09-14T09:48:33+03:00",
"consecutive_failures": 0,
"created_at": "2026-09-01T11:20:00+03:00"
},
{
"id": "wh_01J9KP6A3E",
"url": "https://erp-staging.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated"
],
"status": "failing",
"description": "Priority ERP staging",
"last_delivery_at": "2026-09-11T09:40:13+03:00",
"consecutive_failures": 6,
"created_at": "2026-08-20T14:05:00+03:00"
}
]
}
/webhooksCreate an endpoint that receives signed event notifications. The response includes the signing secret, which is shown only once. The number of endpoints you can create depends on your plan.
Request body application/json
Responses
201The created webhook endpoint. This is the only response that includes the secret.
403The credential is valid but is not allowed to make this request. The code is scope_missing, plan_required, ip_not_allowed or client_suspended.
422The request body or query parameters failed validation. See errors[] for each invalid field.
curl -X POST "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"description": "Priority ERP: orders and documents"
}'const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks", {
method: "POST",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"description": "Priority ERP: orders and documents"
}),
});
const data = await res.json();import requests
res = requests.post(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
json={
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"description": "Priority ERP: orders and documents"
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var body = new StringContent("""
{
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"description": "Priority ERP: orders and documents"
}
""", Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks", body);
var data = await res.Content.ReadAsStringAsync();
{
"id": "wh_01J9KR2B7N",
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"status": "active",
"description": "Priority ERP: orders and documents",
"last_delivery_at": null,
"consecutive_failures": 0,
"created_at": "2026-09-01T11:20:00+03:00",
"secret": "whsec_XXXXXXXXXXXXXXXXXXXXXXXX"
}{
"type": "https://developers.zester.co.il/errors/scope_missing",
"title": "Scope missing",
"status": 403,
"code": "scope_missing",
"detail": "This API client does not have the webhooks:manage scope. Add it in Settings → Developers.",
"request_id": "req_01J9KR2A6M"
}{
"type": "https://developers.zester.co.il/errors/validation_error",
"title": "Validation failed",
"status": 422,
"code": "validation_error",
"detail": "2 fields are invalid",
"request_id": "req_01J9KR2A9T",
"errors": [
{
"field": "url",
"code": "must_be_https",
"message": "Webhook URLs must use https"
},
{
"field": "events[2]",
"code": "unknown_event_type",
"message": "\"document.delivered\" is not an event type"
}
]
}
/webhooks/{webhook_id}Path parameters
Responses
200The webhook endpoint.
404The resource does not exist or belongs to another account.
curl "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N", {
method: "GET",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.get(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.GetAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N");
var data = await res.Content.ReadAsStringAsync();
{
"id": "wh_01J9KR2B7N",
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"document.received"
],
"status": "active",
"description": "Priority ERP: orders and documents",
"last_delivery_at": "2026-09-14T09:48:33+03:00",
"consecutive_failures": 0,
"created_at": "2026-09-01T11:20:00+03:00"
}{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Webhook endpoint wh_01J9KR2B7N does not exist on this account.",
"request_id": "req_01J9KV2D3N"
}
/webhooks/{webhook_id}Path parameters
Request body application/json
Responses
200The updated webhook endpoint.
404The resource does not exist or belongs to another account.
curl -X PATCH "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…" \
-H "Content-Type: application/json" \
-d '{
"events": [
"order.created",
"order.updated",
"order.cancelled",
"document.received",
"document.disputed"
]
}'const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N", {
method: "PATCH",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
"Content-Type": "application/json",
},
body: JSON.stringify({
"events": [
"order.created",
"order.updated",
"order.cancelled",
"document.received",
"document.disputed"
]
}),
});
const data = await res.json();import requests
res = requests.patch(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
json={
"events": [
"order.created",
"order.updated",
"order.cancelled",
"document.received",
"document.disputed"
]
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var body = new StringContent("""
{
"events": [
"order.created",
"order.updated",
"order.cancelled",
"document.received",
"document.disputed"
]
}
""", Encoding.UTF8, "application/json");
var res = await http.PatchAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N", body);
var data = await res.Content.ReadAsStringAsync();
{
"id": "wh_01J9KR2B7N",
"url": "https://erp.example.com/zestt/webhooks",
"events": [
"order.created",
"order.updated",
"order.cancelled",
"document.received",
"document.disputed"
],
"status": "active",
"description": "Priority ERP: orders and documents",
"last_delivery_at": "2026-09-14T09:48:33+03:00",
"consecutive_failures": 0,
"created_at": "2026-09-01T11:20:00+03:00"
}{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Webhook endpoint wh_01J9KR2B7N does not exist on this account.",
"request_id": "req_01J9KV3F8Q"
}
/webhooks/{webhook_id}Path parameters
Responses
204The webhook endpoint was deleted.
404The resource does not exist or belongs to another account.
curl -X DELETE "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N", {
method: "DELETE",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.delete(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.DeleteAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N");
var data = await res.Content.ReadAsStringAsync();
No response body{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Webhook endpoint wh_01J9KR2B7N does not exist on this account.",
"request_id": "req_01J9KV4G1R"
}
/webhooks/{webhook_id}/testPath parameters
Responses
200The result of delivering a signed ping event to the endpoint.
404The resource does not exist or belongs to another account.
curl -X POST "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/test" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/test", {
method: "POST",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.post(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/test",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.PostAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/test", null);
var data = await res.Content.ReadAsStringAsync();
{
"id": "whd_01J9KR2C9M",
"event_id": "evt_01J9KR2C8V5W",
"event_type": "ping",
"attempt": 1,
"status": "succeeded",
"response_status": 200,
"response_time_ms": 187,
"response_snippet": "{\"received\":true}",
"error": null,
"attempted_at": "2026-09-01T11:21:30+03:00",
"next_retry_at": null
}{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Webhook endpoint wh_01J9KR2B7N does not exist on this account.",
"request_id": "req_01J9KR2C7S"
}
/webhooks/{webhook_id}/deliveriesPath parameters
Query parameters
Opaque cursor returned as next_cursor in a previous response. Pass it to fetch the next page.
Responses
200A page of delivery attempts for the endpoint.
Show 11 child attributesHide child attributes
curl "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries?limit=3" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries?limit=3", {
method: "GET",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.get(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries?limit=3",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.GetAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries?limit=3");
var data = await res.Content.ReadAsStringAsync();
{
"data": [
{
"id": "whd_01J9KS9F7K",
"event_id": "evt_01J9KS9C1E7H",
"event_type": "document.received",
"attempt": 2,
"status": "succeeded",
"response_status": 200,
"response_time_ms": 164,
"response_snippet": "{\"received\":true}",
"error": null,
"attempted_at": "2026-09-14T09:48:33+03:00",
"next_retry_at": null
},
{
"id": "whd_01J9KS9D2F",
"event_id": "evt_01J9KS9C1E7H",
"event_type": "document.received",
"attempt": 1,
"status": "failed",
"response_status": 500,
"response_time_ms": 1840,
"response_snippet": "<html><body><h1>500 Internal Server Error</h1></body></html>",
"error": "Endpoint returned HTTP 500",
"attempted_at": "2026-09-14T09:47:32+03:00",
"next_retry_at": "2026-09-14T09:48:32+03:00"
},
{
"id": "whd_01J9KR8C4B",
"event_id": "evt_01J9KR4D6N2Q",
"event_type": "order.updated",
"attempt": 1,
"status": "succeeded",
"response_status": 200,
"response_time_ms": 211,
"response_snippet": "{\"received\":true}",
"error": null,
"attempted_at": "2026-09-11T09:40:13+03:00",
"next_retry_at": null
}
],
"next_cursor": "eyJiZWZvcmUiOiJ3aGRfMDFKOUtSOEM0QiJ9",
"has_more": true
}
/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliverPath parameters
Responses
202The redelivery is queued.
404The resource does not exist or belongs to another account.
curl -X POST "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries/whd_01J9KS9D2F/redeliver" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries/whd_01J9KS9D2F/redeliver", {
method: "POST",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.post(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries/whd_01J9KS9D2F/redeliver",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.PostAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/webhooks/wh_01J9KR2B7N/deliveries/whd_01J9KS9D2F/redeliver", null);
var data = await res.Content.ReadAsStringAsync();
No response body{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Delivery whd_01J9KS9D2F does not exist for webhook endpoint wh_01J9KR2B7N.",
"request_id": "req_01J9KV5H4T"
}
Events delivered to your endpoint
order.created
POST to your endpointOccurs when a buyer places a new order with the supplier. The new order's status is pending_approval.
Payload application/json
pingorder.createdorder.updatedorder.cancelledorder.status_changeddocument.createddocument.updateddocument.receiveddocument.disputeddocument.approved_for_exportexpense.createdexpense.approvedjournal_lines.approved_for_exportinventory_count.completedsupplier.updatedcard_transaction.importedbuyer.linkedprice_list.assignedapi_client.suspendedwebhook.disabledThe resource as it was when the event occurred. Always includes object and id.
Expected response
2XXAcknowledges the delivery. Any other status is retried with exponential backoff, up to 8 attempts over about 24 hours.
{
"id": "evt_01J9KQ7X4M9C",
"type": "order.created",
"api_version": "2",
"occurred_at": "2026-09-11T08:15:00+03:00",
"account_id": "72223",
"data": {
"object": "order",
"id": "2335619",
"number": "71148-80",
"status": "pending_approval",
"buyer": {
"id": "71148",
"name": "שניצי קפה",
"customer_number": "777077070"
},
"supplier": {
"id": "72223",
"name": "מאפייה אחת עשרה"
},
"branch": {
"id": "71148-1",
"name": "שניצי קפה – ראשי",
"tax_id": "000000000"
},
"purchase_type": null,
"sent_at": "2026-09-11T08:15:00+03:00",
"delivery_date": "2026-09-14",
"delivery_window": {
"from": "06:00",
"to": "09:00"
},
"currency": "ILS",
"totals": {
"before_vat": "496.40",
"vat": "89.35",
"with_vat": "585.75"
},
"lines": [
{
"id": "l1",
"sku": "300",
"name": "בייבי ג׳בטה לבן",
"quantity": "1",
"unit": "carton",
"package_quantity": "24",
"unit_price": "80.00",
"discount_pct": null,
"vat_exempt": false,
"total": "80.00",
"quantity_confirmed": null,
"substitute_sku": null
},
{
"id": "l2",
"sku": "412",
"name": "לחמניית חיטה מלאה",
"quantity": "12",
"unit": "carton",
"package_quantity": "40",
"unit_price": "34.70",
"discount_pct": null,
"vat_exempt": false,
"total": "416.40",
"quantity_confirmed": null,
"substitute_sku": null
}
],
"notes": "נא לפרוק ליד דלת השירות, הכניסה מהחניה האחורית.",
"external_ref": null,
"acknowledged_at": null,
"related_document_ids": [],
"files": [],
"created_at": "2026-09-11T08:02:31+03:00",
"updated_at": "2026-09-11T08:15:00+03:00",
"deleted_at": null
}
}
order.updated
POST to your endpointOccurs when an order's lines, dates or status change, including when its status becomes cancelled_after_approval.
Payload application/json
pingorder.createdorder.updatedorder.cancelledorder.status_changeddocument.createddocument.updateddocument.receiveddocument.disputeddocument.approved_for_exportexpense.createdexpense.approvedjournal_lines.approved_for_exportinventory_count.completedsupplier.updatedcard_transaction.importedbuyer.linkedprice_list.assignedapi_client.suspendedwebhook.disabledThe resource as it was when the event occurred. Always includes object and id.
Expected response
2XXAcknowledges the delivery.
{
"id": "evt_01J9KR4D6N2Q",
"type": "order.updated",
"api_version": "2",
"occurred_at": "2026-09-11T09:40:12+03:00",
"account_id": "72223",
"data": {
"object": "order",
"id": "2335619",
"number": "71148-80",
"status": "partially_approved",
"buyer": {
"id": "71148",
"name": "שניצי קפה",
"customer_number": "777077070"
},
"supplier": {
"id": "72223",
"name": "מאפייה אחת עשרה"
},
"branch": {
"id": "71148-1",
"name": "שניצי קפה – ראשי",
"tax_id": "000000000"
},
"purchase_type": null,
"sent_at": "2026-09-11T08:15:00+03:00",
"delivery_date": "2026-09-14",
"delivery_window": {
"from": "06:00",
"to": "09:00"
},
"currency": "ILS",
"totals": {
"before_vat": "496.40",
"vat": "89.35",
"with_vat": "585.75"
},
"lines": [
{
"id": "l1",
"sku": "300",
"name": "בייבי ג׳בטה לבן",
"quantity": "1",
"unit": "carton",
"package_quantity": "24",
"unit_price": "80.00",
"discount_pct": null,
"vat_exempt": false,
"total": "80.00",
"quantity_confirmed": "1",
"substitute_sku": null
},
{
"id": "l2",
"sku": "412",
"name": "לחמניית חיטה מלאה",
"quantity": "12",
"unit": "carton",
"package_quantity": "40",
"unit_price": "34.70",
"discount_pct": null,
"vat_exempt": false,
"total": "416.40",
"quantity_confirmed": "10",
"substitute_sku": null
}
],
"notes": "נא לפרוק ליד דלת השירות, הכניסה מהחניה האחורית.",
"external_ref": null,
"acknowledged_at": null,
"related_document_ids": [],
"files": [],
"created_at": "2026-09-11T08:02:31+03:00",
"updated_at": "2026-09-11T09:40:12+03:00",
"deleted_at": null
}
}
document.received
POST to your endpointOccurs when the buyer receives a supplier document. data.differences lists any gaps between what the supplier issued and what the buyer received.
Payload application/json
pingorder.createdorder.updatedorder.cancelledorder.status_changeddocument.createddocument.updateddocument.receiveddocument.disputeddocument.approved_for_exportexpense.createdexpense.approvedjournal_lines.approved_for_exportinventory_count.completedsupplier.updatedcard_transaction.importedbuyer.linkedprice_list.assignedapi_client.suspendedwebhook.disabledThe resource as it was when the event occurred. Always includes object and id.
Expected response
2XXAcknowledges the delivery.
{
"id": "evt_01J9KS9C1E7H",
"type": "document.received",
"api_version": "2",
"occurred_at": "2026-09-14T09:47:31+03:00",
"account_id": "72223",
"data": {
"object": "document",
"id": "5520931",
"type": "delivery_note",
"number": "4471",
"date": "2026-09-14",
"accounting_period": "2026-09",
"due_date": null,
"supplier": {
"id": "72223",
"name": "מאפייה אחת עשרה"
},
"buyer": {
"id": "71148",
"name": "שניצי קפה"
},
"branch": {
"id": "71148-1",
"name": "שניצי קפה – ראשי",
"tax_id": "000000000"
},
"purchase_type": null,
"source": "purchase",
"order_ids": [
"2335619"
],
"currency": "ILS",
"totals": {
"before_vat": "496.40",
"vat": "89.35",
"with_vat": "585.75",
"discount": "0.00"
},
"allocation_number": null,
"lines": [
{
"id": "5520931-1",
"sku": "300",
"name": "בייבי ג׳בטה לבן",
"quantity": "1",
"unit": "carton",
"unit_price": "80.00",
"discount_pct": null,
"vat_exempt": false,
"total": "80.00",
"order_id": "2335619",
"order_line_id": "l1",
"quantity_received": "1",
"purchase_type": null,
"expense_account": null
},
{
"id": "5520931-2",
"sku": "412",
"name": "לחמניית חיטה מלאה",
"quantity": "12",
"unit": "carton",
"unit_price": "34.70",
"discount_pct": null,
"vat_exempt": false,
"total": "416.40",
"order_id": "2335619",
"order_line_id": "l2",
"quantity_received": "10",
"purchase_type": null,
"expense_account": null
}
],
"buyer_status": "received_with_differences",
"differences": [
{
"line_id": "5520931-2",
"sku": "412",
"field": "quantity",
"issued": "12",
"received": "10",
"note": "התקבלו 10 קרטונים מתוך 12"
}
],
"payment_status": "unpaid",
"paid_at": null,
"export_status": "not_ready",
"exported_at": null,
"external_ref": "DN-2026-4471",
"created_at": "2026-09-14T06:12:04+03:00",
"updated_at": "2026-09-14T09:47:31+03:00",
"deleted_at": null,
"files": [
{
"id": "file_01J9KQ7X4M",
"name": "delivery-note-4471.pdf",
"content_type": "application/pdf",
"size_bytes": 184213
}
]
}
}
journal_lines.approved_for_export
POST to your endpointOccurs when journal lines in a buyer account are approved for export.
Payload application/json
pingorder.createdorder.updatedorder.cancelledorder.status_changeddocument.createddocument.updateddocument.receiveddocument.disputeddocument.approved_for_exportexpense.createdexpense.approvedjournal_lines.approved_for_exportinventory_count.completedsupplier.updatedcard_transaction.importedbuyer.linkedprice_list.assignedapi_client.suspendedwebhook.disabledThe resource as it was when the event occurred. Always includes object and id.
Expected response
2XXAcknowledges the delivery.
{
"id": "evt_01J9KT6J2P5X",
"type": "journal_lines.approved_for_export",
"api_version": "2",
"occurred_at": "2026-09-15T09:12:37+03:00",
"account_id": "71148",
"data": {
"object": "journal_lines",
"id": "jla_01J9KT6J2P",
"document_id": "5520931",
"document_type": "delivery_note",
"document_number": "4471",
"branch_id": "71148-1",
"accounting_period": "2026-09",
"line_count": 3,
"lines": [
{
"id": "jl_90311",
"document_id": "5520931",
"document_type": "delivery_note",
"document_number": "4471",
"source": "purchase",
"side": "debit",
"account": "6100",
"counter_account": "2001",
"amount": "496.40",
"currency": "ILS",
"description": "מאפייה אחת עשרה, תעודת משלוח 4471 (הזמנה 2335619), מאפה",
"vendor_id": "72223",
"vendor_tax_id": "000000000",
"branch_id": "71148-1",
"branch_tax_id": "000000000",
"purchase_type": "FC",
"category_id": null,
"reference": "4471",
"allocation_number": null,
"doc_date": "2026-09-14",
"accounting_period": "2026-09",
"movement_type_code": "חס",
"batch_number": "1187",
"status": "approved_for_export",
"export_batch_id": null,
"exported_at": null,
"updated_at": "2026-09-15T09:12:37+03:00"
},
{
"id": "jl_90312",
"document_id": "5520931",
"document_type": "delivery_note",
"document_number": "4471",
"source": "purchase",
"side": "vat",
"account": "1520",
"counter_account": "2001",
"amount": "89.35",
"currency": "ILS",
"description": "מאפייה אחת עשרה, תעודת משלוח 4471, מע״מ תשומות 18%",
"vendor_id": "72223",
"vendor_tax_id": "000000000",
"branch_id": "71148-1",
"branch_tax_id": "000000000",
"purchase_type": "FC",
"category_id": null,
"reference": "4471",
"allocation_number": null,
"doc_date": "2026-09-14",
"accounting_period": "2026-09",
"movement_type_code": "חס",
"batch_number": "1187",
"status": "approved_for_export",
"export_batch_id": null,
"exported_at": null,
"updated_at": "2026-09-15T09:12:37+03:00"
},
{
"id": "jl_90313",
"document_id": "5520931",
"document_type": "delivery_note",
"document_number": "4471",
"source": "purchase",
"side": "credit",
"account": "2001",
"counter_account": "6100",
"amount": "585.75",
"currency": "ILS",
"description": "מאפייה אחת עשרה, תעודת משלוח 4471, זכות ספק",
"vendor_id": "72223",
"vendor_tax_id": "000000000",
"branch_id": "71148-1",
"branch_tax_id": "000000000",
"purchase_type": "FC",
"category_id": null,
"reference": "4471",
"allocation_number": null,
"doc_date": "2026-09-14",
"accounting_period": "2026-09",
"movement_type_code": "חס",
"batch_number": "1187",
"status": "approved_for_export",
"export_batch_id": null,
"exported_at": null,
"updated_at": "2026-09-15T09:12:37+03:00"
}
]
}
}