Booking API error codes

Last verified
Last verified Sep 23, 2026

This reference lists the errors your application is most likely to meet when it builds a cart and completes checkout with the Booking API, and how to react to each one.

How errors are reported

The Booking API reports problems in two places.

WhereWhenWhat to do
Top-level errors of the responseValidation failed before execution, or a field failed during execution.Fix the request. For a token of the wrong kind, send the correct cart or invoice token. See the token recovery guidance below.
errors in the mutation resultThe operation ran and was rejected, for example because a time slot is sold out.Branch on message, show messageTranslated, and let the customer correct the input.

Schema validation and variable coercion errors prevent execution. Errors raised during execution can accompany partial data: another mutation field may already have succeeded and saved changes. Top-level errors do not prove that no write occurred. Inspect the returned data and each error's path, and read the cart and any invoice before repeating writes.

Each mutation error has three fields:

FieldContent
keyThe input the error refers to, as a path such as requestItems.0.pricings.0.quantity. Indexes count from 0.
messageA machine-readable code such as invalid. Use it to decide how your application reacts.
messageTranslatedText in the Accept-Language language for customers. For some codes, such as missing_required, it repeats the code; show your own text for those.

Do not branch on messageTranslated: its wording can change. The messages and messagesTranslated lists are deprecated.

Top-level errors

Message containsCauseWhat to do
Not authorizedThe cart or invoice token is invalid or has expired.For an unusable or expired cart token, start a new cart. For an invoice, use a valid token for that same invoice.
expected: RequestA token of the wrong kind was sent, for example an invoice token as the cart token.Send the cart token.
was provided invalid valueA variable does not match its input type.Check the variables against the reference.
doesn't exist on typeThe query selects a field that the Booking API does not offer.Remove the field or check the reference.

Adding and changing cart lines

These errors come from requestItemCreate, requestItemUpdate and requestItemDiscard, and from lines sent with requestUpdate. Keys start with requestItems.0 even when you add a single line.

KeyMessageCauseWhat to do
requestItems.0.pricings.0.quantitysum_less_than_or_equal_toNot enough places are left for the requested quantity.Lower the quantity or let the customer choose another date or slot.
requestItems.0.pricings.0.quantitygreater_than_or_equal_to, less_than_or_equal_toThe quantity is outside the price category's minimum or maximum number of people.Adjust the quantity.
requestItems.0.offerableSpanrequired, invalidAn event template or admission line has no time slot, or the slot does not exist.Send a span returned by the time slot query.
requestItems.0.offerableIdinvalidThe offer does not exist or is not published.Reload the offers.
requestItems.0.offerableIdexclusively_bookedAnother customer has booked the whole event exclusively.Let the customer choose another event.
resourceRequirementsno_available_resourcesStaff or rooms needed for the booking are not available at that time.Let the customer choose another time.
requestIdinvalidThe cart does not exist or its reservation expired.Start a new cart.
requestIdnot_editableThe order was canceled or can no longer be changed, for example after it was paid.Start a new cart for further purchases.
checkoutHoldexpiredThe checkout hold ended and KORONA Event canceled the cart.Start a new cart.
idlockedCheckout is running for this cart at the same moment.Wait briefly and read the cart before trying again.

Customer data

These errors come from requestUpdate.

KeyMessageCauseWhat to do
contact.emailblankThe email address is missing.Ask for an email address.
contact.emailinvalid_addressThe email address is not valid.Ask the customer to correct it.
idpayment_existsA payment for this cart is in progress.Do not change the cart. Follow the payment on the invoice.
idalready_canceledThe cart was canceled.Start a new cart.

Codes

These errors come from requestApplyCode and requestRemoveCode.

KeyMessageCauseWhat to do
codeinvalidThe code is unknown, expired, used up, has no remaining value, is already applied, or does not apply to the cart. When removing, the code is not applied to the cart.Tell the customer the code cannot be used.
codealready_redeemedA promotion code has reached its redemption limit.Tell the customer the code cannot be used.
requestItemblankThe voucher must be redeemed for a product. The result lists the choices in followUpProducts.Let the customer choose a product and apply the code again with requestItem.
requestIdnot_editableThe order can no longer be changed.Start a new cart.

Checkout

These errors come from requestPaymentInitiate. For input validation errors, correct the input before trying again. An expired checkout hold cancels the cart. With id:locked, another checkout may still finish and change the cart; wait and read the cart and any invoice before deciding whether checkout is still needed.

KeyMessageCauseWhat to do
contactblankThe cart has no customer.Add the customer with requestUpdate first.
legalDocumentAcceptancesmissing_requiredA required legal document was not accepted.Show the document and send its acceptance.
legalDocumentAcceptances.0.legalDocumentVersioninvalidThe accepted version is not the current one. The document changed after it was shown.Reload the documents, show them again and send the new publishedAt.
legalDocumentAcceptances.0.legalDocumentIdinvalidThe document does not exist.Reload the documents.
withdrawalEarlyStartConsentmissing_requiredA cart line needs the customer's consent to start before the withdrawal period ends.Ask for the consent and send it with accepted: true.
withdrawalEarlyStartConsentinvalidrequestItemIds does not list exactly the lines that need consent.Send the ids of every line with requiresWithdrawalEarlyStartConsent.
idcustom_fields_incompleteRequired booking or attendee details are missing.Send the customer to the hosted pages that collect them, or collect them before checkout.
checkoutPolicyTARGET_STATE_CONFLICT, PAYMENT_METHOD_CONFLICTThe cart mixes offers that cannot be checked out together.Split the cart.
checkoutHoldexpiredThe checkout hold ended and the cart was canceled.Start a new cart.
idlockedAnother checkout request for this cart is running.Wait and read the cart and any invoice before deciding whether checkout is still needed.

Expired checkout holds

Send exactly one of requestId (the cart token) or invoiceToken to requestCancelExpiredCheckoutHold. If an anonymous caller omits both, the response has a top-level Not authenticated error. Send one of the tokens and retry.

The mutation can return these payload errors:

KeyMessageCauseWhat to do
checkoutHoldnot_expiredThe hold is still running.Wait until secondsRemaining reaches zero.
idinvalidBoth requestId and invoiceToken were sent.Send exactly one of them.
idblankAn authenticated caller omitted both requestId and invoiceToken.Send exactly one of them.

General codes

Other inputs use these general codes.

MessageMeaning
blank, requiredA required value is missing.
invalidThe value is not allowed or does not exist.
takenThe value must be unique and is already used.
greater_than_or_equal_to, less_than_or_equal_toThe value is below the minimum or above the maximum.

Ready to Get Started?

Book a free demo or reach out — we’d love to hear from you.