We are experiencing an issue with the Orders API UpdateOrder endpoint.
Our flow is:
Create an order through the Orders API.
Add a service charge using UpdateOrder.
Process the order on a Square Terminal.
The service charge is correctly applied and included in the order total. It is also visible in the Square POS app. However, on the Square Terminal, the total is correct but the service charge is not displayed as an individual line item.
Is this a known limitation when service charges are added through UpdateOrder, or is there a required configuration to make the service charge visible on the Terminal?
Square Terminal is expected to show service charges as their own group in the itemized cart (docs). So the correct-total-but-missing-line symptom points to config or call ordering.
Two things to check first:
Is CreateTerminalCheckout running before UpdateOrder? Order updates after the checkout hits IN_PROGRESS aren’t supported. The documented procedure is CancelTerminalCheckout, update while the order is OPEN, then create a new checkout. Simplest fix is to finalize service charges before creating the checkout.
What’s the service charge’s treatment_type? If it’s APPORTIONED_TREATMENT, it’s distributed across line items and won’t show as a standalone row and that’s expected. For a visible line you’d want LINE_ITEM_TREATMENT with scope: ORDER and SUBTOTAL_PHASE.
Also worth confirming device_options.show_itemized_cart is true and Terminal software is on 6.62+ (the minimum for itemization).
Quick test to narrow it down: create a fresh order with the same service charge in the original CreateOrder body, then create the checkout. If it displays, the issue is the update path. If not, let us know.
If you can share the order_id, your CreateTerminalCheckout body, a post-update RetrieveOrder showing service_charges[], and whether the charge appears on the receipt, happy to dig in further.