Zopping

Receive & fulfill orders

This guide is for channel and logistics partners that pull orders out of Zopping, move them through fulfilment, and settle payment. It uses the Orders and Fulfillment APIs.

The flow

  1. Poll for new orders → 2. Read the detail → 3. Advance status as you fulfil →
  2. Record payment / refunds → 5. Pull the invoice.

Keep your own id on each order via clientId so you can map Zopping's referenceNumber to your system without storing extra state.

1. Poll for new orders

List orders for a store, filtered by status and a created-after window. Page with offset/limit.

curl "https://zopping.com/api/order-service/order?organizationId=<org-id>&storeId=<store-id>&status=CONFIRMED&limit=50" \
  -H "Authorization: Bearer $ZOPPING_TOKEN"

Poll incrementally — track the newest createdAt you've seen and only process orders after it. Don't reprocess an order you've already pulled (dedupe on referenceNumber).

Prefer push over poll. Rather than scanning, subscribe to ORDER_CREATE / ORDER_STATUS_UPDATE and react as they fire — see Events & webhooks. Keep a low-frequency poll as a backstop.

2. Read the detail

curl "https://zopping.com/api/order-service/order/55012?organizationId=<org-id>" \
  -H "Authorization: Bearer $ZOPPING_TOKEN"

The response carries items, amount, paymentStatus, the delivery address and the chosen slot.

3. Check serviceability & slots (if you're delivering)

Before promising delivery, confirm the address is in coverage and pick a slot:

# Is this address serviceable, and from which store?
curl "https://zopping.com/api/logistics-service/serviceable-area?organizationId=<org-id>&address[pincode]=560001" \
  -H "Authorization: Bearer $ZOPPING_TOKEN"

# What slots are open at the store that serves them?
# (storeId comes from the serviceable-area call above)
curl -G https://zopping.com/api/order-service/slot-availability \
  -H "Authorization: Bearer $ZOPPING_TOKEN" \
  --data-urlencode "organizationId=<org-id>" \
  --data-urlencode "storeId=7" \
  --data-urlencode "searchInterval=2026-06-23T00:00:00Z/2026-06-30T00:00:00Z"

searchInterval is an RFC3339 range (<start>/<end>), and storeId is required — see the Delivery slots guide for the full two-call flow.

4. Advance the order status

As you pack, dispatch and deliver, update the order:

curl -X PUT https://zopping.com/api/order-service/order/55012 \
  -H "Authorization: Bearer $ZOPPING_TOKEN" -H "Content-Type: application/json" \
  -d '{"organizationId":"<org-id>","status":"DELIVERED"}'

5. Record payment and refunds

For cash collected on delivery, record the payment; for returns, issue a refund:

curl -X POST https://zopping.com/api/order-service/order/55012/payment \
  -H "Authorization: Bearer $ZOPPING_TOKEN" -H "Content-Type: application/json" \
  -d '{"organizationId":"<org-id>","orderReferenceNumber":"ORD-55012","mode":"CASH","amount":"52.00"}'

For online payments returning from a gateway, confirm with verify-payment (see Orders → Payment verification).

6. Pull the invoice

curl "https://zopping.com/api/order-service/invoice/ORD-55012?returnPdf=true&returnHtml=true" \
  -H "Authorization: Bearer $ZOPPING_TOKEN"

The response's pdfLink is a permanent, publicly readable URL — it doesn't expire, so you can store it as-is instead of re-fetching before every use.

Good practices

  • Dedupe and map on referenceNumber / clientId; never reprocess.
  • Poll politely — incremental windows by createdAt, not full scans.
  • Statuses are forward-only in practice; don't move an order backwards.

Next: the full Orders reference and Fulfillment reference.