CartBill
Server-side re-priced bill for the current cart. Every line is re-resolved through LinePricingService at read time — a line with no price in the requested currency throws NO_PRICE_IN_CURRENCY rather than falling back to the stored price (step 4).
type CartBill {
asOf: DateTime!
deliveryFee: Float
deliveryFeeWaived: Boolean!
deliveryOptionId: ID
deliveryQuoteRequired: Boolean!
deliverySelectionRequired: Boolean!
discountAmount: Float!
freeDeliveryRemaining: Float
freeDeliveryThreshold: Float
grandTotal: Float!
grossSubtotal: Float!
itemCount: Int!
lines: [CartBillLine!]!
subtotal: Float!
taxAmount: Float!
}
Fields
CartBill.asOf ● DateTime! non-null scalar
When the bill was worked out.
CartBill.deliveryFee ● Float scalar
Post-waiver delivery fee actually charged (0 when waived). Null only when deliverySelectionRequired — the store prices delivery live and no option is chosen yet.
CartBill.deliveryFeeWaived ● Boolean! non-null scalar
True when subtotal >= freeDeliveryThreshold (exactly-at waives).
CartBill.deliveryOptionId ● ID scalar
the live delivery option this bill's fee came from.
CartBill.deliveryQuoteRequired ● Boolean! non-null scalar
Box packing: true when the order is too heavy to price delivery live (delivery options code DELIVERY_FREIGHT_QUOTE) — it is placed with no delivery charge (deliveryFee 0) and the store quotes delivery afterwards. Show "Delivery quoted after ordering".
CartBill.deliverySelectionRequired ● Boolean! non-null scalar
true when the store prices delivery live and the buyer has not chosen a delivery option — deliveryFee is null and grandTotal excludes delivery until one is passed as deliveryOptionId.
CartBill.discountAmount ● Float! non-null scalar
Total discount across every line (baseUnitPrice − unitPrice, summed) — the seller-portal Discount row (0 when nothing applies).
CartBill.freeDeliveryRemaining ● Float scalar
What the cart still needs to reach freeDeliveryThreshold, on the basis the waiver is measured on (tax-inclusive lines at their gross); 0 once reached, null when there is no threshold.
CartBill.freeDeliveryThreshold ● Float scalar
The store's free-delivery threshold — the flat-fee one, or the live-price one on a store that prices delivery live (null = none).
CartBill.grandTotal ● Float! non-null scalar
subtotal + taxAmount + deliveryFee (parity chain).
CartBill.grossSubtotal ● Float! non-null scalar
The true GROSS, pre-discount total (Σ list price × qty) — the seller-portal-parity Subtotal row. Do not derive this as subtotal + discountAmount; that re-rounds an already-rounded net figure and can drift by a cent.
CartBill.itemCount ● Int! non-null scalar
How many items the cart has.
CartBill.lines ● [CartBillLine!]! non-null object
The lines of the bill.
CartBill.subtotal ● Float! non-null scalar
NET of discount (the tax base) — computed as round(grossSubtotal) − round(discountAmount), admin-parity (never round an exact net figure directly; see BUG-20260818).
CartBill.taxAmount ● Float! non-null scalar
Total tax on the bill (includes delivery-fee tax when the fee is charged).
Returned By
customerCartBill query