Skip to main content
Create bookings through the public cart and checkout flow. For admin-side creation (orders/from-config), see Admin Booking Creation. For conventions, see JSON-API Conventions. For slot search, see Availability & Booking Search.

Prerequisites

  • Resource + service configuration exists
  • Cookies are enabled (cart and order authorization are cookie/query based)
  • Optional customer auth for prefilled fields

Canonical Path Docs


Flow Overview


1

Add Booking to Cart

add_ons_by_service and sub_bookings_by_service are mapped by service id and booking index:Legacy inputs (booking_add_ons, sub_bookings) still exist but are deprecated.Exact add-booking request fields (current request rules):Path docs: /api/v1/order/bookings in ../../paths/public/orders.yaml.Current cart:
2

Recommendations in Cart (Before Checkout)

Recommendations are a cart-time feature, not a post-order step.
3

Edit Cart and Voucher

Edit add-ons for one booking:
Remove one booking:
Remove multiple bookings:
Clear cart:
Apply voucher:
Remove voucher:
Optional booking pre-calculation:
4

Collect Checkout Data

Collect the customer data, payment method, and legal document acceptances required for the current organization.Public integrations should treat these requirements as organization-defined checkout configuration rather than depending on internal UI helper endpoints.
5

Optional Guest Email Verification

If guest email verification is enabled for the checkout flow, complete that verification before the final order submission.The external contract is the verify_guest_email field on POST /api/v1/order. Helper endpoints used by anny-hosted UIs are internal-only and not part of the external integration surface.
6

Submit Checkout

Customer and address are submitted as separate objects. Keep customer fields under customer.* and address fields under address.*.
Validation depends on the organization’s checkout configuration and selected payment method. Address fields returned by the form are organization-country aware (for example state/area is only returned where relevant).
7

Handle Payment Redirect

If meta.payment.next_action.type = redirect, send the customer to meta.payment.next_action.url.On the hosted booking page and in embedded widgets, methods that leave anny (PayPal, iDEAL, giropay, Sofort, Bancontact, EPS, Przelewy24, TWINT) open that URL in a centered popup. Card and SEPA stay in the widget (Stripe overlay). If the browser blocks the popup, checkout continues in the widget itself.After the provider returns the customer, proceed to Step 8 to fetch the completed order.
8

Fetch Last Succeeded Orders

last-succeeded authorization is token-pair based and requires matching oids[] and oats[] arrays.

Common Errors