Service charge added through UpdateOrder is not shown on Square Terminal

We are experiencing an issue with the Orders API UpdateOrder endpoint.

Our flow is:

  1. Create an order through the Orders API.

  2. Add a service charge using UpdateOrder.

  3. 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?

Orders API documentation:

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:

  1. 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.

  2. 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.

Hello, Thanks for getting back -

  1. Yes, we don’t do checkout before - we only go to checkout after order has service charge added already.

2. As per your suggestion we have tested with new orders - As per our need we need to call order update API to add service charge.

These orders are created from Square POS app - Android and update using Order Update API.

Order: Test order Sept 12 #3
id: 0c720c22-5079-497d-a7ba-1d32109c2eef
treatment_type": “LINE_ITEM_TREATMENT
calculation_phase”: "TOTAL_PHASE

Order: Test order Sept 12 #4
id: plT63Gx7SIDRDFTYmBXHp2WgrKHZY
treatment_type": “LINE_ITEM_TREATMENT
calculation_phase”: "SUBTOTAL_PHASE

For both of these orders we cannot see individual service charge entry - although they are added to total.

Also we need service charge to be removal-able - same behaviour as square pos app.

We have attached screenshot for both orders visible on terminal -

Terminal details:

  • Model: Square Terminal (1st Generation, v2)

  • OS version: 5.67.0105

  • Square for Restaurants version: 7.23

  • Mode: Full Service, powered by Square for Restaurants

  • Square Point of Sale version: 7.22

Also here is order details:

Order 3: Test order Sept 12 #3.json
Order 4: Test order Sept 12 #4.json

Let us know if any more details needed - Thanks