Cinema payments and orders
Build cinema checkout with screening, venue, seating, ticket delivery, concession, and payment context.
Keep tickets, assigned seats, concessions, and payment in one order lifecycle. DEUNA lets cinema teams sell the complete visit while retaining the event context required to issue tickets and support customers.
Screening-aware checkoutAttach the event date, venue, city, country, and screening identifiers.Seats and ticket holderPreserve assigned seating and the email that receives the digital ticket.Tickets plus concessionsCombine admission and food items with item-level pricing and tax.
Complete cinema order payload#
The event details live in shipping_options.details, while tickets and concessions remain distinct line items for operations and reconciliation.
Complete order payload
Cinema
Screening, venue, assigned seats, ticket delivery, and concessions in one order lifecycle.
itemsshipping_options.details.event_dateevent_seatingrecipient_emailRequest bodyJSON
{
"order_type": "DEUNA_CHECKOUT",
"order": {
"order_id": "cinema-77821",
"store_code": "mx-polanco-12",
"currency": "MXN",
"items_total_amount": 42000,
"sub_total": 42000,
"total_tax_amount": 6720,
"total_amount": 48720,
"items": [
{
"id": "show-20261115-1930-screen-05",
"sku": "ADULT-2D",
"name": "Two adult tickets",
"description": "Evening screening · Screen 5",
"options": "Seats E10 and E11",
"quantity": 2,
"category": "movie_tickets",
"type": "event",
"taxable": true,
"unit_price": {
"amount": 15000,
"currency": "MXN",
"currency_symbol": "$"
},
"total_amount": {
"amount": 30000,
"original_amount": 30000,
"currency": "MXN",
"currency_symbol": "$",
"total_discount": 0
},
"tax_amount": {
"amount": 4800,
"currency": "MXN",
"currency_symbol": "$"
}
},
{
"id": "concession-combo-02",
"sku": "POPCORN-COMBO-L",
"name": "Large popcorn combo",
"quantity": 1,
"category": "concessions",
"taxable": true,
"unit_price": {
"amount": 12000,
"currency": "MXN",
"currency_symbol": "$"
},
"total_amount": {
"amount": 12000,
"original_amount": 12000,
"currency": "MXN",
"currency_symbol": "$",
"total_discount": 0
},
"tax_amount": {
"amount": 1920,
"currency": "MXN",
"currency_symbol": "$"
}
}
],
"shipping_options": {
"type": "pickup",
"method": "digital_ticket",
"requires_shipping": false,
"details": {
"store_id": "mx-polanco-12",
"store_name": "Polanco Cinema",
"address": "Avenida Ejército Nacional 843, Ciudad de México",
"address_coordinates": {
"lat": 19.4391,
"lng": -99.2019
},
"contact": {
"name": "Guest services",
"phone": "+525500000000"
},
"event_date": "2026-11-15T19:30:00-06:00",
"event_seating": "E10, E11",
"event_city": "Ciudad de México",
"event_country_code": "MX",
"recipient_email": "alex@example.com"
}
},
"payer_info": {
"email": "alex@example.com"
},
"expires_at": "2026-11-15T19:15:00-06:00",
"metadata": {
"vertical": "cinema",
"movie_id": "movie-4408",
"format": "2D"
},
"callback_urls": {
"on_success": "https://merchant.example.com/payments/success",
"on_pending": "https://merchant.example.com/payments/pending",
"on_reject": "https://merchant.example.com/payments/rejected",
"on_canceled": "https://merchant.example.com/payments/canceled",
"on_failed": "https://merchant.example.com/payments/failed"
}
}
}Model the business context#
| Requirement | Order fields |
|---|---|
| Screening | event_date, store and movie identifiers |
| Venue | store_id, store_name, address, city, country, and coordinates |
| Seats | event_seating and ticket item options |
| Ticket delivery | recipient_email and payer contact |
| Concessions | Separate items[] with their own SKU, quantity, tax, and total |
Production checklist#
- Keep the cinema show ID and seat reservation stable through the payment attempt.
- Make the order expiration consistent with the reservation system’s hold duration.
- Separate ticket and concession lines for tax, fulfillment, refund, and reporting needs.
- Send the correct ticket recipient when the buyer and attendee differ.
- Test seat-hold expiry, retry, partial refund, canceled screening, and webhook delay scenarios.
Continue with Payment workflow and statuses and Webhooks.