Browse the docs

API reference

Webhook events

Each event is a signed JSON POST to your endpoint. Verify the signature, answer 2xx within 10 seconds, and dedupe on id — how is in the webhooks guide.

Every event

  • idstringrequired

    Unique; dedupe on it. Deliveries are at-least-once.

  • objectstring
  • typeenumrequired

    * order.placed - order.placed * order.accepted - order.accepted * order.cancelled - order.cancelled * order.payment_failed - order.payment_failed * order.payment_recovered - order.payment_recovered * order.picking_started - order.picking_started * order.packed - order.packed * order.out_for_delivery - order.out_for_delivery * order.delivered - order.delivered * sale.completed - sale.completed * sale.exit_verified - sale.exit_verified * order.fulfilment_changed - order.fulfilment_changed * delivery.courier_booked - delivery.courier_booked * delivery.courier_assigned - delivery.courier_assigned * delivery.rider_changed - delivery.rider_changed * delivery.failed - delivery.failed * store.connected - store.connected * store.disconnected - store.disconnected * ping - ping

    order.placedorder.acceptedorder.cancelledorder.payment_failedorder.payment_recoveredorder.picking_startedorder.packedorder.out_for_deliveryorder.deliveredsale.completedsale.exit_verifiedorder.fulfilment_changeddelivery.courier_bookeddelivery.courier_assigneddelivery.rider_changeddelivery.failedstore.connectedstore.disconnectedping
  • api_versionstringrequired
  • modeenumrequired

    * live - live * test - test

    livetest
  • created_attimestamprequired
  • store_idintegernullablerequired
  • dataanyrequired

    order, actor, and per type previous_status, reason, channel, sale.

Orders

order.placed

A customer paid for a delivery order at the store. Accept or reject it (POST …/accept or …/reject) before the reservation expires (15 minutes).

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.placed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "PENDING",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": null,
      "accepted_via": null,
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "customer"
    }
  }
}

order.accepted

The order was accepted -- by you, or in the Scanimart retailer app (data.order.accepted_via). data.order.fulfilment_mode says who delivers.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.accepted",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "pos"
    }
  }
}

order.cancelled

The order was rejected by the store, cancelled by the customer, or cancelled by Scanimart. data.actor.kind and data.reason say which.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.cancelled",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "CANCELLED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "retailer"
    },
    "previous_status": "PENDING",
    "reason": "Out of stock"
  }
}

order.payment_failed

A pending online checkout timed out unpaid. Do not fulfil or book it as a sale. This is not a general notification for unsuccessful in-store payment attempts.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.payment_failed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "PAYMENT_FAILED",
      "payment": {
        "status": "string",
        "paid": false,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": null,
      "accepted_via": null,
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "system"
    }
  }
}

order.payment_recovered

A payment arrived after the timeout; the order is PENDING again and an order.placed follows.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.payment_recovered",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "PENDING",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": null,
      "accepted_via": null,
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "customer"
    }
  }
}

order.picking_started

Staff started picking the order in the Scanimart Staff app. The customer can no longer cancel. Informational for the POS; picking is not a public API action.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.picking_started",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    }
  }
}

order.packed

Staff packed the order in the Scanimart Staff app and it is ready for the rider. Informational for the POS; packing is not a public API action.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.packed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "PACKED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    }
  }
}

order.out_for_delivery

A rider has the order.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.out_for_delivery",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "OUT_FOR_DELIVERY",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    }
  }
}

order.delivered

The customer received the order. A sale.completed follows.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.delivered",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "DELIVERED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    }
  }
}

order.fulfilment_changed

A Scanimart-courier order was handed back to the store's own riders.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "order.fulfilment_changed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "pos"
    }
  }
}

Sales

sale.completed

