Skip to content

Orders

As a Seller, you can create, view, update, and delete orders via the API.

Bulk Create Orders

POST/orders Bearer Token — create orders

Create up to 100 orders in a single request (sync for ≤10). Each order can contain up to 10 products.

Request Body:

json
{
  "data": [
    {
      "full_name": "John Doe",
      "phone": "0612345678",
      "city": "Casablanca",
      "address": "Hay Salam",
      "note": "Call before delivery",
      "second_phone": "0712345678",
      "products": [
        {
          "sku": "TSHIRT-RED-M",
          "quantity": 2,
          "price": 120
        }
      ]
    }
  ]
}
FieldTypeRequiredDescriptionRules
dataarrayYesArray of order objectsmax 100 items
data.*.full_namestringYesCustomer namemin 1, max 100 characters
data.*.phonestringYesPrimary phonemin 1, max 100 characters
data.*.citystringYesCity namemust be a valid city
data.*.addressstringYesDelivery addressmin 1, max 100 characters
data.*.productsarrayYesProduct itemsmin 1, max 10 items
data.*.products.*.skustringYesProduct SKUmin 1, max 100 characters, must exist in your account
data.*.products.*.quantitynumberYesQuantitymin 1, max 9999
data.*.products.*.pricenumberYesUnit pricemin 1, max 9999
data.*.notestringNoNotesmax 500 characters
data.*.second_phonestringNoSecondary phonemax 100 characters

Response

Sync success (201):

json
{
  "data": {
    "created_refs": ["WDKJHGFHJ"],
    "failed_count": 0
  },
  "meta": {
    "mode": "sync",
    "total": 1
  }
}

Async queued (202):

json
{
  "data": {
    "batch_id": "batch_550e8400-e29b-41d4-a716-446655440000",
    "queued": true
  },
  "meta": {
    "mode": "async",
    "total": 25
  }
}

Validation failure (422):

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The given data was invalid.",
    "fields": {
      "data.0.city": ["The city field is required."],
      "data.1.products.0.sku": ["The selected SKU does not exist in your account."]
    }
  }
}

List Orders

GET/orders Bearer Token — view orders

Retrieve a paginated list of your orders.

ParameterTypeRequiredDescription
per_pagenumberNoResults per page
statusstringNoFilter by status
searchstringNoSearch by reference, name, or phone

Response

Success (200):

json
{
  "data": [
    {
      "id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
      "reference": "ORD-00001",
      "full_name": "John Doe",
      "phone": "0612345678",
      "city": "Casablanca",
      "address": "Hay Salam",
      "status": "NEW",
      "note": "Call before delivery",
      "products": [
        {
          "sku": "TSHIRT-RED-M",
          "name": "T-Shirt Red M",
          "quantity": 2,
          "price": 120
        }
      ],
      "created_at": "2025-01-16T10:00:00Z",
      "updated_at": "2025-01-16T10:00:00Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 320,
      "pages": 7
    }
  }
}

Show Order

GET/orders/{id}/show Bearer Token — view orders

Retrieve a single order by ID.

Response

Success (200):

json
{
  "data": {
    "id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "reference": "ORD-00001",
    "full_name": "John Doe",
    "phone": "0612345678",
    "second_phone": "0712345678",
    "city": "Casablanca",
    "address": "Hay Salam",
    "status": "NEW",
    "note": "Call before delivery",
    "products": [
      {
        "sku": "TSHIRT-RED-M",
        "name": "T-Shirt Red M",
        "quantity": 2,
        "price": 120
      }
    ],
    "created_at": "2025-01-16T10:00:00Z",
    "updated_at": "2025-01-16T10:00:00Z"
  },
  "meta": {}
}

Not found (404):

json
{
  "error": {
    "code": "HTTP_ERROR",
    "message": "Resource not found."
  }
}

Update Orders (Bulk)

PUT/orders Bearer Token — update orders

Bulk update orders. Each item must include the order reference and the new status.

Request Body:

json
{
  "data": [
    {
      "reference": "ORD-00001",
      "status": "PACKED"
    }
  ]
}
FieldTypeRequiredDescriptionRules
dataarrayYesArray of order update objectsmax 50 items
data.*.referencestringYesOrder referencemin 1, max 100 characters
data.*.statusstringYesNew statusmust be a valid order status

Response

Success (200):

json
{
  "data": {
    "updated": 1,
    "failed": 0
  },
  "meta": {}
}

Validation error (422):

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The given data was invalid.",
    "fields": {
      "data.0.status": ["The selected status is invalid."]
    }
  }
}

Delete Orders (Bulk)

DELETE/orders Bearer Token — delete orders

Bulk delete orders by ID. Deletion is only allowed when the system permits it based on business conditions (e.g., order status).

Request Body:

json
{
  "ids": [
    "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "01ARZ3NDEKTSV4RRFFQ69G5FAW"
  ]
}
FieldTypeRequiredDescriptionRules
idsarrayYesArray of order IDsmax 100 items
ids.*stringYesOrder IDmust exist

Response

Success (200):

json
{
  "data": {
    "deleted": 2
  },
  "meta": {}
}

Forbidden (403):

json
{
  "error": {
    "code": "HTTP_ERROR",
    "message": "This action is unauthorized."
  }
}

WARNING

Orders can only be deleted when system conditions allow it, depending on the current order status and business rules.


Order Statuses

GET/order-statuses Bearer Token

List all available order statuses.

Response

Success (200):

json
{
  "data": [
    {
      "key": "NEW",
      "label": "New"
    },
    {
      "key": "PACKED",
      "label": "Packed"
    },
    {
      "key": "WAITING_FOR_SHIPPING_COMPANY",
      "label": "Waiting for Shipping Company"
    },
    {
      "key": "SHIPPED",
      "label": "Shipped"
    },
    {
      "key": "DELIVERED",
      "label": "Delivered"
    },
    {
      "key": "RETURNED",
      "label": "Returned"
    },
    {
      "key": "CANCELED",
      "label": "Canceled"
    },
    {
      "key": "CHANGED",
      "label": "Changed"
    },
    {
      "key": "ROLLBACK",
      "label": "Rollback"
    },
    {
      "key": "OUT_OF_STOCK",
      "label": "Out of Stock"
    }
  ],
  "meta": {}
}
StatusDescription
NEWFreshly created order
PACKEDPacked and ready for shipping
WAITING_FOR_SHIPPING_COMPANYPushed to shipping company, waiting for pickup
SHIPPEDIn transit
DELIVEREDSuccessfully delivered to customer
RETURNEDReturned by customer or courier
CANCELEDOrder canceled
CHANGEDOrder has been modified
ROLLBACKOrder rolled back to previous state
OUT_OF_STOCKProduct was out of stock

List Cities

GET/cities Bearer Token

Retrieve a paginated list of available cities.

ParameterTypeRequiredDescription
per_pagenumberNoResults per page

Response

Success (200):

json
{
  "data": [
    {
      "id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
      "name": "Casablanca"
    },
    {
      "id": "01ARZ3NDEKTSV4RRFFQ69G5FAW",
      "name": "Rabat"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 100,
      "pages": 2
    }
  }
}

WedoCOD API Documentation