Orders

Order Types

Order, OrderItem, OrderTax, OrderDiscount, OrderCustomer, and OrderAmounts — the shapes returned by every Orders API endpoint.

Schemas returned by the Orders API and embedded inside CheckoutSession responses and Webhook payloads.

All monetary amounts are CurrencyAmount values (cents for USD).

Order

The full order resource.

FieldTypeDescription
idOrderIdUnique order identifier.
externalIdstring/nullYour internal order identifier, if provided at creation time. Unique per organization and mode.
providerstringOrder source: native for API-created orders, square or clover for POS.
currencystringCurrency code (e.g. USD).
statusstringopen, completed, or cancelled.
paymentStatusstringunpaid, partially_paid, paid, overpaid, partially_refunded, or refunded.
amountsOrderAmountsMonetary amounts for the order.
itemsOrderItem[]Line items.
taxesOrderTax[]Taxes applied to the order.
discountsOrderDiscount[]Discounts applied to the order.
customerOrderCustomer / nullCustomer snapshot at time of order.
shippingAddressShippingAddress / nullShipping address.
locationIdLocationId / nullID of the associated merchant location, if any.
metadataMetadata / nullKey/value data attached to the order.
paidAtDateTime / nullWhen payment was received.
createdAtDateTimeWhen the order was created.
updatedAtDateTimeWhen the order was last modified.

OrderAmounts

Grouped monetary amounts for the order.

FieldTypeDescription
subtotalCurrencyAmountSum of item totals.
taxCurrencyAmountTotal tax amount.
discountCurrencyAmountTotal discount amount.
tipCurrencyAmountTip amount.
totalCurrencyAmountAmount due: subtotal + tax - discount + tip.
paidCurrencyAmountAmount paid so far. Drives paymentStatus.

OrderItem

A line item on an order.

On create/update requests:

FieldTypeRequiredDescription
namestringyesDisplay name for the line item.
quantityintegeryesQuantity (must be a positive integer).
unitPriceCurrencyAmountyesPrice per unit. Must be non-negative.
descriptionstringnoItem description.
externalIdstringnoYour internal product identifier (SKU, POS ID, etc.).
metadataMetadatanoKey/value data for the item.

On responses, additional fields:

FieldTypeDescription
idstringItem identifier.
totalPriceCurrencyAmountunitPrice × quantity.
imageUrlstring/nullURL to an image for the item.
itemTypestringproduct for standard items, value_load for stored value reloads.

OrderTax

A tax line on the order.

On create/update requests:

FieldTypeRequiredDescription
typestringyesadditive (added on top of subtotal) or inclusive (already embedded in item prices).
amountCurrencyAmountyesTax amount. Must be positive.
namestringnoLabel shown on the receipt. Defaults to Tax.
externalIdstringnoYour internal tax identifier (e.g. from your POS or accounting system).

On responses, additional fields:

FieldTypeDescription
idstringTax identifier.
ratestring/nullPercentage rate as a string (e.g. 8.5) if applicable, otherwise null for flat amounts.
scopestringorder for order-level taxes, line_item for per-item taxes.

OrderDiscount

A discount line on the order. Provide one of two shapes on create/update depending on type.

Fixed amount (type: "fixed"):

FieldTypeRequiredDescription
typestringyesMust be fixed.
amountCurrencyAmountyesDiscount amount. Must be positive.
namestringnoLabel shown on the receipt. Defaults to Discount.
externalIdstringnoYour internal discount identifier (e.g. from your POS or coupon system).

Percentage (type: "percentage"):

FieldTypeRequiredDescription
typestringyesMust be percentage.
amountnumberyesPercentage to discount (e.g. 10 = 10% off). Must be 0–100.
namestringnoLabel shown on the receipt. Defaults to Discount.
externalIdstringnoYour internal discount identifier (e.g. from your POS or coupon system).

Percentage discounts are calculated against the entire items subtotal automatically.

On responses, every discount has the same shape regardless of type:

FieldTypeDescription
idstringDiscount identifier.
namestringDiscount label.
typestringfixed or percentage.
amountnumberFor fixed discounts: CurrencyAmount. For percentage discounts: the percentage value (e.g. 10).
scopestringorder for order-level discounts, line_item for per-item discounts.
externalIdstringYour internal discount identifier, if provided at creation time.

OrderCustomer

On create/update requests — provide one of these to associate or create a customer:

FieldTypeDescription
idCustomerIdExisting Decal customer ID.
externalIdstringYour own customer identifier. Creates a customer record if none exists for this external ID.
emailstringCustomer email. Creates the customer record if they don't exist.
phonestringCustomer phone number. Creates the customer record if they don't exist.
namestringCustomer display name.

Resolution priority: id > externalId > email > phone. When a new customer is created via email or phone, the provided externalId (if any) is also stored on the record.

On responses:

FieldTypeDescription
idCustomerId / nullDecal customer ID, if a customer record exists.
externalIdstring/nullYour own customer identifier, if set on the customer record.
emailstring/nullCustomer email address.
phonestring/nullCustomer phone number.
namestring/nullCustomer display name.