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.

This guide covers the documented cinema fields. Other entertainment models use the standard order and supported merchant metadata; do not infer general event or ticketing fields from the cinema example.

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 request

Cinema

Process the payment in one request by sending the order, payer, and tokenized payment source inline.

POST/v2/merchants/orders/purchase

Screening, venue, assigned seats, ticket delivery, and concessions in one order lifecycle.

itemsshipping_options.details.event_dateevent_seatingrecipient_email
Request bodyJSON
{
  "payer_info": {
    "email": "alex@example.com"
  },
  "payment_source": {
    "method_type": "credit_card",
    "payment_method": "TOKENIZED_PAYMENT_METHOD"
  },
  "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"
      }
    },
    "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.