Confirms a cart into a paid order (creation, payment and optional ticket registration).
POST/api/v1/order/confirm
Finalizes the cart by creating the order rows, paying them with the session payment mode, and optionally registering the tickets already printed by the partner (or requesting their server-side generation). Already confirmed cart items are replayed idempotently: their existing order rows are returned without being recreated and without burning a new order number.
SOAP Equivalent: AWSP_OrderConfirm (see docs/developer-guides/api-development/soap-endpoints-reference.md)
Examples
Success (200)
{
"orderId": 7001,
"orderItems": [
{ "orderItemId": 8001, "cartItemId": 201 },
{ "orderItemId": 8002, "cartItemId": 202 }
]
}
Error 400 - Missing x-tenant header
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "The x-tenant header is required"
}
Error 400 - Validation failed
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "CartId must be greater than 0 or CartItems must not be empty"
}
Error 400 - Order confirmation failed (legacy 10213)
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Order confirmation failed",
"status": 400,
"detail": "No requested cart item could be confirmed (legacy WSM_OrderConfirm 10213)."
}
Error 400 - Concurrent payment modification (10128)
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Concurrent payment modification",
"status": 400,
"detail": "Some order rows are no longer payable (modified concurrently). Nothing was applied — retry the confirmation."
}
Error 400 - Order paid, printing failed (10129)
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Order paid, printing failed",
"status": 400,
"detail": "The order was created and paid, but ticket printing failed. The order is valid — retry the confirmation to re-print (idempotent)."
}
Error 500 - Server error
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.1",
"title": "Internal Server Error",
"status": 500,
"detail": "An unexpected error occurred",
"traceId": "00-abc123-def456-00"
}
SOAP to REST Field Mapping
| REST Field | SOAP Field | Notes |
|---|---|---|
| cartId | id_TemporaryOrder | 0 is legal: the cart is resolved from the first cart item |
| cartItems[] | listTemporaryOrderRow | One entry per cart item (InterfaceFlag) to confirm |
| cartItems[].cartItemId | ID_TemporaryOrderRow | The InterfaceFlag identifier |
| cartItems[].isAlreadyPrinted | isAlredyPrinted | Legacy typo kept on the SOAP side only |
| cartItems[].seats[] | listSeat | Used only for printing (required when isAlreadyPrinted) |
| cartItems[].seats[].seatId | ID_Seat | The Article identifier |
| cartItems[].seats[].barCode | BarCode | "-1" requests the server-side generation |
| cartItems[].seats[].supportType | SupportType | 400=TICKET, 401=ETICKET, 402=CARTE, 403=MTICKET |
| cartItems[].seats[].supportId | ID_Support | Dead legacy field, accepted and ignored |
| cartItems[].seats[].fiscalNumber | FiscalNumber | "-1" requests the server-side generation |
| cartItems[].seats[].externOrderId | ExternOrderID | Dead legacy field, accepted and ignored |
| cartItems[].seats[].externIdentityId | ID_DistantIdentity | Dead legacy per-seat field, accepted and ignored |
| identities[] | listDetailconsumer | Only the main identity is persisted (legacy SaveConsumer) |
| identities[].externIdentityId | ID_DistantIdentity | Provider-side identity identifier |
| identities[].name | Name | |
| identities[].firstName | Surname | |
| identities[].address1..4 | Address1..4 | |
| identities[].zipCode | ZipCode | |
| identities[].city | City | |
| identities[].country | Country | |
| identities[].phone / mobile / email | Phone / Mobile / EMail | |
| mainIdentityId | id_IdentityMain | Selects the consumer among identities (0 = first one) |
| orderId (response) | ID_Order | |
| orderItems[] (response) | listIDOrderow | Cart item → order row mapping |
Idempotency & retry (important)
This endpoint is idempotent on retry of the same request. On any error or timeout, the partner
MUST retry the same confirmation (same cartId and same cartItems) — do not start over with a
new cart.
- Already-confirmed cart items are replayed: their existing order rows are returned, no new order number is burnt, and no second payment is made.
- The
400outcomes below are retriable:10128(concurrent payment modification — nothing was applied) and10129(order created and paid, but printing failed — retry re-prints idempotently). - Why retrying the same request matters: order creation persists row by row, so a failure midway can leave part of the cart already reserved against the order. Retrying the same confirmation completes the remaining rows into the same order and pays them. Starting a new cart instead would leave those reserved seats stranded (they are no longer in the cart, so the cart auto-cleanup does not reclaim them).
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 422
- 500
- 503
OK
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Content
Internal Server Error
Service Unavailable