Shipping Types
This guide covers how to create, manage, and configure shipping types via the Back-office and DJUST API.
Introduction
Shipping types are the delivery modes proposed to customers at checkout (e.g. "Express", "Standard", "Click & Collect"). They are one of the building blocks of the DJUST shipping module and are later referenced in the shipping price matrix.
Managing Shipping Types from the Back-Office
Most operators manage shipping types directly from the DJUST Back-Office. The API described below performs the same actions and is intended for integrators.
Tip:There is no system-default shipping type. All shipping types are created explicitly by the operator.
Where to find it
Settings → Shipping fee management → Shipping types
List view
The list view displays all existing shipping types with:
- Search — free-text on name and id (case- and accent-insensitive)
- Sorting — by name, creation date, or last update
- Row actions — Edit, Delete
Creating a shipping type
Click on "Create shipping type" and fill in the form :
- Name (required) — Display name (up to 255 characters). May be shown to customers at checkout.
- Description — Additional context (up to 10,000 characters).
- ID — Custom identifier. Auto-generated if left blank. Immutable after creation. Must be unique.
Editing a shipping type
Only Name and Description can be modified. The ID is locked once the shipping type is created.
Deleting a shipping type
Deletion is blocked if the shipping type is still referenced in the shipping price matrix. The Back-Office displays an error and lists the associated price rows. Remove them first, then retry the deletion.
Warning: You must remove all shipping price matrix lines referencing this shipping type before it can be deleted.
Using the API
The API mirrors the Back-Office actions above. It is intended for integrators building automated flows or a custom Back-Office.
| 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. |
Key Endpoints
| Action | Method | Path | OperationId | Response |
|---|---|---|---|---|
| Create a shipping type | POST | /v1/shipping-types | ADM-SHIPPING-TYPE-100 | 201 Created |
| Update a shipping type | PUT | /v1/shipping-types/{id} | ADM-SHIPPING-TYPE-200 | 204 No Content |
| Delete a shipping type | DELETE | /v1/shipping-types/{id} | ADM-SHIPPING-TYPE-350 | 204 No Content |
| Get a shipping type by ID | GET | /v1/shipping-types/{id} | ADM-SHIPPING-TYPE-500 | 200 OK |
| List shipping types | GET | /v1/shipping-types | ADM-SHIPPING-TYPE-550 | 200 OK |
All endpoints require dj-client: OPERATOR and dj-api-key headers.
Creating a Shipping Type
POST /v1/shipping-types
dj-client: OPERATOR
dj-api-key: {{apiKey}}
Content-Type: application/jsonRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
id | string | No | Custom identifier. Auto-generated if omitted. Immutable after creation. Must be unique. |
name | string | Yes | Display name of the shipping type (max 255 characters) |
description | string | No | Description of the shipping type (max 10,000 characters) |
Example
{
"id": "express-24h",
"name": "Express 24h",
"description": "Next business day delivery for eligible items"
}Response — 201 Created
{
"id": "express-24h"
}Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | F-E-010 | Name or description exceeds maximum length |
| 400 | F-E-012 | Invalid ID format |
| 401 | F-E-032 | Missing or invalid authentication token |
| 403 | F-E-030 | Caller is not OPERATOR |
| 409 | F-E-003 | A shipping type with this ID already exists |
| 422 | F-E-001 | Name is absent, null, empty, or whitespace-only |
Retrieving a Shipping Type
GET /v1/shipping-types/{id}
dj-client: OPERATOR
dj-api-key: {{apiKey}}Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Functional identifier of the shipping type |
Response — 200 OK
{
"id": "express-24h",
"name": "Express 24h",
"description": "Next business day delivery for eligible items",
"createdAt": "2026-06-01T10:00:00Z",
"updatedAt": "2026-06-01T10:00:00Z"
}Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | F-E-032 | Missing or invalid authentication token |
| 403 | F-E-030 | Caller is not OPERATOR |
| 404 | F-E-002 | Shipping type not found |
Listing Shipping Types
Retrieve a paginated list of shipping types with optional filters and sorting.
GET /v1/shipping-types
dj-client: OPERATOR
dj-api-key: {{apiKey}}Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (0-based). Default: 0 |
size | integer | No | Number of items per page. Default: 20. Min: 1. Max: 100. |
sort | string | No | Format: field:direction. Sortable fields: name, createdAt, updatedAt. Default: createdAt:desc |
search | string | No | Free-text search matched against both name and id (external ID) — partial match, OR logic, case- and accent-insensitive. |
createdAtFrom | datetime | No | Filter by creation date (inclusive, from) |
createdAtTo | datetime | No | Filter by creation date (inclusive, to) |
updatedAtFrom | datetime | No | Filter by update date (inclusive, from) |
updatedAtTo | datetime | No | Filter by update date (inclusive, to) |
Response — 200 OK
{
"content": [
{
"id": "express-24h",
"name": "Express 24h",
"description": "Next business day delivery for eligible items",
"createdAt": "2026-06-01T10:00:00Z",
"updatedAt": "2026-06-01T10:00:00Z"
},
{
"id": "standard",
"name": "Standard Delivery",
"description": "Delivery within 3-5 business days",
"createdAt": "2026-05-15T08:30:00Z",
"updatedAt": "2026-05-20T14:00:00Z"
}
],
"numberOfElements": 2,
"number": 0,
"size": 20,
"first": true,
"last": true,
"empty": false
}Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | F-E-010 | size exceeds the maximum (100) |
| 400 | F-E-008 | size is less than 1 or page is negative |
| 401 | F-E-032 | Missing or invalid authentication token |
| 403 | F-E-030 | Caller is not OPERATOR |
For the complete list of error codes, refer to Error / Warning codes.
Updating a Shipping Type
Applies a full replacement of the modifiable fields (name and description). The id is immutable.
PUT /v1/shipping-types/{id}
dj-client: OPERATOR
dj-api-key: {{apiKey}}
Content-Type: application/jsonPath Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Identifier of the shipping type |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Updated display name (1–255 characters) |
description | string | No | Updated description (max 10,000 characters). Pass null or "" to clear. |
Example
{
"name": "Express 24h - Premium",
"description": "Next business day delivery with premium packaging"
}Response — 204 No Content
No response body.
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | F-E-010 | Name or description exceeds maximum length |
| 401 | F-E-032 | Missing or invalid authentication token |
| 403 | F-E-030 | Caller is not OPERATOR |
| 404 | F-E-002 | Shipping type not found |
| 422 | F-E-001 | Name is absent, null, empty, or whitespace-only |
Deleting a Shipping Type
Permanently deletes a shipping type. Deletion is blocked if the shipping type is still referenced in the shipping price matrix.
DELETE /v1/shipping-types/{id}
dj-client: OPERATOR
dj-api-key: {{apiKey}}Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Identifier of the shipping type to delete |
Response — 204 No Content
No response body.
Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | F-E-032 | Missing or invalid authentication token |
| 403 | F-E-030 | Caller is not OPERATOR |
| 404 | F-E-002 | Shipping type not found |
| 409 | F-E-042 | Shipping type is still referenced in the shipping price matrix. Remove associated price lines first. |
Warning:You must remove all shipping price matrix lines referencing this shipping type before it can be deleted.
For the complete list of error codes, refer to Error / Warning codes.
Typical Workflow
flowchart LR classDef create fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d91; classDef place fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d; classDef ok fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b; A["➕ Create shipping type<br>POST /v1/shipping-types"]:::create B["🧩 Reference in the<br>shipping price matrix"]:::place C["🛒 Displayed to customers<br>at checkout"]:::ok A --> B --> C
Best Practices
- Use meaningful custom IDs — if you provide a custom
id, make it descriptive and consistent (e.g. express-24h, standard-3d, click-and-collect). Once created, the ID cannot be changed. - 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 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 |
| 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 |
Updated 27 days ago

