Skip to main content
On this page

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.

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_email
Request 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#

RequirementOrder fields
Screeningevent_date, store and movie identifiers
Venuestore_id, store_name, address, city, country, and coordinates
Seatsevent_seating and ticket item options
Ticket deliveryrecipient_email and payer contact
ConcessionsSeparate 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.