Mobile POS App Update Sale
PATCH
Update Sale Order
Modify an existing pending sale order. Recalculates items, payments, discounts, and service charges.
PATCH
/app/sales/{id}
Request Body
JSONRequest Parameters
| Parameter | Type | Required | Validation | Description |
|---|---|---|---|---|
| customer_id | Integer | Optional | integer, nullable, exists | ID of the customer (must be active status) |
| waiter_id | Integer | Optional | integer, nullable, exists | ID of the waiter/staff who served the order (must be active status) |
| date | String (Date) | Optional | date, nullable, format:Y-m-d | The specific sale date |
| time | String (Time) | Optional | string, nullable, format:H:i:s | The specific sale time |
| token_no | String | Optional | string, nullable | Queue token or buzzer reference number |
| take_away_type | String | Optional | string, nullable | Detailed take-away sub-category/type |
| order_type | String | Optional | string, nullable | Type of order (e.g. Dine In, Take Away) |
| total_quantity | Numeric | Optional | numeric, nullable | Calculated sum of all items and modifiers quantity |
| total_amount | Numeric | Optional | numeric, nullable | Gross total sales price before discounts/VAT |
| discount_percent | Numeric | Optional | numeric, nullable | Flat percentage discount to apply |
| discount_amount | Numeric | Optional | numeric, nullable, min:0, lte:total_amount | Flat currency discount amount (cannot exceed total amount) |
| vat_percent | Numeric | Optional | numeric, nullable | VAT/Tax percentage to apply |
| vat_amount | Numeric | Optional | numeric, nullable | Calculated VAT/Tax currency amount |
| used_points | Numeric | Optional | numeric, nullable, min:0 | Amount of loyalty points redeemed |
| point_discount_amount | Numeric | Optional | numeric, nullable, min:0, lte:total_amount | Discount currency amount derived from redeemed loyalty points |
| note | String | Optional | string, nullable | Additional customer notes or comments |
| items | Array | Required | array, required | Updated array of items to purchase (replaces existing items completely) |
| ↳ items.*.product_id | Integer | Required | integer, required, exists | ID of the active product to purchase |
| ↳ items.*.product_variant_id | Integer | Optional | integer, nullable, exists | ID of the product variant (Required if product supports variants) |
| ↳ items.*.quantity | Numeric | Required | numeric, required, min:0.01 | Quantity of this product to buy |
| ↳ items.*.parcel_quantity | Numeric | Optional | numeric, nullable, min:0, lte:quantity | Quantity of this product packed for takeaway/parcel |
| ↳ items.*.unit_price | Numeric | Required | numeric, required, min:0.01 | Unit cost for a single item of this product |
| ↳ items.*.note | String | Optional | string, nullable | Kitchen or prep instructions for this item |
| ↳ items.*.addons | Array | Optional | array, nullable | List of active addons applied to this specific product |
| ↳ items.*.addons.*.addon_id | Integer | Required | integer, required, exists | ID of the active addon (must belong to this product's configured addons) |
| ↳ items.*.addons.*.quantity | Numeric | Required | numeric, required, min:0.01 | Addon quantity to apply |
| ↳ items.*.addons.*.unit_price | Numeric | Required | numeric, required, min:0.01 | Unit cost for a single item of this addon |
| ↳ items.*.addons.*.note | String | Optional | string, nullable | Optional modifier/addon preparation instruction |
| ↳ items.*.flavors | Array | Optional | array, nullable | List of active flavors applied to this product |
| ↳ items.*.flavors.*.flavor_id | Integer | Required | integer, required, exists | ID of the active flavor (must belong to this product's configured flavors) |
| ↳ items.*.flavors.*.quantity | Numeric | Required | numeric, required, min:0.01 | Flavor quantity to apply |
| payments | Array | Optional | array, nullable | List of payments made for the sale (If pay-first setting is enabled, full amount payment is required) |
| ↳ payments.*.fund_id | Integer | Required | integer, required_with:payments, exists | ID of the active payment fund (Cash Drawer, Card, etc.) |
| ↳ payments.*.amount | Numeric | Required | numeric, required_with:payments, min:0.01 | The amount of money paid into this fund |
| ↳ payments.*.payment_reference | String | Optional | string, nullable | Transaction ID, reference notes or card details |
| service_charges | Array | Optional | array, nullable | Custom service fees or charges to apply to the invoice |
| ↳ service_charges.*.name | String | Required | string, required_with:service_charges | Name/label of the service charge (e.g. Delivery Fee) |
| ↳ service_charges.*.amount | Numeric | Required | numeric, required_with:service_charges, min:0.01 | Fee amount to charge |
| ↳ service_charges.*.note | String | Optional | string, nullable | Brief explanation or context for this custom fee |
Response
200 OKStatus Code
HTTP status code (200)
Message
Sale successfully updated
Data
Complete sale resource details