Changelog
API and documentation changes relevant to integrated partners, most recent first. Additions are backward-compatible unless a row explicitly says otherwise.
2026-08-10 - Create venues for standalone restaurants
Additive - no breaking change.
- New endpoint:
GET /v1/pat/pos-types- discover which POS systems are available for venue creation (use itscodevalues asposType). - New endpoint:
POST /v1/pat/venues- create a venue for a restaurant that runs a supported POS (LIGHTSPEED_K_SERIES,SIMPHONY,SAAPAD) but is not yet in Mozrest. The venue is automatically added to your partner scope and the response includes the onboarding link where the restaurant connects its POS account, poll/featuresto know when the POS connection goes live. - Duplicate protection: if the restaurant's POS location is already connected to an existing Mozrest venue, the POS connection is rejected during onboarding ("location already connected"). Contact Mozrest support to request access to the existing venue instead.
2026-08-10 - Lightspeed K-Series live + synchronous grace window on deferred payments
Additive - no breaking change.
- The first deferred-confirmation POS is live: venues on Lightspeed K-Series can now be provisioned with
payAtTable.paymentForwarding = trueandpaymentConfirmation = "deferred". - On deferred venues Mozrest now holds the payment POST for a few seconds while the POS confirms. Most payments answer a synchronous
200 OKwith a terminalstatus;202 Accepted+ polling remains the contract for the slower tail. Keep the polling loop - nothing changes for integrations that already handle202, and nothing changes on immediate-confirmation venues. - Documentation clarified: the payment
amountis tip-inclusive, so a settle-up with a tip isamount = totalDue + tip. See Get bill - totalDue and Submit payment.
2026-07-13 - Payment lifecycle and status polling
Additive - no breaking change. All currently provisioned venues keep answering 200 OK with status: "confirmed" on the payment endpoint; existing integrations work unchanged.
- Every payment object now carries three new fields:
status(pending/confirmed/failed),failureCode(stable slug, set only on failure), andconfirmedAt. See Submit payment - payment lifecycle. - New endpoint:
GET /v1/pat/venue/{venueId}/order/{orderId}/payment/{externalReference}- read back a payment's current state, keyed on your ownexternalReference. - Venues on deferred-confirmation POSs (none provisioned yet; the first will be Lightspeed K-Series) answer
202 Acceptedwithstatus: "pending"on the payment POST; you then poll the payment to a terminal state. Guaranteed terminal within 120 seconds. See the integration loop. /featuresgainspayAtTable.paymentConfirmation("immediate"or"deferred").- New
409cause on the payment POST: submitting a newexternalReferencewhile another payment on the same order is stillpending. See Errors. - The bill's
totals.paidand the auto-close rule now count confirmed payments only - pending and failed payments never settle the bill. - Idempotent replays now return the payment's current state (previously documented as the original snapshot), with the HTTP code matching that state.
2026-07-03 - Venue listing pagination and canonical bill items
GET /v1/pat/venuesgained pagination and filtering:offset(default 0),limit(default 10, max 100),filters[name],filters[city],filters[countryCode], plustotaland per-venuecityin the response. Behaviour change: the endpoint previously returned your full venue scope unpaginated; the default page size is now 10 - passlimit/offsetif you expect more than 10 venues.- Bill line items are now normalised to one canonical shape for every POS:
{ id, name, quantity, unitPrice, price, total }. Previously the fields present per item could vary with the venue's POS. - Documentation corrected to match actual API behaviour: the error envelope is nested (
{"error": {code, message, details}}), a missingAuthorizationheader returns403(an invalid token returns401with an OAuth-style body), and validation errors return the field map inerror.details.
2026-06-17 - Outstanding balance and partial-payment maturity
- The bill response gained
totals.prepayment,totals.paid, andtotals.totalDue- always chargetotalDue, nottotal, so deposits and earlier partial payments are accounted for. - Cumulative partial payments now auto-close the order once they cover the bill - no need to flip the last call to
type: "full". - Bill items gained
unitPriceandtotalper line. - Payment forwarding failures (
502) return a controlled, partner-displayableerror.message.
2026-05-11 - Initial sandbox availability
- Pay-at-Table API live on sandbox (
https://api-sandbox.mozrest.com): venue discovery, table listing, bill retrieval, payment submission (full and partial with tip), and per-venue feature discovery.