Skip to main content
POST
/
Sales
POST /Sales
curl --request POST \
  --url https://{base_url}/Sales \
  --header 'Content-Type: <content-type>' \
  --header 'X-API-KEY: <x-api-key>'
Submit a POS sale transaction to NowBookIt, optionally linking it to an existing booking. All monetary amounts are in cents (e.g. 2500 = $25.00).
X-API-KEY
string
required
Your API key
Content-Type
string
required
Must be application/json
Required body fields
FieldTypeDescription
origin.saleIdstringPOS-generated unique sale ID
source.typestringe.g. POS, ONLINE
typestringSALE, REFUND, or VOID
openedZonedDateTimestringUTC datetime the sale was opened
staff.idstringStaff member ID
table.seatsintegerNumber of seats
Optional body fields
FieldTypeDescription
origin.originalSaleIdstringParent sale ID for refunds
origin.locationIdstringPOS location ID
origin.locationNamestringPOS location name
locationIdstringNowBookIt integration location ID (required if configured)
closedZonedDateTimestringUTC datetime the sale was closed
bookingIdstringNowBookIt booking ID to link this sale to
table.numberstringTable number or label
customer.idstringCustomer ID
customer.namestringCustomer name
customer.notesstringCustomer notes
register.idstringPOS register ID
register.namestringPOS register name
section.idstringSection ID
section.namestringSection name
itemsarrayLine items — see below
paymentsarrayPayment records — see below
totalPriceTotal amount
subtotalPriceSubtotal before tax
taxPriceTax amount
discountsPriceDiscount amount
surchargesPriceSurcharge amount
Price object: { "amount": integer (cents), "currency": "AUD" } Item fields: id, name, category, quantity, unitPrice (Price), unitPriceTax (Price), total (Price), tax (Price) Payment fields: method, goodsAndServicesAmount (Price), status
curl --location '[BASE_URL]/Sales' \
--header 'X-API-KEY: your_api_key_here' \
--header 'Content-Type: application/json' \
--data '{ "origin": { "saleId": "pos-sale-9981" }, "source": { "type": "POS" }, "type": "SALE", "openedZonedDateTime": "2024-03-20T19:05:00Z", "staff": { "id": "staff-7" }, "table": { "seats": 4, "number": "5" } }'
Full Example Request Body
{
  "origin": { "saleId": "pos-sale-9981", "locationId": "loc-1", "locationName": "Main Venue" },
  "source": { "type": "POS" },
  "type": "SALE",
  "openedZonedDateTime": "2024-03-20T19:05:00Z",
  "closedZonedDateTime": "2024-03-20T20:45:00Z",
  "bookingId": "abc-123",
  "staff": { "id": "staff-7" },
  "table": { "seats": 4, "number": "5" },
  "total": { "amount": 18500, "currency": "AUD" },
  "items": [
    {
      "id": "item-1",
      "name": "Wagyu Steak",
      "category": "food",
      "quantity": 2,
      "unitPrice": { "amount": 6500, "currency": "AUD" },
      "unitPriceTax": { "amount": 591, "currency": "AUD" },
      "total": { "amount": 13000, "currency": "AUD" },
      "tax": { "amount": 1182, "currency": "AUD" }
    }
  ],
  "payments": [
    { "method": "EFTPOS", "goodsAndServicesAmount": { "amount": 18500, "currency": "AUD" }, "status": "APPROVED" }
  ]
}
StatusDescription
200Sale submitted
400Sales Record '{saleId}' previously processed. — duplicate sale
400Invalid Location Id {locationId}
400No Venue Subscribed to your App.
401X-API-KEY missing or invalid
409TransactionId - {saleId} currently being processed. — retry after ~1 min