Endpoint: POST /event/event/{event_id}/checkout/
Autenticação: Pública (sem auth) Endpoint público destinado ao comprador. Cria um EventCheckout para um ou mais ingressos de um evento, captura a identidade do comprador, aplica opcionalmente um cupom de desconto e reserva o estoque. O checkout é criado com status PENDING e permanece pagável por 20 minutos (após isso transita para EXPIRED). Se o total final ficar abaixo de um centavo (por exemplo, com um cupom de 100%), o checkout é promovido automaticamente para FREE e os e-mails de confirmação são disparados. O estoque é reservado contabilizando checkouts em PENDING/PAID/FREE contra a quantity do EventTicket — checkouts PENDING com mais de 16 minutos são expirados automaticamente antes da contagem.

Pré-requisitos

  • O evento deve existir e ser acessível pelo contexto público.
  • Cada id de ingresso enviado deve pertencer ao mesmo evento da URL.
  • Para cada id de ingresso solicitado, quantity_available deve cobrir a quantidade pedida, caso contrário um 400 é retornado.
  • Todas as questions configuradas no ingresso devem ser respondidas, com valores compatíveis com o tipo declarado (LIST, RADIO, STRING, INTEGER, DATE, EMAIL, PHONE, CPF).
  • Se coupon_code for informado, deve corresponder a um cupom do evento (case-insensitive — códigos são convertidos para maiúsculas no servidor).

Parâmetros de caminho

string (uuid)
required
Evento ao qual o checkout pertence.

Corpo da requisição

object
required
Identidade do comprador.
array
required
Uma entrada por ingresso individual sendo comprado (repita o mesmo ticket id para comprar várias unidades do mesmo tipo).
string
Opcional. É feito trim e conversão para maiúsculas antes da consulta.

Resposta

201 Created com o resumo do checkout.
string (uuid)
Use este id para acionar os endpoints de pagamento (pay, payment_details, tickets).
string
PENDING (pendente) para eventos pagos, FREE (gratuito) quando o total com desconto chega a zero.
integer
Valor final a ser pago, em centavos de BRL.
integer
Soma dos ticket.amount antes do desconto, em centavos de BRL.
integer
Desconto aplicado, em centavos de BRL.
object
Eco dos dados do comprador enviados.
array
Cada entrada: id (id do ingresso do checkout), ticket (id do tipo de ingresso), question_answers.

Ações relacionadas no mesmo recurso

Estas rotas adicionais também são públicas:
  • GET /event/event/{event_id}/checkout/{checkout_id}/ — retorna dados de pagamento: status, totais, resumo dos ingressos e payment_plan (allowPix, allowCreditCard, maxInstallments, maxInstallmentsWithoutInterest). Expira o checkout automaticamente se a janela de 20 minutos já tiver passado.
  • POST /event/event/{event_id}/checkout/{checkout_id}/pay/ — envia os dados de pagamento (cartão ou PIX) e cria a transação subjacente. O corpo reutiliza o comprador capturado na criação. Retorna o payment_info do gateway (por exemplo, QR Code PIX, desafio 3DS). Retorna 400 se o checkout não estiver pagável.
  • POST /event/event/{event_id}/checkout/validate-coupon/ — corpo {"code": "..."}. Retorna {valid, coupon:{id,name,code,type,value}} ou {valid: false, error}.
  • GET /event/event/{event_id}/checkout/{checkout_id}/tickets/ — quando o checkout está pago, faz streaming de um PDF com os ingressos adquiridos. Caso contrário, renderiza uma página HTML de “não pago”.

Erros

Exemplos