A finished Scanimart sale to book into your POS -- a delivered online order (channel: SCANIMART_ONLINE) or a paid in-store Scan & Go basket (SCANIMART_INSTORE). data.sale has every line. Answer 2xx only once it is booked: that is how Scanimart knows your stock count already includes it.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "sale.completed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "DELIVERED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    },
    "channel": "SCANIMART_ONLINE",
    "sale": {
      "object": "sale",
      "id": "ORDER-1A2B3C4D5E",
      "event_id": "evt_8f14e45fceea167a5a36dedd4bea2543",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "channel": "SCANIMART_ONLINE",
      "sold_at": "2026-10-08T10:15:00+05:30",
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ]
    }
  }
}

sale.exit_verified

An in-store customer's basket was checked at the exit. Informational.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "sale.exit_verified",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "instore",
      "status": "COMPLETED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "0.00",
      "fulfilment_mode": null,
      "accepted_via": null,
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "staff"
    },
    "channel": "SCANIMART_INSTORE"
  }
}

Courier delivery

delivery.courier_booked

Scanimart booked a courier for the order (data.courier: provider, tracking link). Hand the bag to that courier.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "delivery.courier_booked",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "courier"
    }
  }
}

delivery.courier_assigned

The courier assigned a rider (data.courier.rider_name, rider_phone).

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "delivery.courier_assigned",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "courier"
    }
  }
}

delivery.rider_changed

The courier replaced the rider. Hand the bag to the new one.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "delivery.rider_changed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "courier"
    }
  }
}

delivery.failed

No courier could be booked, or the courier gave up. Retry (POST …/courier/retry) or switch to store delivery (POST …/delivery-method).

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "delivery.failed",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "order": {
      "object": "order",
      "id": "ORDER-1A2B3C4D5E",
      "external_id": "BILL-20391",
      "store_id": 1042,
      "type": "delivery",
      "status": "ACCEPTED",
      "payment": {
        "status": "string",
        "paid": true,
        "method": "string"
      },
      "total_amount": "249.00",
      "delivery_fee": "249.00",
      "fulfilment_mode": "STORE_STAFF",
      "accepted_via": "POS",
      "placed_at": "2026-10-08T10:15:00+05:30",
      "lines": [
        {
          "barcode": "8901725181222",
          "name": "Aashirvaad Atta 5kg",
          "quantity": 2,
          "free_quantity": 2,
          "unit_price": "249.00",
          "mrp": "249.00",
          "line_total": "249.00",
          "source": "catalog",
          "external_id": "BILL-20391"
        }
      ],
      "courier": {
        "provider": "porter",
        "status": "NOT_REQUESTED",
        "tracking_url": "https://track.porter.in/abc123",
        "rider_name": "Ravi K",
        "rider_phone": "+919800000000",
        "vehicle": "2W",
        "eta_minutes": 1
      }
    },
    "actor": {
      "kind": "courier"
    }
  }
}

Stores and testing

store.connected

A store connected to your company with a one-time code.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "store.connected",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "store": {
      "object": "store",
      "id": 1,
      "name": "Aashirvaad Atta 5kg",
      "status": "string",
      "active": true,
      "services": "string",
      "gstin": "29ABCDE1234F1Z5",
      "address": "12, 4th Cross, Indiranagar",
      "area": "Indiranagar",
      "city": "Bengaluru",
      "latitude": 12.97,
      "longitude": 12.97,
      "connected_at": "2026-10-08T10:15:00+05:30"
    }
  }
}

store.disconnected

A store disconnected you, or you disconnected it. Events for it stop.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "store.disconnected",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": 1042,
  "data": {
    "store_id": 1042
  }
}

ping

Sent by "Send a test event". Proves your endpoint is reachable.

Example body
JSON
{
  "id": "evt_8f14e45fceea167a5a36dedd4bea2543",
  "object": "event",
  "type": "ping",
  "api_version": "2026-10-01",
  "mode": "test",
  "created_at": "2026-10-08T10:15:00+05:30",
  "store_id": null,
  "data": {}
}