Skip to main content

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