Zeablue API - v2
Bookmarks:
GET: Customers - endpoint |
GET: Pricing tiers - endpoint |
GET: Products - endpoint |
GET: Inventory - endpoint |
GET: Orders - endpoint |
POST: Orders - endpoint |
GET: Invoices - endpoint |
GET: Tasks & Jobs - endpoint
Last updated: 2/03/2026
Version tracking
| 27/01/2022 |
Version 1 |
| 08/05/2024 |
Version 2 |
| 22/05/2025 |
Added sample order POST and response JSON
Added error codes in detail (in the order POST section) |
Fair usage
To keep our infrastructure fast and reliable for everyone, we monitor overall request and data transfer volumes. While standard usage is fully covered under your plan, setting extremely fast polling intervals or generating excessive call & data volumes beyond normal limits may result in additional API usage fees.
Authentication
Zeablue API is a REST API, and it uses basic authentication method. The API key and password combination of HTTP headers must be included in every API request.
For example:
using (WebClient wc = new WebClient())
{
wc.Headers.Set("Content-Type", "application/json");
wc.Headers.Add(" apikey ", "xxxxxxxxx");
wc.Headers.Add(" apipassword", "yyyyyyyyyy");
var EndPointUrl = "https://api.zeablue.com/Customers/";
byte[] xret = wc.DownloadData(EndPointUrl);
}
To obtain your API key and password, go to Settings > Zeablue API, then click "API key and settings" to open the credentials panel.
Failed credentials will be returned with a 403 (Forbidden) error code, whereas all successful API requests will be returned with a 200 OK HTTP code.
Other error codes:
- 401 Unauthorized
- 404 NotFound - the given record not found
- 429 TooManyRequests - when calling mode=all or calls on the master data records, the rate limit has been reached
GET https://api.zeablue.com/Customers/
Parameters:
- By default, no parameters are required. The API remembers the last request timestamp, and it returns all customer records that have been updated since the timestamp.
- Limited to one call every 10 minutes
- To retrieve all customer records, use mode=all
- GET https://api.zeablue.com/Customers/?mode=all
- The mode=all is limited to one call per day
Sample response JSON
{
"response": {
"customers": [
{
"id": "617",
"companyName": "3 Lads Automotive",
"email": "lads3@xtra.co.nz",
"phone": "92390594, 274993638",
"customerType": "Customer",
"status": "Active",
"addresses": [
{
"addressType": "Shipping",
"isDefault": true,
"country": "New Zealand"
},
{
"addressType": "Billing",
"isDefault": true,
"country": "New Zealand"
}
],
"updatedAt": "2023-12-12T04:43:32.46+00:00"
}
],
"totalCount": 1,
"lastUpdateTimestamp": "2023-12-12T04:38:06.550874+00:00"
}
}
GET https://api.zeablue.com/PricingTiers/
Parameters:
- By default, no parameters are required. The API remembers the last request timestamp, and it returns all pricing tiers that have been updated since the timestamp.
- Limited to one call every 30 minutes
- To retrieve all pricing tiers, use mode=all
- https://api.zeablue.com/PricingTiers/?mode=all
- The mode=all is limited to one call per day
Sample response JSON
{
"response": {
"pricingTiers": [
{
"id": "2a3952ed-c152-4062-b65e-6e2f2dda2b4f",
"name": "Tier 1",
"description": "For Everyone - Promotion_by_categories",
"discountType": "Percentage",
"minimumOrderValue": 0,
"validFrom": "2023-02-03T11:00:00+00:00",
"validTo": "2033-02-03T11:00:00+00:00",
"productPricing": [
{
"categoryName": "Smart Phones",
"categoryLevelNumber": 3,
"specialPrice": 1015.00,
"effectiveFrom": "2023-02-03T11:00:00+00:00",
"effectiveTo": "2033-02-03T11:00:00+00:00"
},
{
"productSku": "ABC",
"specialPrice": 200.00,
"effectiveFrom": "2023-02-03T11:00:00+00:00",
"effectiveTo": "2033-02-03T11:00:00+00:00"
}
],
"eligibleCustomers": [
"511",
"691",
"898",
"1082",
],
"status": "Active",
"updatedAt": "2023-12-12T04:48:40.8+00:00"
}
],
"totalCount": 1,
"lastUpdateTimestamp": "2023-12-12T04:43:28.9399168+00:00"
}
}
GET https://api.zeablue.com/Products/
Fields:
Parameters:
- No parameters are required. The API remembers the last request timestamp, and it returns all product records that have been updated since the timestamp.
- Limited to one call every 10 minutes
Sample response JSON
{
"response": {
"products": [
{
"id": "1e5a5297-c192-4adc-8e27-c8ed0db51ceb",
"sku": "FEE",
"name": "DIAGNOSTIC FEE",
"description": "Detailed body HTML description",
"unit": "Each",
"sellPrice": 90.000000,
"retailPrice": 120.000000,
"costPrice": 45.000000,
"categoryLevel1": "",
"categoryLevel2": "",
"categoryLevel3": "",
"categoryLevel4": "",
"brand": "",
"productType": "",
"tags": "",
"weight": 0.0,
"volume": 0.0,
"status": "Active",
"inventory": {
"quantityAvailable": 0.000000,
"quantityReserved": 0.000000,
"location": "Primary location",
"lastRestockDate": "2023-12-12T04:50:52.137+00:00",
"status": "Out of Stock"
},
"images": {
"url": "https://...",
"position": 1
},
"updatedAt": "2023-12-12T04:50:52.003+00:00"
}
],
"totalCount": 1,
"lastUpdateTimestamp": "2023-12-12T04:45:52.4326323+00:00"
}
}
GET https://api.zeablue.com/Inventory/
Gets the last changed inventory quantities.
- Current inventory = stock on hand
- Reserved = reserved for confirmed sales orders, or raw materials used in production jobs that are in progress
- Incoming = on outstanding purchase orders
- Receipted awaiting bill = on purchase orders that have been receipted but await for final landed cost calculations
- Available = Current inventory + Receipted awaiting bill - Reserved
Parameters:
- No parameters are required. The API remembers the last request timestamp, and it returns all inventory records that have been changed since the timestamp.
- Limited to one call every 10 minutes
Sample response JSON
{
"response": {
"inventory": [
{
"currentInventory": 0.000000,
"quantityAvailable": 0.000000,
"quantityReserved": 0.000000,
"quantityIncoming": 0.000000,
"quantityReceiptedAwaitingBill": 0.000000,
"location": "Primary location",
"status": "Out of Stock"
"sku": "ABC123"
"variationId": "24774e81-6d11-47ea-b46f-14a8f411c137",
},
{
"currentInventory": 0.000000,
"quantityAvailable": 0.000000,
"quantityReserved": 0.000000,
"quantityIncoming": 0.000000,
"quantityReceiptedAwaitingBill": 0.000000,
"location": "Secondary location",
"status": "Out of Stock"
"sku": "ABC123"
"variationId": "24774e81-6d11-47ea-b46f-14a8f411c137",
}
],
"lastUpdateTimestamp": "2023-12-12T04:45:52.4326323+00:00"
}
}
GET https://api.zeablue.com/Orders/
Parameters:
- By default, no parameters are required. The API remembers the last request timestamp, and it returns all sales order records that have been updated since the timestamp.
- Limited to one call every 30 minutes
- To retrieve the last 12 months of order history, use mode=all
- GET https://api.zeablue.com/Orders/?mode=all
- The mode=all is limited to one call per day
POST https://api.zeablue.com/Orders/
Use this endpoint to upload a new order.
Parameters:
- No parameters are required.
Error codes
| 204 |
No order content |
| 206 |
JSON request is invalid |
| 401 |
Unauthorized |
| 403 |
Permission denied, for example: POST orders permission is not allowed |
| 404 |
One or more SKUs not found on Zeablue; or the customer details have not been given |
| 409 |
Order number already saved or exists |
Sample request POST JSON
{
"qblueOrder": {
"orderNumber": "ORD-12345",
"customerName": "John Doe",
"reference": "customer order no.",
"orderDate": "2025-04-02T10:15:30Z",
"invoiceDate": "",
"expectedDeliveryDate": "",
"currency": "NZD",
"exchangeRate": 1.0,
"contactFirstName": "John",
"contactLastName": "Doe",
"deliveryCompanyName": "",
"deliveryAddress1": "123 Main St",
"deliveryAddress2": "Apt 4B",
"suburb": "",
"city": "Auckland",
"country": "New Zealand",
"state": "Auckland",
"postcode": "6166",
"contactPhone": "+1234567890",
"contactEmail": "john.doe@example.com",
"shippingCharge": 4.99,
"shippingInstructions": "Please leave by the back door",
"items": [
{
"sku": "518",
"productDescription": "Product Name",
"orderQuantity": 2,
"unitPrice": 19.99,
"unitDiscountType": "",
"unitDiscountValue": 0,
"lineValue": 39.98,
"itemTaxable": "yes",
"lineComment": ""
}
],
"orderStatus": "Processing",
"userStatus": "",
"orderNotes": "Please leave by the back door",
"orderTotalDiscount": 0.00,
"orderDiscountTitle": "WELCOME10",
"orderLocation": "",
"prepaidAmount": 52.97,
"paymentMethod": "Credit card",
"salespersonName": "",
"shippingMethod": {
"name": "Courier"
}
}
}
Sample response JSON:
{
"qblueOrder": {
"id": "a7cee79a-59f5-4fa0-9d15-ecaee9358161",
"qblueOrderNumber": 2505059,
"orderNumber": "ORD-12345",
"customerName": "John Doe",
"orderDate": "2025-04-02T10:15:30+00:00",
"currency": "NZD",
"exchangeRate": 1.0,
"contactFirstName": "John",
"contactLastName": "Doe",
"customer": {
"id": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+1234567890"
},
"items": [
{
"sku": "518",
"productDescription": "Product Name",
"orderQuantity": 2.0,
"unitPrice": 19.99,
"unitDiscountType": "",
"unitDiscountValue": 0.0,
"lineValue": 39.98,
"itemTaxable": "yes",
"lineComment": ""
}
],
"prepaidAmount": 52.97,
"shippingCharge": 4.99,
"shippingInstructions": "Please leave by the back door",
"deliveryCompanyName": "",
"deliveryAddress1": "123 Main St",
"deliveryAddress2": "Apt 4B",
"suburb": "",
"city": "Auckland",
"state": "Auckland",
"country": "New Zealand",
"postcode": "6166",
"contactPhone": "+1234567890",
"contactEmail": "john.doe@example.com",
"orderStatus": "Processing",
"userStatus": "",
"orderLocation": "",
"salespersonName": "",
"orderNotes": "Please leave by the back door",
"orderTotalDiscount": 0.00,
"orderDiscountTitle": "WELCOME10"
"websiteOrderNo": "1234567"
"paymentTerm": "7 days after invoice date"
}
}
GET https://api.zeablue.com/Invoices/
Parameters:
- By default, no parameters are required. The API remembers the last request timestamp, and it returns all invoices that have been created since the timestamp.
- Only sales invoices and credit notes will be returned
- All invoice item lines will be returned, these include inventory items and non-diminishing items
- Note: by default, COGS for non-diminishing items are not enabled to sync to Xero
- Limited to one call every 30 minutes
Sample invoices response JSON:
{
"response": {
"invoices": [ {
"id": "a7cee79a-59f5-4fa0-9d15-ecaee9358161",
"qblueInvoiceNumber": "2505059",
"orderNumber": "2505059",
"customerName": "John Doe",
"invoiceDate": "2025-04-02T00:00:00",
"currency": "NZD",
"exchangeRate": 1.0,
"contactFirstName": "John",
"contactLastName": "Doe",
"customer": {
"id": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+1234567890"
},
"items": [
{
"sku": "518",
"productDescription": "Product Name",
"orderQuantity": 2.0,
"unitPrice": 19.99,
"unitDiscountType": "",
"unitDiscountValue": 0.0,
"lineValue": 39.98,
"itemTaxable": "yes",
"lineComment": "",
"unitCost": 10,
"isNonDiminishing": false
}
],
"prepaidAmount": 52.97,
"shippingCharge": 4.99,
"shippingInstructions": "Please leave by the back door",
"deliveryCompanyName": "",
"deliveryAddress1": "123 Main St",
"deliveryAddress2": "Apt 4B",
"suburb": "",
"city": "Auckland",
"state": "Auckland",
"country": "New Zealand",
"postcode": "6166",
"contactPhone": "+1234567890",
"contactEmail": "john.doe@example.com",
"orderStatus": "Processing",
"orderLocation": "",
"orderNotes": "Please leave by the back door",
"paymentTerm": "7 days after invoice date"
} ]
}
}
GET https://api.zeablue.com/Tasks/
Parameters:
- By default, no parameters are required. The API remembers the last request timestamp, and it returns all tasks that have been created or updated since the timestamp.
- Limited to one call every 10 minutes
Sample invoices response JSON:
{
"response": {
"tasks": [
{
"noteId": "27517b22-ab3a-4d98-af32-e2e2ba133caa",
"authorName": "Author",
"dateEntered": "2024-12-05T00:00:00",
"reminderDate": "2024-12-08T10:00:00",
"lastUpdatedOn": "2024-12-06T14:18:13.74",
"priorityName": "Normal",
"isUrgent": false,
"priorityRank": 1,
"statusName": "New",
"noteTypeName": "To do",
"isClosed": false,
"isTask": true,
"objective": "Test device",
"taskId": 1858,
"active": true,
"daysElapsed": 614,
"locationName": "Main store",
"actionbyName": "ActionBy",
"orderStatus": "",
"customerProducts": []
},
{
"noteId": "a7bfe26a-fe81-40a8-8e5b-29cb2f62bb60",
"companyName": "Super Customer",
"authorName": "Author",
"dateEntered": "2025-06-23T00:00:00",
"reminderDate": "2025-06-25T11:00:00",
"lastUpdatedOn": "2025-06-24T14:18:09.67",
"priorityName": "Normal",
"isUrgent": false,
"priorityRank": 1,
"statusName": "In progress",
"noteTypeName": "To do",
"isClosed": false,
"isTask": true,
"objective": "Repair pallet",
"taskId": 1870,
"active": true,
"daysElapsed": 414,
"locationName": "Main store",
"actionbyName": "ActionBy",
"orderStatus": "",
"customerProducts": []
},
{
"noteId": "54d2a4d0-7f41-44de-8372-173b75542227",
"companyName": "A Company Ltd",
"authorName": "Author",
"dateEntered": "2025-03-20T00:00:00",
"reminderDate": "2025-03-27T05:00:00",
"lastUpdatedOn": "2025-03-25T14:18:07.127",
"priorityName": "Normal",
"isUrgent": false,
"priorityRank": 1,
"statusName": "In progress",
"noteTypeName": "To do",
"isClosed": false,
"isTask": true,
"objective": "Visit customer",
"orderReference": "2608006",
"taskId": 2503,
"active": true,
"daysElapsed": 144,
"locationName": "Main store",
"actionbyName": "ActionBy",
"dateCompleted": "2025-03-25T11:45:00",
"orderStatus": "Confirmed",
"customerProducts": [
{
"sku": "100595",
"productDescription": "Classic Varsity Top 25795 Small",
"quantity": 1.000000
},
{
"sku": "10350",
"productDescription": "Anchor Bracelet Mens 10350 Gold",
"quantity": 1.000000
}
]
}
],
"totalCount": 3,
"lastUpdateTimestamp": "2025-03-25T02:16:20.7496034+00:00"
}
}