API reference

Models

The objects the API sends and receives.

Error#

errorrequired
object
—
error.coderequired
string
—
error.messagerequired
string
—
error.details
any
—

Me#

reseller
object
—
reseller.id
string
—
reseller.brandName
string
—
reseller.status
string
—
mode
enum
—

livetest

keyId
string
—
integration
object
—

Category#

id
string
—
name
string
—
slug
string
—
children
object[]
—
children[].id
string
—
children[].name
string
—
children[].slug
string
—

Variant#

id
string

Use this as variantId in orders. For a product without options it equals the product id (isDefault: true).

isDefault
boolean
—
sku
string | null
—
color
string | null
—
size
string | null
—
title
string
—
image
string | null
—
wholesalePrice
integer
—
suggestedPrice
integer
—
minResalePrice
integer
—
stock
integer
—

Product#

id
string
—
title
string
—
description
string

HTML

images
string[]

Copy them to your store — do not hotlink.

brand
string | null
—
tags
string[]
—
category
object | null
—
storeId
string

Products of different stores ship as separate parcels

weightKg
number | null
—
wholesalePrice
integer

Lowest across variants

suggestedPrice
integer
—
compareAtPrice
integer | null
—
minResalePrice
integer
—
inStock
boolean
—
stock
integer
—
shipping
object

What MarkitMall charges to deliver this product. estimate is one unit shipped on its own; a parcel is charged by its total weight (x-markitmall-terms.shippingRates), plus any city surcharge (x-markitmall-terms.citySurcharges), and items from different stores ship as separate parcels. POST /shipping/quote prices a whole cart.

shipping.required
boolean

False when the store offers free delivery on it — we charge you none

shipping.weightKg
number | null

Null when unknown — the default shipping cost applies

shipping.estimate
integer

PKR, one unit, no city surcharge

variants—
updatedAt
string · date-time
—

InventoryItem#

variantId
string
—
productId
string | null
—
available
boolean

false = unknown or no longer dropshippable — hide it

stock
integer
—
wholesalePrice
integer | null
—
minResalePrice
integer | null
—

ImportRequest#

productIdrequired
string
—
externalProductId
string
—
customTitle
string
—
resalePrice
integer
—
variants
object[]
—
variants[].variantIdrequired
string
—
variants[].externalVariantIdrequired
string
—
variants[].externalSku
string
—

Import#

id
string
—
productId
string
—
externalProductId
string | null
—
syncStatus
enum
—

okfailedremoved

available
boolean
—
variants
object[]
—

ShippingQuoteRequest#

cityrequired
string
—
itemsrequired
object[]
—
items[].variantId
string
—
items[].externalVariantId
string
—
items[].quantityrequired
integer · ≥ 1
—

ShippingQuote#

city
string
—
shippingCost
integer
—
returnShippingCost
integer
—
rtoReserve
integer

Held on your wallet while a COD order is open

platformFeePercent
number

Platform fee, in percent of platformFeeBasis

platformFeeBasis
enum

margin (default): of your margin — what your customer pays − wholesale − shipping; sale: of your selling price for the items

marginsale

parcels
object[]
—

CreateOrderRequest#

externalOrderIdrequired
string · max 100 chars

Your order id; unique per account

externalOrderName
string
—
paymentModerequired
enum

How YOUR customer paid. COD: our courier collects. PREPAID: you pay us from your wallet.

CODPREPAID

customerrequired
object
—
customer.namerequired
string
—
customer.phonerequired
string
—
customer.addressrequired
string
—
customer.cityrequired
string
—
customer.province
string
—
customer.postalCode
string
—
itemsrequired
object[] · min 1 items · max 50 items
—
items[].variantId
string

Our variant id (or product id for products without options)

items[].externalVariantId
string

Your variant id, mapped through POST /imports

items[].externalLineId
string
—
items[].sku
string
—
items[].quantityrequired
integer · ≥ 1 · ≤ 100
—
items[].resalePricerequired
integer

Per unit, what your customer pays

shippingCharged
integer · default 0

Delivery charge you showed your customer

senderName
string

Printed as the parcel's sender; defaults to your brand

notes
string · max 500 chars
—

CreateOrderResponse#

id
string
—
externalOrderId
string
—
orderNumber
string | null
—
status
string
—
paymentMode
enum
—

CODPREPAID

mode
enum
—

livetest

codAmount
integer
—
prepaidAmount
integer
—
wholesaleTotal
integer
—
shippingCost
integer
—
platformFee
object

Platform fee on this parcel: percent of your margin (basis: margin, the default) or, on orders placed under a sale fee, of resaleTotal (basis: sale); amount is what is taken. Taken when the margin is released; not charged if the parcel is cancelled, refused or returned.

