# Keeta Order Management API

This API provides comprehensive order management capabilities for Keeta platform integration, including order operations, refund management, and real-time notifications.


Version: v.1.0.0

## Servers

```
https://open.mykeeta.com/api/open
```

## Download OpenAPI description

[Keeta Order Management API](https://api-docs.mykeeta.com/_bundle/apis/@standard/order.yaml)

## Endpoints

Request APIs - All endpoints for requesting order information and making updates

### Query on Order Details

 - [POST /order/get](https://api-docs.mykeeta.com/apis/standard/order/endpoints/getorderdetails.md): This endpoint allows the third party system to retrieve comprehensive details about a specific order from Keeta platform.

### Order Confirmation

 - [POST /order/confirm](https://api-docs.mykeeta.com/apis/standard/order/endpoints/confirmorder.md): This endpoint allows the third party to inform the Keeta ordering application that an order has been accepted and food preparation will begin shortly.

Notes:
1. Timing Requirements 
 - Developers must call this endpoint immediately upon receiving new order notifications from Keeta. 
 - The Keeta platform will automatically cancel any order that remains unconfirmed after 5 minutes.
2. State Management
 - The endpoint rejects requests under these conditions:
 - The order was already accepted through a Keeta POS terminal - The order status has already progressed beyond the initial state

### Order Cancellation

 - [POST /order/cancel](https://api-docs.mykeeta.com/apis/standard/order/endpoints/cancelorder.md): This endpoint allows merchants to request order cancellation through the Keeta platform when they are unable to fulfill a customer's order.

Notes:
1. The developers should only invoke this API when the merchant is unable to fulfill the order.
2. Upon successful cancellation, the order status will be updated to "CANCELLED" in Keeta's system and Keeta will automatically initiate a full refund to the customer.
3. This API does not support duplicate calls. If the order is already in a "CANCELLED" state, the system will return an error response.
4. Merchants should confirm the necessity of cancellation before proceeding to avoid unnecessary losses.

### Refund Confirmation

 - [POST /order/agree](https://api-docs.mykeeta.com/apis/standard/order/endpoints/agreerefund.md): This endpoint allows merchants to programmatically approve customer refund requests that were initiated through the Keeta platform.

Notes:
1. When a customer submits a refund request on the Keeta platform, the system will send a webhook notification to the third-party system.
2. If the third-party system supports refund management, merchants can review and approve refund requests directly within their system.
3. Once approved, the third-party system must call this API to confirm the refund with Keeta.
4. This API does not support duplicate calls. If the refund has already been approved or rejected (e.g., via Keeta POS), subsequent calls will return an error.

### Refund Rejection

 - [POST /order/reject](https://api-docs.mykeeta.com/apis/standard/order/endpoints/rejectrefund.md): This endpoint enables merchant to formally reject customer refund requests initiated through the Keeta platform.

Notes:
1. When a customer submits a refund request on the Keeta platform, the system will send a webhook notification to the third-party system.
2. If the third-party system has implemented refund processing capabilities, merchants can review and evaluate customer refund requests directly within their own system endpoint.
3. When merchants decide to reject a refund request after careful consideration, the third-party system must explicitly call this rejection API endpoint to formally communicate the decision to Keeta's platform.
4. This API does not support duplicate calls. If the refund has already been approved or rejected (e.g., via Keeta POS), subsequent calls will return an error.

### Order Ready

 - [POST /order/prepare](https://api-docs.mykeeta.com/apis/standard/order/endpoints/orderready.md): This endpoint allows merchant to notify the Keeta platform that an order has been fully prepared and is ready for rider pickup.

Notes:
1. Keeta strongly recommends that developers integrate this API to significantly enhance delivery efficiency.
2. Calling this endpoint automatically updates the order status to 'Order Ready' in Keeta's system.
3. This API does not support duplicate calls.
4. It is crucial to call this API only after meal preparation is fully completed to avoid disrupting the delivery workflow. Premature or mistaken invocations could lead to delivery inefficiencies and negatively affect the overall customer experience.

### Partial Refundable Item Query

 - [POST /order/refund/part/products/preview](https://api-docs.mykeeta.com/apis/standard/order/endpoints/querypartialrefundableitems.md): This API is designed to retrieve detailed information about items that are eligible for partial refunds. It allows developers to access and display specific product details related to refund eligibility.

### Initiate a Partial Refund

 - [POST /order/refund/part/apply](https://api-docs.mykeeta.com/apis/standard/order/endpoints/initiatepartialrefund.md): This API allows merchants to submit requests for partial refunds on specific products within an order. It is designed to adjust billing and chargeback processes when certain items in an order will not incur costs due to various reasons, such as promotions, errors, or customer satisfaction measures.

### Order Picked-up Confirmation

 - [POST /order/collect](https://api-docs.mykeeta.com/apis/standard/order/endpoints/confirmorderpickup.md): This API is designed to notify the Keeta platform that a customer has personally collected their order. It ensures that the system accurately reflects the order's completion through customer self-pickup.

Notes:
This API should be invoked in situations where the customer opts for self-service pickup, collecting their order directly from the merchant premises. It updates Keeta's system with the order's completed status.

## Webhooks

Webhooks - Webhook notifications sent by Keeta to third-party systems

### Order Placed Notification

 - [POST orderPlacedNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/orderplacednotification.md): This webhook is sent by Keeta to notify the developer's system that a new order has been placed.

Event ID: 1001

Notes:
In the event that Keeta's platform sends a new order notification but does not receive an acknowledgment from the developer's system, Keeta will attempt to resend the notification up to a maximum of three additional times.

⚠️ IMPORTANT: Certain merchant settlement amount fields within the order detail query API
and order push notifications may be subject to calculation delays.
All fields under feeDtl.merchantFee, which represent various components
of the merchant settlement breakdown, may not be fully computed at the time
the order detail is first returned or the order push notification is received.
In such cases, the affected fields may be absent, null, or contain incomplete
values. Service providers must not treat feeDtl.merchantFee fields as
hard dependencies in their integration logic. If missing or incomplete
settlement data is encountered, it is recommended to re-query the Order
Detail API after a short delay to retrieve the updated settlement
information. Downstream business logic such as reconciliation and invoicing
should be designed to handle the temporary unavailability of these fields
gracefully, without blocking or failing the overall order processing flow.

### Order Acceptance Notification

 - [POST orderAcceptanceNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/orderacceptancenotification.md): This webhook serves to notify the developer's system when an order's status changes to 'Order Confirmed' on the Keeta platform.

Event ID: 1002

### Order Completion Notification

 - [POST orderCompletionNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/ordercompletionnotification.md): This webhook serves to notify the developer's system when an order's status changes to 'Delivered' on the Keeta platform.

Event ID: 1003

### Order Cancellation Notification

 - [POST orderCancellationNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/ordercancellationnotification.md): This webhook serves to notify the developer's system when an order's status changes to 'Cancelled' on the Keeta platform.

Event ID: 1004

### Order Refund Status Change Notification

 - [POST orderRefundStatusChangeNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/orderrefundstatuschangenotification.md): This webhook is designed to inform the developer's system whenever there is a change in the status of an order's refund application on the Keeta platform.

Event ID: 1005

### Delivery Status Change Notification

 - [POST deliveryStatusChangeNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/deliverystatuschangenotification.md): This webhook is designed to inform the developer's system whenever there is a change in the status of Keeta Couriers.

Event ID: 1006

### Partial Product Refund Request Status Change Notification

 - [POST partialProductRefundStatusChangeNotification](https://api-docs.mykeeta.com/apis/standard/order/webhooks/partialproductrefundstatuschangenotification.md): This webhook is designed to notify your system when the status of a partial product refund request within an order changes on the Keeta platform.

Event ID: 1007

## MerchanSelfDelivery

The endpoint below is restricted to merchant self-delivery orders and is only available for updates after the merchant accepts the order. Orders that are completed or cancelled cannot be updated. <br> **Availability:** This API is available starting August 16, 2025.



### Order Dispatched

 - [POST /order/dispatched](https://api-docs.mykeeta.com/apis/standard/order/merchanselfdelivery/orderdispatched.md): This endpoint allows merchants to notify the Keeta platform that a courier has picked up the order and the delivery is in progress for merchant self-delivery orders.

Notes:
1. This API is exclusively for merchant self-delivery orders where the merchant manages their own delivery service.
2. Calling this endpoint updates the order status to indicate that the courier has collected the order and delivery is underway.
3. The courier information provided helps customers track their delivery and contact the delivery person if needed.
4. This API can only be called after the order has been accepted by the merchant. It cannot be used to update orders that have been completed or cancelled.

### Order Delivered

 - [POST /order/delivered](https://api-docs.mykeeta.com/apis/standard/order/merchanselfdelivery/orderdelivered.md): This endpoint allows merchants to notify the Keeta platform that an order has been successfully delivered to the customer for merchant self-delivery orders.

Notes:
1. This API is exclusively for merchant self-delivery orders where the merchant manages their own delivery service.
2. Calling this endpoint marks the order as completed.
3. Courier information can be updated if needed.
4. This API does not support duplicate calls for the same order.

### Update Courier Information

 - [POST /order/updateCourierInfo](https://api-docs.mykeeta.com/apis/standard/order/merchanselfdelivery/updatecourierinfo.md): This endpoint allows merchants to update courier information for merchant self-delivery orders, including courier name, phone number, vehicle information, and other delivery-related details.

Notes:
1. This API is exclusively for merchant self-delivery orders where the merchant manages their own delivery service.
2. Updated courier information helps customers track their delivery and contact the delivery person.
3. This API can be called multiple times to update different courier details as needed.
4. At least one courier information field must be provided in the request.
5. This API can only be called after the order has been accepted by the merchant. It cannot be used to update orders that have been completed or cancelled,

### Update Delivery Tracking Information

 - [POST /delivery/merchant/self/delivery/callback](https://api-docs.mykeeta.com/apis/standard/order/merchanselfdelivery/updatedeliverytracking.md): This endpoint allows merchants to provide real-time delivery tracking updates for merchant self-delivery orders, including ETA(estimated time of arrival) and courier location coordinates.

Notes:
1. This API is exclusively for merchant self-delivery orders where the merchant manages their own delivery service.
2. Regular updates help improve customer experience by providing accurate delivery estimates and tracking.
3. Coordinate information should use GPS coordinates with precision of 6 decimal places for accuracy.
4. At least one tracking parameter (besides orderViewId) must be provided in each request.
5. Time Range Requirements: estimatedTimeStampLeft and estimatedTimeStampRight must both have values or both be omitted. You cannot provide only one of these fields.
6. Coordinate Requirements: courierCoordinateLng and courierCoordinateLat must both have values or both be omitted. You cannot provide only one coordinate.

