---
title: "Price a shop order"
method: POST
path: "/v1/orders/quote"
tags: ["Shop"]
---

# Price a shop order

`POST /v1/orders/quote`

## Request

- Base URL: `https://api.nogpets.com`
- URL: `https://api.nogpets.com/v1/orders/quote`
- Auth: none required

The server's prices, delivery, discount and total. Never fails on stock or a bad code; it reports them in `problems`, `discountError`, `shippingError`.

## Request body

- OrderQuoteRequest
  - `items` OrderItem[], required
    - `productId` string, required
    - `variantId` string
    - `qty` integer, required
  - `shippingMethod` string, required
  - `postalCode` string
  - `bookingId` string
  - `discountCode` string

## Response `200`

The quote

- OrderQuote
  - `items` object[], required
  - `subtotalCents` integer, required
  - `discount` object, nullable
  - `discountError` string, nullable
  - `shippingMethod` string, nullable
  - `shipping` object, nullable
  - `shippingCents` integer, required
  - `shippingError` string, nullable
  - `totalCents` integer, required
  - `problems` object[], required
  - `ok` boolean, required

## Other responses

- `400`: The input is wrong (`INVALID_ARGUMENT`, or a pricing code such as `ONE_PRIMARY`, `PET_TYPE`, `UNKNOWN_SERVICE`).
- `409`: A rule said no: `NO_COVERAGE`, `NO_AVAILABILITY`, `SLOT_TAKEN`, `TOO_LATE`, `CONFIRM_REQUIRED` (with `details.summary`), `NOTHING_TO_PAY`, `SHOP_OFF`, `STOCK`, `SHIPPING`, `DISCOUNT`, `CASH`, `FAILED_PRECONDITION`; business sign-up: `UNDER_REVIEW`, `APPROVED`, `NOT_READY`, `TOO_MANY`, `LISTING_TAKEN`, `PAYFAST_ZA_ONLY`. `NO_COVERAGE` carries `details.leadId`, `details.message` (tell the person) and `details.next`.
- `429`: Too many requests (`RATE_LIMIT`). `Retry-After` says when to try again.

---

[API](https://skmtc.dev/nogpets/apis/nogpets-api.md) · [All operations](https://skmtc.dev/nogpets/apis/nogpets-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nogpets/apis/nogpets-api/revisions/a202c1012173?raw)
