The DJUST delivery module allows operators to configure shipping rules based on geographical areas and delivery modes. Two foundational concepts support this configuration:
Shipping zones — geographical areas (e.g. "France Metropolitan", "EU", "North America") used to define where shipping rules apply.
Shipping types — delivery modes proposed to customers at checkout (e.g. "Express", "Standard", "Click & Collect").
Together with logistic families, these entities form the building blocks of DJUST shipping rule configuration.
This guide covers how to create, manage, and configure shipping zones and types via the DJUST API.
Key Concepts
Shipping Zones
A shipping zone represents a geographical area used to scope shipping pricing and rules. Each zone has:
Field
Description
Rules
id
Unique identifier
Auto-generated or custom. Immutable after creation.
name
Display name
Required. Max 255 characters.
description
Optional description
Max 10,000 characters.
A shipping zone can contain locations — countries and, for France, individual departments. This allows fine-grained geographical scoping per zone.
Shipping Types
A shipping type represents a delivery mode that can be proposed to customers. Each type has:
Field
Description
Rules
id
Unique identifier
Auto-generated or custom. Immutable after creation.
name
Display name
Required. Max 255 characters.
description
Optional description
Max 10,000 characters.
createdAt
Creation timestamp
Read-only.
updatedAt
Last update timestamp
Read-only.
✅
Tip: There is no system-default shipping type. All shipping types are created explicitly by the operator.
The request body is an array of location objects. Each location has:
Field
Type
Required
Description
type
string
Yes
country or department
countryCode
string
Yes
ISO 3166-1 alpha-2 country code (e.g. FR, DE, US)
excludedDepartments
string[]
No
Only for type: country with countryCode: FR. List of French department codes to exclude.
Rules
department type is only allowed for countryCode: "FR". Using it for any other country returns F-E-012.
A country or department can only belong to one shipping zone at a time. If it is already assigned to another zone, it is automatically transferred to the new zone.
A zone can combine foreign countries and individual French departments.
flowchart LR
%% Styles (Readme)
classDef create fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d91;
classDef read fill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#1e1b4b;
classDef update fill:#e0f7fa,stroke:#06b6d4,stroke-width:2px,color:#0c4a6e;
classDef add fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;
classDef remove fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#7f1d1d;
classDef decision fill:#fff4e5,stroke:#f59e0b,stroke-width:2px,color:#7a3e00;
classDef place fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d;
classDef sys fill:#f2f4f7,stroke:#475569,stroke-width:2px,color:#111827;
classDef ok fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;
classDef stop fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#7f1d1d;
A["➕ Create shipping zones<br>POST /v1/shipping-zones"]:::create
A2["📦 Add locations<br>PATCH .../locations"]:::add
B["➕ Create shipping types<br>POST /v1/shipping-types"]:::create
C["➕ Create logistic families<br>POST /v1/logistic-families"]:::create
D["🔗 Attach categories<br>to logistic families"]:::add
E["✅ Configure shipping<br>price matrix"]:::place
A --> A2 --> E
B --> E
C --> D --> E
style A rx:8,ry:8
style A2 rx:8,ry:8
style B rx:8,ry:8
style C rx:8,ry:8
style D rx:8,ry:8
style E rx:8,ry:8
Best Practices
Use meaningful custom IDs — if you provide a custom id, make it descriptive and consistent (e.g. eu-west, express-24h). Once created, the ID cannot be changed.
Plan your zone structure — define your geographical zones before setting up shipping rules. Restructuring later requires recreating zones.
Keep names clear for checkout — shipping type names may be displayed to customers during checkout. Use clear, business-friendly labels.
Common Mistakes
Mistake
Consequence
How to avoid
Providing a duplicate id
409 Conflict error
Ensure IDs are unique across all shipping zones (or types)
Omitting name in the request body
422 validation error
name is always required
Exceeding max length on name or description
400 error
Keep name under 255 characters and description under 10,000
Trying to update the id after creation
id is immutable
Plan your identifiers before creating the resource
Using department type for a non-FR country
400 error (F-E-012)
Department-level locations are only supported for France
Deleting a shipping type still used in the price matrix
409 Conflict (F-E-042)
Remove all associated price matrix lines before deleting the type