platformFee.basis
enum
—

marginsale

platformFee.percent
number
—
platformFee.amount
integer
—
expectedMargin
integer

COD: credited after delivery, the fee already taken off. Prepaid: minus the platform fee (debited then).

rtoReserve
integer
—
fundsDeadline
string | null · date-time
—
parcels—

OrderStatus#

AWAITING_FUNDSRECEIVEDCONFIRMEDPROCESSINGSHIPPEDDELIVEREDCANCELLEDRETURNED

OrderEvent#

id
string
—
externalOrderId
string
—
externalOrderName
string | null
—
parcel
object
—
parcel.part
integer
—
parcel.of
integer
—
orderNumber
string | null
—
status—
paymentMode
enum
—

CODPREPAID

codAmount
integer
—
wholesaleTotal
integer
—
shippingCost
integer
—
margin
integer
—
marginStatus
enum
—

NONEPENDINGRELEASEDREVERSED

marginReleaseAt
string | null · date-time
—
rtoCharge
integer
—
returnCredit
integer
—
items
object[]
—
tracking
object | null
—
tracking.number
string
—
tracking.courier
string
—
tracking.url
string | null
—
cancellationReason
string | null
—

Order#

id
string
—
externalOrderId
string
—
externalOrderName
string | null
—
parcel
object
—
parcel.part
integer
—
parcel.of
integer
—
orderNumber
string | null
—
status—
paymentMode
enum
—

CODPREPAID

codAmount
integer
—
wholesaleTotal
integer
—
shippingCost
integer
—
margin
integer
—
marginStatus
enum
—

NONEPENDINGRELEASEDREVERSED

marginReleaseAt
string | null · date-time
—
rtoCharge
integer
—
returnCredit
integer
—
items
object[]
—
tracking
object | null
—
tracking.number
string
—
tracking.courier
string
—
tracking.url
string | null
—
cancellationReason
string | null
—
mode
enum
—

livetest

confirmation
enum
—

PENDINGCONFIRMEDFAILEDNOT_REQUIRED

prepaidAmount
integer
—
resaleTotal
integer
—
shippingCharged
integer
—
platformFee
object

Platform fee on this parcel: percent of your margin (basis: margin, the default) or, on orders placed under a sale fee, of resaleTotal (basis: sale); amount is what is taken. Taken when the margin is released; not charged if the parcel is cancelled, refused or returned.

platformFee.basis
enum
—

marginsale

platformFee.percent
number
—
platformFee.amount
integer
—
expectedMargin
integer

COD: credited after delivery, the fee already taken off. Prepaid: minus the platform fee.

rtoReserve
integer
—
customer
object
—
fundsDeadline
string | null · date-time
—
history
object[]
—
history[].status
string
—
history[].at
string · date-time
—
history[].note
string | null
—
createdAt
string · date-time
—

ProductEvent#

productId
string
—
importId
string
—
externalProductId
string | null
—
product
Product | null
—
changes
string[]
—

Tracking#

id
string
—
externalOrderId
string
—
orderNumber
string
—
parcel
object
—
parcel.part
integer
—
parcel.of
integer
—
status
enum
—

AWAITING_FUNDSRECEIVEDCONFIRMEDPROCESSINGSHIPPEDDELIVEREDCANCELLEDRETURNED

statusLabel
string
—
paymentMode
enum
—

CODPREPAID

amountToCollect
integer

Cash the courier collects; 0 for prepaid

sender
string

The name printed on the parcel

tracking
object | null
—
tracking.number
string
—
tracking.courier
string
—
shippedAt
string | null · date-time
—
deliveredAt
string | null · date-time
—
cancelledReason
string | null
—
steps
object[]

Received → Confirmed → Being packed → On the way → Delivered, plus Cancelled/Returned when it ended there

steps[].status
string
—
steps[].label
string
—
steps[].done
boolean
—
steps[].at
string | null · date-time
—
history
object[]
—
history[].status
string
—
history[].label
string
—
history[].at
string · date-time
—
updatedAt
string · date-time
—

Wallet#

available
integer
—
pending
integer

Margins waiting for their release date (20 days after delivery)

pendingOrders
integer
—
held
integer

Deposit + RTO reserves

heldDeposit
integer
—
heldReserve
integer
—
depositRequired
integer
—
withdrawalsPending
integer
—
currency
"PKR"
—

LedgerEntry#

id
string
—
amount
integer

Signed change to Available

type
string
—
status
string
—
description
string | null
—
createdAt
string · date-time
—
order
object | null
—

WebhookConfig#

integrationId
string
—
url
string | null
—
events
string[]
—
hasSecret
boolean
—
secret
string

Only when just generated