Guides

Products & stock

List MarkitMall products on your store, keep their price and stock right, and map them so orders can use your own ids.

The catalog#

curl "https://backend.markitmall.com/dropship/v1/catalog/products?search=earbuds&inStock=true" \
  -H "Authorization: Bearer mk_test_XXXX:sk_test_XXXX"

Filter by search, category (from GET /catalog/categories), wholesale minPrice / maxPrice and inStock. Pages are cursor based — pass nextCursor back as cursor until it is null.

Prices you will see#

FieldMeaning
wholesalePriceWhat you pay us per unit.
suggestedPriceOur retail price — a good starting point.
minResalePriceThe lowest you may sell at. Lower gets 422 price_below_minimum.
stockUnits available for dropshipping right now.

Prices and stock are per variant (colour, size…). Order with variants[].id; a product without options has a single variant whose id is the product id (isDefault: true).

Listing a product on your store#

  • Use your own title, description and price (at or above minResalePrice). The description is HTML.
  • Copy the images to your own storage or CDN. Image URLs can change; do not hotlink them.
  • Products of different sellers (storeId) ship as separate parcels — show delivery per seller if your checkout charges delivery per parcel.

Telling us what you listed#

POST /imports records that you listed a product and maps your variant ids to ours. It is optional, but it unlocks two things: you can order with your own externalVariantId, and you receive product.* webhooks for that product.

curl -X POST "https://backend.markitmall.com/dropship/v1/imports" \
  -H "Authorization: Bearer mk_test_XXXX:sk_test_XXXX" \
  -H "Content-Type: application/json" \
  -d '{
  "productId": "66f0c2a1b2c3d4e5f6a7b8c9",
  "externalProductId": "shop-product-881",
  "resalePrice": 1500,
  "variants": [
    {
      "variantId": "66f0c2a1b2c3d4e5f6a7b8d0",
      "externalVariantId": "shop-variant-9001",
      "externalSku": "EAR-BLK"
    }
  ]
}'

Keeping stock and price right#

Selling something we cannot ship ends in a cancellation, so keep listings in step:

EventWhat to do
product.stock_changedUpdate the stock — hide the listing at 0.
product.updatedPrice, title, images or variants changed. Raise your price if it is now under minResalePrice.
product.removedNo longer dropshippable — unpublish it.

As a safety net, re-check periodically with GET /inventory?ids=… (up to 100 variant ids per call); available: false means hide it. Tell us whether applying a change worked with POST /imports/{id}/sync-result — failures show up in your dashboard.

Stock is checked again when you place an order. If a variant sold out in the meantime you get 422 out_of_stock with the available quantity in details.

Shipping cost before checkout#

curl -X POST "https://backend.markitmall.com/dropship/v1/shipping/quote" \
  -H "Authorization: Bearer mk_test_XXXX:sk_test_XXXX" \
  -H "Content-Type: application/json" \
  -d '{
  "city": "Lahore",
  "items": [
    {
      "variantId": "66f0c2a1b2c3d4e5f6a7b8d0",
      "quantity": 1
    }
  ]
}'

Returns our shippingCost, the returnShippingCost and the rtoReserve a COD order would hold — useful to set your own delivery charge. See how margins work.