Skip to Content
Welcome to Zendera Knowledge Hub
For DevelopersZones & Pricing

Zones & Pricing API

v1

Resolve postal codes to zones within a zone area, compute the freight level for a set of packages, and read price list headers.

Zendera’s pricing and scheduling are keyed on two classifications: zones (where — postal codes grouped into zones within a zone area) and freight levels (how big — package profiles grouped into a freight level set). A price list binds one zone area and one freight level set together with a currency. These endpoints expose those classifications to your system.

Where this fits in your operation

  • Coverage check in your webshop: resolve the customer’s postcode to a zone before promising delivery — no zone, no coverage.
  • Pre-classify shipments: compute the freight level for a quote or for schedule-order, which needs fromZone/toZone and freightLevel.
  • Mirror pricing structure: read a price list’s header to know which zone area and freight level set your customer’s pricing is built on (price_list_id comes from the customer record).

Interactive API Explorer

Loading API Documentation...

Authentication

Authorization: apikey YOUR_API_KEY_HERE

Base URLs

  • Production: https://app.zenderatms.com/api/
  • Staging: https://staging.zenderatms.com/api/

Resolve postal codes to zones

POST /v1/zone-area/{zoneAreaId}/search-postal-codes

{ "postal_codes": ["0150", "5003"] }

Response: zone_by_postal_code — a map keyed by postcode, each value a zone with id, name, number, postcode_ranges, unique_id. Unmatched postcodes are omitted from the map.

There is a customer-scoped variant (uses the customer’s zone area implicitly) on the Customers API.

Compute the freight level for packages

POST /v1/freight-level/{freightLevelSetId}/level-for-products

{ "packages": [ { "weight": 25.0, "length": 120, "width": 80, "height": 100, "quantity": 2 } ] }

Dimensions are in cm; custom_units (map of unit ID → quantity) participates when the set has custom-unit conditions. Response: { "freight_level": 3 }. Returns 404 when no level in the set matches — a domain answer, not an error. The customer-scoped variant is on the Customers API.

Read a price list

GET /v1/price-list/{priceListId}

Returns the header: id, name, description, currency, freight_level_set and zone_area (each {id, name}), customers_count, and created/updated metadata. A customer’s price_list_id is on the customer record. 404 when the list doesn’t exist in your organization.

Common gotchas

  • snake_case JSON on all three endpoints (v1).
  • The zone map is sparse — diff requested postcodes against the response keys to find uncovered areas.
  • Freight-level 404 means “no match”, not failure.
  • Zone area and freight level set IDs also appear on route schedules — the same classifications drive slot matching.
  • Customers — customer-scoped zone and freight-level resolution
  • Route Scheduling — how zones and freight levels gate bookable intervals
Last updated on