> ## Documentation Index
> Fetch the complete documentation index at: https://docs.centralcart.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Checkout

> Cria um pedido e retorna os dados de pagamento.
<Note>O formato da resposta muda conforme o método: gateways com página hospedada devolvem `checkout_url` para redirecionar o comprador. O PIX devolve o código copia-e-cola, o QR Code e a URL de acompanhamento do pedido. Consulte `GET /webstore/gateway` antes de chamar: enviar um checkout sem `client_document` para um gateway que o exige resulta em `422`.</Note>



## OpenAPI

````yaml /openapi/storefront-checkout.yaml post /webstore/checkout
openapi: 3.1.0
info:
  title: CentralCart Storefront API (Checkout)
  version: 1.0.0
  description: >-
    Carrinho, upsells, cupons, criação de pedido e acompanhamento do pagamento.
    Nenhum destes endpoints exige autenticação. A loja é resolvida pelo header
    `x-store-domain`.
servers:
  - url: https://api.centralcart.io/v1
    description: Produção
security: []
paths:
  /webstore/checkout:
    post:
      tags:
        - Checkout
      summary: Create Checkout
      description: >-
        Cria um pedido e retorna os dados de pagamento.

        <Note>O formato da resposta muda conforme o método: gateways com página
        hospedada devolvem `checkout_url` para redirecionar o comprador. O PIX
        devolve o código copia-e-cola, o QR Code e a URL de acompanhamento do
        pedido. Consulte `GET /webstore/gateway` antes de chamar: enviar um
        checkout sem `client_document` para um gateway que o exige resulta em
        `422`.</Note>
      operationId: createWebstoreCheckout
      parameters:
        - $ref: '#/components/parameters/StoreDomain'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - gateway
                - client_email
                - client_name
              properties:
                gateway:
                  type: string
                  description: >-
                    Método de pagamento. Use um dos valores devolvidos por `GET
                    /webstore/gateway`.
                  enum:
                    - PIX
                    - CREDITCARD
                    - MERCADOPAGO
                    - STRIPE
                    - PAYPAL
                    - PICPAY
                    - OTHER
                client_email:
                  type: string
                  description: Email do comprador
                client_name:
                  type: string
                  description: >-
                    Nome completo do comprador. Apenas letras e separadores
                    simples.
                client_phone:
                  type: string
                  description: Telefone do comprador
                client_document:
                  type: string
                  description: CPF do comprador. Validado quando enviado.
                client_discord:
                  type: string
                  description: Discord ID do comprador
                client_identifier:
                  type: string
                  description: Identificador do comprador no jogo ou serviço.
                client_address:
                  type: object
                  description: >-
                    Endereço do comprador. Exigido pelos gateways que declaram
                    `require_address`.
                  required:
                    - cep
                    - street
                    - number
                    - neighborhood
                    - city
                    - state
                  properties:
                    cep:
                      type: string
                    street:
                      type: string
                    number:
                      type: string
                    complement:
                      type: string
                    neighborhood:
                      type: string
                    city:
                      type: string
                    state:
                      type: string
                fields:
                  type: object
                  description: >-
                    Campos personalizados de checkout, com a chave sendo o
                    `name` devolvido por `GET /webstore/checkout_fields`.
                  additionalProperties: true
                cart:
                  type: array
                  items:
                    type: object
                    required:
                      - package_id
                      - quantity
                    properties:
                      package_id:
                        type: number
                        description: ID do pacote
                      quantity:
                        type: number
                        description: Quantidade (1 a 999999)
                      options:
                        type: object
                        description: Valores dos campos personalizados deste produto.
                        additionalProperties: true
                      fields:
                        type: object
                        description: Alias para `options`
                        additionalProperties: true
                      is_upsell:
                        type: boolean
                        description: Marca o item como oferta de upsell.
                      upsell_trigger_id:
                        type: number
                        nullable: true
                        description: >-
                          Produto-gatilho da regra de upsell, conforme devolvido
                          por `POST /webstore/upsells`. O preço de oferta é
                          sempre re-resolvido no servidor, e o valor enviado
                          pelo cliente é ignorado.
                coupon:
                  type: string
                  description: Cupom de desconto
                affiliate_code:
                  type: string
                  nullable: true
                  description: >-
                    Código do afiliado que indicou a venda. Quando ausente, a
                    API usa o cookie de indicação `_cc_ref`, se presente na
                    requisição.
                installments:
                  type: number
                  description: Número de parcelas (1 a 12). Somente para `CREDITCARD`.
                payment_token:
                  type: string
                  description: Token do cartão gerado client-side pelo SDK do provider.
                tracking:
                  type: object
                  nullable: true
                  description: >-
                    Dados de atribuição da sessão (UTMs e afins). Cookies de
                    tracking presentes na requisição (`_gcl_aw`, `_fbc`, `_fbp`,
                    `_ttp`) são incorporados automaticamente.
                  additionalProperties: true
            example:
              gateway: PIX
              client_email: comprador@example.com
              client_name: João da Silva
              client_phone: '+5511999999999'
              client_document: '12345678900'
              client_discord: '123456789012345678'
              fields:
                client_identifier: meu_id
              cart:
                - package_id: 1
                  quantity: 1
                  options:
                    nickname: jogador123
              coupon: PROMO10
      responses:
        '200':
          description: Checkout criado
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      checkout_url:
                        type: string
                  - type: object
                    properties:
                      pix_code:
                        type: string
                      qr_code:
                        type: string
                      return_url:
                        type: string
              examples:
                Response URL:
                  summary: Response URL
                  value:
                    checkout_url: https://example.com
                Response PIX:
                  summary: Response PIX
                  value:
                    pix_code: 00020126580014br.gov.bcb.pix013675174272...
                    qr_code: >-
                      iVBORw0KGgoAAAANSUhEUgAABRQAAAUUAQAAAACGnaNFAAANzElEQVR4Xu2Y...
                    return_url: https://sualoja.centralcart.ai/order/id
        '422':
          description: Dados inválidos ou campo obrigatório ausente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                  - message: Informe um e-mail válido.
      security: []
components:
  parameters:
    StoreDomain:
      name: x-store-domain
      in: header
      required: true
      description: 'Domínio da sua loja (ex: sualoja.centralcart.ai)'
      schema:
        type: string
  schemas:
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              code:
                type: string
              ref:
                type: string

````