6 endpoints
Products
A simple catalogue of your products and their orders, to sell through payment links or checkout without building a full online store.
Endpoint names and descriptions come from the OpenAPI contract, in English — they cannot drift from the API.
In plain English
A hosted mini-catalogue: publish a product, share its page, sell.
When to use it
For a merchant selling a handful of references with no e-commerce site: the product carries its price, its stock and its sales page.
How to integrate it
- 1Create the product with its price and, if needed, its available quantity.
- 2Share its sales page the way you would share a payment link.
- 3Track its orders to prepare and ship.
- 4Deactivate the product rather than delete it: the order history stays readable.
- GET
/v1/productsList products - POST
/v1/productsCreate a product - GET
/v1/products/{reference}Retrieve a product - PATCH
/v1/products/{reference}Update a product - DELETE
/v1/products/{reference}Deactivate a product - GET
/v1/products/{reference}/ordersList a product's orders
List products
Returns the caller's products for the key's environment as a paginated Page.
| Field | Type | In | Required | Description |
|---|---|---|---|---|
origin | enum | query | Optional | Filter by creation origin (API or DASHBOARD).Values APIDASHBOARD |
pageable | Pageable | query | Required |
Create a product
Creates a product in the caller's catalog. Supply an optional client-owned externalId (unique per merchant) to make the create idempotent: a duplicate externalId returns the existing product with 200 OK.
Schema · CreateProductRequest
| Field | Type | In | Required | Description |
|---|---|---|---|---|
name | string | body | Required | Product name. |
description | string | body | Optional | Optional long description. |
imageUrl | string | body | Optional | Optional product image URL. |
price | number | body | Required | Unit price in MAD major units. |
currency | string | body | Optional | ISO-4217 currency; defaults to MAD. |
stockQuantity | integer (int32) | body | Optional | Optional stock to track; unlimited when omitted. |
expiresAt | string (date-time) | body | Optional | Optional sale-ends timestamp (ISO-8601 UTC), must be in the future. |
externalId | string | body | Optional | Optional client-supplied id, unique per merchant. Creating a product with an externalId that already exists returns the existing product (idempotent replay). |
metadata | object | body | Optional | Optional free-form metadata object, echoed back on reads and in the payment webhook of orders for this product. |
Retrieve a product
Fetches a single product by its reference.
| Field | Type | In | Required | Description |
|---|---|---|---|---|
reference | string | path | Required | Product reference. |
Update a product
Partially updates a product; only the fields present in the body are changed.
Schema · UpdateProductRequest
| Field | Type | In | Required | Description |
|---|---|---|---|---|
reference | string | path | Required | |
name | string | body | Optional | Product name. Optional; only applied when present. |
description | string | body | Optional | Product description. Optional; only applied when present. |
imageUrl | string | body | Optional | Product image URL. Optional; only applied when present. |
price | number | body | Optional | Unit price. Optional; only applied when present. |
active | boolean | body | Optional | Whether the product is active. Optional; only applied when present. |
stockQuantity | integer (int32) | body | Optional | Total stock quantity. Optional; only applied when present. |
expiresAt | string (date-time) | body | Optional | Expiry timestamp of the listing. Optional; only applied when present. |
clearExpiration | boolean | body | Optional | Set to true to clear the existing expiration. Optional; only applied when present. |
Deactivate a product
Deactivates the product so it can no longer be ordered. Returns the updated product.
| Field | Type | In | Required | Description |
|---|---|---|---|---|
reference | string | path | Required |
List a product's orders
Returns the orders placed for this product as a paginated Page.
| Field | Type | In | Required | Description |
|---|---|---|---|---|
reference | string | path | Required | |
pageable | Pageable | query | Required |
A question about integration?
Our technical team supports integrators from the first sandbox call through to go-live.