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

# Criar Pedido

Este endpoint permite criar pedidos e processar pagamentos usando diferentes métodos (cartão, PIX, boleto, Google Pay), com suporte completo a parcelamento, split de pagamento, 3D Secure e Network Tokens.

## Idempotência (obrigatória)

Esta rota **exige** o header `Idempotency-Key` — uma chave única que você gera por cobrança (ex.: um UUID). **Sem ele, a resposta é `400`.**

```http theme={null}
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
```

Como o middleware trata a chave (reserve-before):

* **Repetição segura (replay):** a **mesma chave** com o **mesmo corpo** devolve a **resposta original**, sem criar uma segunda cobrança — ideal para retry após timeout de rede.
* **Conflito (`409`):** a mesma chave com um **corpo diferente** é rejeitada.
* **Em voo:** se a primeira requisição com aquela chave ainda está processando, a segunda recebe **`409`** com o header **`Retry-After`** (segundos para tentar de novo).

<Warning>
  Gere uma chave **por intenção de cobrança**, não por request: se o cliente clicou "pagar" uma vez,
  use a **mesma** `Idempotency-Key` em todos os retries daquela cobrança.
</Warning>

## Parâmetros Obrigatórios

<ParamField body="description" type="string" required>
  Descrição do pedido

  **Máximo:** 255 caracteres
</ParamField>

<ParamField body="code" type="string" required>
  Referência única para este pedido no sistema do comerciante

  **Exemplo:** `ORDER-2024-001` | **Máximo:** 255 caracteres
</ParamField>

<ParamField body="mcc" type="string" required>
  Merchant Category Code (código de categoria do estabelecimento)

  **Formato:** 4 dígitos | **Exemplo:** `5411` (supermercado)
</ParamField>

## Parâmetros Opcionais

<ParamField body="notification_url" type="string">
  URL para receber notificações de mudança de status (webhook)

  **Exemplo:** `https://seusite.com/webhook/autorizou`
</ParamField>

### Dados do Cliente

<ParamField body="customer" type="object" required>
  <Expandable title="Informações do cliente">
    <ParamField body="customer.id" type="integer" required>
      ID do cliente (cadastrado previamente)

      **Nota:** Usar endpoint [Criar Cliente](/api-reference/customers/create-customer) numa etapa anterior ao pagamento.
    </ParamField>

    <ParamField body="customer.name" type="string" required>
      Nome completo do cliente

      **Máximo:** 64 caracteres
    </ParamField>

    <ParamField body="customer.email" type="string" required>
      Email válido do cliente

      **Máximo:** 64 caracteres
    </ParamField>

    <ParamField body="customer.documents" type="array">
      Lista de documentos do cliente

      **Obrigatório se:** `payment_method` for `pix` ou `bank_slip`

      <Expandable title="Estrutura do documento">
        <ParamField body="customer.documents[].type" type="string" required>
          Tipo do documento

          **Valores:** `CPF`, `CNPJ`
        </ParamField>

        <ParamField body="customer.documents[].value" type="string" required>
          Número do documento (apenas dígitos)

          **Exemplo CPF:** `12345678901` | **Exemplo CNPJ:** `12345678000195`
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="customer.addresses" type="array">
      Endereços do cliente (opcional mas recomendado). Não necessário se já cadastrado na etapa de criação do cliente.
      Recomendando para aumentar % de conversão com cartões de crédito.

      **Obrigatório se:** `payment_method` for `bank_slip`

      <Expandable title="Estrutura do endereço">
        <ParamField body="customer.addresses[].type" type="string">
          Tipo do endereço

          **Valores:** `billing` (cobrança), `shipping` (entrega)
        </ParamField>

        <ParamField body="customer.addresses[].postal_code" type="string">
          CEP (apenas números, sem traços ou pontos)

          **Exemplo:** `"01310100"` | **Formato:** String numérica de 8 dígitos
        </ParamField>

        <ParamField body="customer.addresses[].line_1" type="string">
          Logradouro (rua, avenida, etc.)
        </ParamField>

        <ParamField body="customer.addresses[].line_2" type="string">
          Complemento (apartamento, sala, etc.)
        </ParamField>

        <ParamField body="customer.addresses[].number" type="string">
          Número do endereço
        </ParamField>

        <ParamField body="customer.addresses[].neighborhood" type="string">
          Bairro
        </ParamField>

        <ParamField body="customer.addresses[].city" type="string">
          Cidade
        </ParamField>

        <ParamField body="customer.addresses[].state" type="string">
          Estado (2 caracteres)

          **Exemplo:** `SP`, `RJ`
        </ParamField>

        <ParamField body="customer.addresses[].country" type="string">
          País (ISO 3166-1 alpha-2)

          **Exemplo:** `BR`
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="customer.phone" type="object">
      Telefone de contato (opcional mas recomendado)

      <Expandable title="Estrutura do telefone">
        <ParamField body="customer.phone.type" type="string">
          Tipo do telefone

          **Valores:** `mobile`, `home`, `work`
        </ParamField>

        <ParamField body="customer.phone.ddi" type="string">
          Código internacional do país

          **Exemplo:** `55` (Brasil)
        </ParamField>

        <ParamField body="customer.phone.ddd" type="string">
          Código de área

          **Exemplo:** `11` (São Paulo)
        </ParamField>

        <ParamField body="customer.phone.number" type="string">
          Número do telefone (apenas dígitos)

          **Exemplo:** `987654321`
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

### Dados do Pagamento

<ParamField body="payment" type="object" required>
  <Expandable title="Configurações de pagamento">
    <ParamField body="payment.amount" type="integer" required>
      Valor total em centavos

      **Exemplo:** `10000` = R$ 100,00 | **Mínimo:** `500` (R$ 5,00)
    </ParamField>

    <ParamField body="payment.currency" type="string" required>
      Moeda do pagamento (padrão ISO 4217)

      **Valor:** `BRL`
    </ParamField>

    <ParamField body="payment.payment_method" type="string" required>
      Método de pagamento

      **Valores:** `credit_card`, `pix`, `bank_slip`, `google_pay`, `apple_pay`
    </ParamField>

    <ParamField body="payment.installments" type="integer" required>
      Número de parcelas

      **Padrão:** `1` | **Mínimo:** `1` | **Máximo:** `12`

      **Restrições:**

      * Parcelamento disponível **apenas** para `credit_card` e `google_pay`
      * PIX e boleto **devem** usar `installments = 1`
      * Parcelamento **só é permitido** para moeda `BRL` (Real Brasileiro)
    </ParamField>

    <ParamField body="payment.discount" type="integer">
      Valor de desconto em centavos

      **Exemplo:** `500` = R\$ 5,00 de desconto
    </ParamField>

    <ParamField body="payment.interest" type="integer">
      Valor de juros em centavos

      **Exemplo:** `200` = R\$ 2,00 de juros
    </ParamField>

    <ParamField body="payment.metadata" type="object">
      Metadados customizados do pagamento (formato JSON livre)

      Use este campo para armazenar informações adicionais sobre o pagamento que sejam relevantes para seu sistema (ex: `order_id`, `campaign_id`, `user_tier`, etc.)

      **Exemplo:** `{"order_id": "12345", "campaign": "black-friday"}`
    </ParamField>
  </Expandable>
</ParamField>

### Pagamento com Cartão de Crédito

<ParamField body="payment.credit_card" type="object">
  **Obrigatório quando:** `payment_method = "credit_card"`

  <Expandable title="Configurações de cartão">
    <ParamField body="payment.credit_card.id" type="integer" required>
      ID interno do cartão salvo previamente

      **Nota:** Use o endpoint [Criar Cartão](/api-reference/cards/create-card) primeiro
    </ParamField>

    <ParamField body="payment.credit_card.statement_descriptor" type="string" required>
      Nome que aparece na fatura do cartão

      **Máximo:** 22 caracteres | **Exemplo:** `LOJA*PRODUTO`
    </ParamField>

    <ParamField body="payment.credit_card.capture" type="boolean" required>
      Se deve capturar automaticamente o pagamento

      **Valores:** `true` (captura imediata), `false` (captura manual posterior)
    </ParamField>

    <ParamField body="payment.credit_card.capture_delay_hours" type="integer">
      Horas de atraso para captura automática

      **Obrigatório se:** `capture = false` | **Mínimo:** `0`
    </ParamField>

    <ParamField body="payment.credit_card.processing_model" type="string" required>
      Modelo de processamento do cartão, indica quem iniciou o pagamento e se o cliente está presente no ato do pagamento.

      **Valores:** `customer_initiated`, `merchant_initiated`, `merchant_initiated_subscription`
    </ParamField>
  </Expandable>
</ParamField>

### Pagamento PIX

<ParamField body="payment.pix" type="object">
  **Obrigatório quando:** `payment_method = "pix"`

  <Expandable title="Configurações PIX">
    <ParamField body="payment.pix.expires_at" type="string" required>
      Data/hora de expiração do QR Code (ISO 8601)

      **Exemplo:** `2024-12-31 23:59:59` | **Deve ser:** Após agora e antes de 24h
    </ParamField>
  </Expandable>
</ParamField>

### Pagamento com Boleto

<ParamField body="payment.bank_slip" type="object">
  **Obrigatório quando:** `payment_method = "bank_slip"`

  <Expandable title="Configurações de boleto">
    <ParamField body="payment.bank_slip.due_at" type="string" required>
      Data de vencimento do boleto (ISO 8601)

      **Exemplo:** `2024-12-31 23:59:59` | **Deve ser:** Após agora
    </ParamField>
  </Expandable>
</ParamField>

### Pagamento com Google Pay

<ParamField body="payment.google_pay" type="object">
  **Obrigatório quando:** `payment_method = "google_pay"`

  <Expandable title="Configurações Google Pay">
    <ParamField body="payment.google_pay.google_pay_token" type="string" required>
      Token gerado pelo Google Pay
    </ParamField>

    <ParamField body="payment.google_pay.statement_descriptor" type="string" required>
      Nome que aparece na fatura

      **Máximo:** 22 caracteres
    </ParamField>

    <ParamField body="payment.google_pay.capture" type="boolean" required>
      Se deve capturar automaticamente
    </ParamField>

    <ParamField body="payment.google_pay.capture_delay_hours" type="integer">
      Horas de atraso para captura

      **Obrigatório se:** `capture = false`
    </ParamField>
  </Expandable>
</ParamField>

### Pagamento com Apple Pay

<ParamField body="payment.apple_pay" type="object">
  **Obrigatório quando:** `payment_method = "apple_pay"`

  <Expandable title="Configurações Apple Pay">
    <ParamField body="payment.apple_pay.apple_pay_token" type="string">
      Token gerado pelo Apple Pay (objeto JSON stringificado)

      Este token é obtido do evento `onpaymentauthorized` do `ApplePaySession`. Deve ser o `JSON.stringify(event.payment)` — o objeto `ApplePayPayment` completo, **não** apenas `event.payment.token`.

      **Obrigatório:** Sim, exceto se `digital_wallet_uuid` for fornecido (para pagamentos recorrentes)

      **Exemplo de uso:**

      ```javascript theme={null}
      apple_pay_token: JSON.stringify(event.payment)
      ```

      **Estrutura esperada:**

      ```json theme={null}
      {
        "token": {
          "paymentData": {
            "version": "EC_v1",
            "data": "...",
            "signature": "...",
            "header": {
              "ephemeralPublicKey": "...",
              "publicKeyHash": "...",
              "transactionId": "..."
            }
          },
          "paymentMethod": {
            "displayName": "Visa 1234",
            "network": "Visa",
            "type": "credit"
          },
          "transactionIdentifier": "..."
        },
        "billingContact": {},
        "shippingContact": {}
      }
      ```
    </ParamField>

    <ParamField body="payment.apple_pay.digital_wallet_uuid" type="string">
      UUID da carteira digital salva anteriormente

      Use este campo para cobranças recorrentes com Apple Pay. Quando fornecido, o `apple_pay_token` não é necessário.

      **Formato:** UUID válido

      **Exemplo:** `"550e8400-e29b-41d4-a716-446655440000"`
    </ParamField>

    <ParamField body="payment.apple_pay.statement_descriptor" type="string" required>
      Nome que aparece na fatura do cartão

      **Máximo:** 22 caracteres | **Exemplo:** `MINHA LOJA`
    </ParamField>

    <ParamField body="payment.apple_pay.capture" type="boolean" required>
      Se deve capturar automaticamente o pagamento

      **Valores:** `true` (captura imediata), `false` (captura manual posterior)
    </ParamField>

    <ParamField body="payment.apple_pay.capture_delay_hours" type="integer">
      Horas de atraso para captura automática

      **Obrigatório se:** `capture = false` | **Mínimo:** 0 | **Máximo:** 168 (7 dias)
    </ParamField>
  </Expandable>
</ParamField>

<Info>
  **Novo!** Apple Pay agora está disponível. Veja o [guia completo de integração](/api-reference/payments/apple-pay-integration) para começar.
</Info>

### Split de Pagamento

<ParamField body="payment.split" type="array">
  Divisão do pagamento entre múltiplos destinatários

  <Expandable title="Configuração do split">
    <ParamField body="payment.split[].recipient_id" type="integer" required>
      ID interno do destinatário cadastrado

      **Nota:** Use o endpoint [Criar Recebedor](/api-reference/recipients/create-recipient) primeiro
    </ParamField>

    <ParamField body="payment.split[].amount" type="integer" required>
      Valor em centavos destinado a este recipiente

      **Exemplo:** `5000` = R\$ 50,00
    </ParamField>

    <ParamField body="payment.split[].type" type="string" required>
      Tipo de divisão

      **Valores:** `flat` (valor fixo), `percentage` (percentual do total)
    </ParamField>

    <ParamField body="payment.split[].allow_charge_processing_fee" type="boolean" required>
      Se este destinatário deve pagar a taxa de processamento

      **Padrão:** `false`
    </ParamField>

    <ParamField body="payment.split[].allow_charge_remainder_fee" type="boolean" required>
      Se este destinatário deve pagar a taxa de resto/ajuste

      **Padrão:** `false`
    </ParamField>

    <ParamField body="payment.split[].is_liable" type="boolean" required>
      Se este destinatário é responsável por chargebacks

      **Padrão:** `false`
    </ParamField>
  </Expandable>
</ParamField>

<Warning>
  **Importante sobre validação do Split:**

  * Cada split individual **não pode** ser maior que `payment.amount`
  * A soma de todos os splits **não pode ultrapassar** `payment.amount`
  * A soma **pode ser menor** que o total (a diferença fica com o merchant principal)
</Warning>

### 3D Secure (3DS)

<ParamField body="authentication_data" type="object">
  Dados para autenticação 3D Secure (recomendado para maior segurança)

  <Expandable title="Configurações 3DS">
    <ParamField body="authentication_data.attempt_authentication" type="string" required>
      Quando tentar autenticação 3DS

      **Valores:** `always`, `never`
    </ParamField>

    <ParamField body="authentication_data.browser_info" type="object">
      Informações do navegador do cliente

      **Obrigatório se:** `attempt_authentication = "always"`

      <Expandable title="Dados do navegador">
        <ParamField body="authentication_data.browser_info.accept_header" type="string" required>
          Header Accept do navegador

          **Exemplo:** `text/html,application/xhtml+xml`
        </ParamField>

        <ParamField body="authentication_data.browser_info.color_depth" type="string" required>
          Profundidade de cor da tela

          **Exemplo:** `24`
        </ParamField>

        <ParamField body="authentication_data.browser_info.java_enabled" type="boolean" required>
          Se Java está habilitado
        </ParamField>

        <ParamField body="authentication_data.browser_info.language" type="string" required>
          Idioma do navegador

          **Exemplo:** `pt-BR`
        </ParamField>

        <ParamField body="authentication_data.browser_info.screen_height" type="string" required>
          Altura da tela em pixels

          **Exemplo:** `1080`
        </ParamField>

        <ParamField body="authentication_data.browser_info.screen_width" type="string" required>
          Largura da tela em pixels

          **Exemplo:** `1920`
        </ParamField>

        <ParamField body="authentication_data.browser_info.timezone_offset" type="string" required>
          Diferença de fuso horário em minutos

          **Exemplo:** `180` (UTC-3 = Brasil)
        </ParamField>

        <ParamField body="authentication_data.browser_info.user_agent" type="string" required>
          User Agent do navegador

          **Exemplo:** `Mozilla/5.0 (Windows NT 10.0; Win64; x64)...`
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="authentication_data.origin" type="string">
      URL de origem da requisição

      **Obrigatório se:** `attempt_authentication = "always"`

      **Exemplo:** `https://seusite.com`
    </ParamField>

    <ParamField body="authentication_data.ip_address" type="string">
      Endereço IP do cliente

      **Obrigatório se:** `attempt_authentication = "always"`

      **Exemplo:** `192.168.1.100`
    </ParamField>
  </Expandable>
</ParamField>

<Info>
  **3D Secure 2.0:** Melhora significativamente a taxa de aprovação e reduz fraudes. Altamente recomendado para pagamentos de alto valor.
</Info>

### Itens do Pedido

<ParamField body="items" type="array">
  Lista de itens/produtos do pedido (opcional mas recomendado)

  <Expandable title="Estrutura de item">
    <ParamField body="items[].name" type="string">
      Nome do produto/serviço

      **Máximo:** 64 caracteres
    </ParamField>

    <ParamField body="items[].description" type="string">
      Descrição detalhada

      **Máximo:** 256 caracteres
    </ParamField>

    <ParamField body="items[].quantity" type="integer">
      Quantidade

      **Mínimo:** `1`
    </ParamField>

    <ParamField body="items[].amount" type="integer">
      Valor unitário em centavos
    </ParamField>
  </Expandable>
</ParamField>

## Estrutura da Resposta

A resposta contém informações completas sobre o pedido e pagamento criados:

### Campos do Pedido (Order)

| Campo       | Tipo    | Descrição                                                 |
| ----------- | ------- | --------------------------------------------------------- |
| `id`        | string  | UUID único do pedido                                      |
| `hash`      | string  | Hash único do pedido para referência                      |
| `status`    | string  | Status do pedido: `pending`, `paid`, `failed`, `canceled` |
| `is_closed` | boolean | Indica se o pedido está fechado/finalizado                |
| `payment`   | object  | Objeto contendo dados do pagamento (ver abaixo)           |
| `fee`       | object  | Objeto contendo informações de taxas (ver abaixo)         |
| `customer`  | object  | Dados do cliente (`id`, `name`, `email`)                  |

### Campos do Pagamento (Payment)

| Campo                | Tipo    | Descrição                                                                  |
| -------------------- | ------- | -------------------------------------------------------------------------- |
| `id`                 | string  | UUID único do pagamento                                                    |
| `hash`               | string  | Hash único do pagamento                                                    |
| `merchant_reference` | string  | Referência do merchant (campo `code` da requisição)                        |
| `status`             | string  | Status do pagamento: `pending`, `authorized`, `paid`, `refused`, `failed`  |
| `payment_method`     | string  | Método usado: `credit_card`, `pix`, `bank_slip`, `google_pay`, `apple_pay` |
| `amount`             | integer | Valor em centavos                                                          |
| `installments`       | integer | Número de parcelas                                                         |
| `currency`           | string  | Moeda (ISO 4217): `BRL`                                                    |
| `description`        | string  | Descrição do pagamento                                                     |
| `metadata`           | object  | Metadados customizados (se fornecidos)                                     |
| `refused_reason`     | string  | Motivo da recusa (se aplicável)                                            |
| `return_code`        | string  | Código de retorno do adquirente                                            |
| `created_at`         | string  | Data/hora de criação (formato: `Y-m-d H:i:s`)                              |
| `updated_at`         | string  | Data/hora da última atualização                                            |

### Campos Específicos de Cartão (quando `payment_method = credit_card`)

| Campo                              | Tipo    | Descrição                                   |
| ---------------------------------- | ------- | ------------------------------------------- |
| `credit_card.id`                   | string  | UUID do cartão                              |
| `credit_card.holder`               | string  | Nome do titular                             |
| `credit_card.brand`                | string  | Bandeira: `visa`, `mastercard`, `elo`, etc. |
| `credit_card.first_6`              | string  | Primeiros 6 dígitos (BIN)                   |
| `credit_card.last_4`               | string  | Últimos 4 dígitos                           |
| `credit_card.exp_month`            | integer | Mês de expiração (1-12)                     |
| `credit_card.exp_year`             | integer | Ano de expiração (YYYY)                     |
| `credit_card.statement_descriptor` | string  | Descrição na fatura                         |
| `credit_card.capture`              | boolean | Se foi capturado automaticamente            |
| `credit_card.three_ds`             | object  | Dados do 3D Secure (se autenticado)         |

### Campos Específicos de Apple Pay (quando `payment_method = apple_pay`)

| Campo                            | Tipo    | Descrição                                                          |
| -------------------------------- | ------- | ------------------------------------------------------------------ |
| `apple_pay.id`                   | string  | UUID da carteira digital salva (para uso em cobranças recorrentes) |
| `apple_pay.statement_descriptor` | string  | Descrição na fatura                                                |
| `apple_pay.capture`              | boolean | Se foi capturado automaticamente                                   |
| `apple_pay.three_ds`             | object  | Dados do 3D Secure (se autenticado)                                |
| `apple_pay.brand`                | string  | Bandeira do cartão (ex: `visa`, `mastercard`)                      |
| `apple_pay.last_4`               | string  | Últimos 4 dígitos do cartão                                        |
| `apple_pay.card_type`            | string  | Tipo do cartão: `credit`, `debit`                                  |

### Campos de Taxas (Fee)

| Campo                     | Tipo    | Descrição                               |
| ------------------------- | ------- | --------------------------------------- |
| `fixed_fee_amount`        | integer | Taxa fixa em centavos                   |
| `platform_fee_percentage` | float   | Percentual da taxa da plataforma        |
| `platform_fee_amount`     | integer | Valor da taxa da plataforma em centavos |

<Info>
  **Objeto 3DS (`three_ds`):** Quando a autenticação 3D Secure é realizada, este objeto conterá informações sobre o resultado da autenticação, incluindo `authentication_url` caso seja necessário redirecionar o cliente.
</Info>

## Exemplos de Requisição

### Pagamento com Cartão

#### Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/charges/orders \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "description": "Compra na Loja Virtual",
      "code": "ORDER-2024-001",
      "mcc": "5411",
      "customer": {
        "name": "João Silva",
        "email": "joao@exemplo.com.br",
        "documents": [
          {
            "type": "cpf",
            "value": "12345678901"
          }
        ],
        "addresses": [
          {
            "type": "billing",
            "postal_code": "01310100",
            "line_1": "Av. Paulista",
            "number": "1000",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "state": "SP",
            "country": "BR"
          }
        ]
      },
      "payment": {
        "amount": 15000,
        "currency": "BRL",
        "payment_method": "credit_card",
        "installments": 3,
        "credit_card": {
          "id": "5f2b7c3a-9d41-4e8a-bc60-1a2b3c4d5e6f",
          "statement_descriptor": "LOJA*PRODUTO",
          "capture": true,
          "processing_model": "normal"
        }
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const cardOrder = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      description: 'Compra na Loja Virtual',
      code: 'ORDER-2024-001',
      mcc: '5411',
      customer: {
        name: 'João Silva',
        email: 'joao@exemplo.com.br',
        documents: [
          {
            type: 'CPF',
            value: '12345678901'
          }
        ],
        addresses: [
          {
            type: 'billing',
            postal_code: '01310100',
            line_1: 'Av. Paulista',
            number: '1000',
            neighborhood: 'Bela Vista',
            city: 'São Paulo',
            state: 'SP',
            country: 'BR'
          }
        ]
      },
      payment: {
        amount: 15000,
        currency: 'BRL',
        payment_method: 'credit_card',
        installments: 3,
        credit_card: {
          id: 12345,
          statement_descriptor: 'LOJA*PRODUTO',
          capture: true,
          processing_model: 'normal'
        }
      }
    })
  });

  const order = await cardOrder.json();
  console.log('Pedido criado:', order);
  ```

  ```php PHP theme={null}
  <?php

  $data = [
      'description' => 'Compra na Loja Virtual',
      'code' => 'ORDER-2024-001',
      'mcc' => '5411',
      'customer' => [
          'name' => 'João Silva',
          'email' => 'joao@exemplo.com.br',
          'documents' => [
              [
                  'type' => 'CPF',
                  'value' => '12345678901'
              ]
          ],
          'addresses' => [
              [
                  'type' => 'billing',
                  'postal_code' => '01310100',
                  'line_1' => 'Av. Paulista',
                  'number' => '1000',
                  'neighborhood' => 'Bela Vista',
                  'city' => 'São Paulo',
                  'state' => 'SP',
                  'country' => 'BR'
              ]
          ]
      ],
      'payment' => [
          'amount' => 15000,
          'currency' => 'BRL',
          'payment_method' => 'credit_card',
          'installments' => 3,
          'credit_card' => [
              'id' => 12345,
              'statement_descriptor' => 'LOJA*PRODUTO',
              'capture' => true,
              'processing_model' => 'normal'
          ]
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/charges/orders',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $order = json_decode($response, true);
  curl_close($curl);

  echo "Pedido: " . json_encode($order, JSON_PRETTY_PRINT);
  ?>
  ```
</CodeGroup>

#### Resposta

```json theme={null}
{
  "id": "9c2e8a51-7b3f-4e2a-9d4c-1f6b8e3a5c70",
  "hash": "AUTOCC01JZX3Y5T4Q8KWVREGH2M9SD",
  "status": "paid",
  "is_closed": true,
  "payment": {
    "id": "b81f4c26-5d9e-4f7a-8c3b-2e6a9d4f1b58",
    "hash": "AUTPCC01JZX3Y5T4Q8KWVREGH2M9SE",
    "merchant_reference": "ORDER-2024-001",
    "status": "authorized",
    "payment_method": "credit_card",
    "amount": 15000,
    "installments": 3,
    "currency": "BRL",
    "description": "Compra na Loja Virtual",
    "bank_slip": null,
    "credit_card": {
      "id": "3f7d2a91-8c4e-4b6f-9a2d-5e8c1f4b7a30",
      "holder": "JOAO SILVA",
      "brand": "visa",
      "first_6": "411111",
      "last_4": "1111",
      "exp_month": "12",
      "exp_year": "30",
      "statement_descriptor": "MINHA LOJA",
      "capture": true,
      "three_ds": null
    },
    "pix": null,
    "pix_recurring": null,
    "google_pay": null,
    "apple_pay": null,
    "refused_reason": null,
    "return_code": "00",
    "created_at": "2024-01-15 10:30:00",
    "updated_at": "2024-01-15 10:30:03"
  },
  "fee": {
    "fixed_fee_amount": 0,
    "platform_fee_percentage": 2.99,
    "platform_fee_amount": 449
  },
  "customer": {
    "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
    "name": "João Silva",
    "email": "joao@exemplo.com.br"
  }
}
```

<Info>
  **Autenticação 3D Secure:** quando o emissor exige o desafio, o pagamento volta com
  `payment.status: "authentication_requested"` e o objeto `payment.metadata` traz os dados do desafio
  para você conduzir a autenticação. Concluído o desafio, o status segue o fluxo normal
  (`authorized`/`refused`). Veja a seção [3D Secure (3DS)](#3d-secure-3ds) para mais detalhes.
</Info>

<Info>
  **Venda com divisão:** quando a venda é dividida (você enviou `split[]` ou a conta tem split por
  configuração), a resposta traz também o bloco `split` com a divisão realizada — veja
  [Split de Pagamento](/casos-uso/split-pagamento).
</Info>

### Pagamento PIX

#### Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/charges/orders \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "description": "Pagamento PIX - Pedido #12345",
      "code": "PIX-ORDER-12345",
      "mcc": "5411",
      "customer": {
        "name": "João Silva",
        "email": "joao@exemplo.com.br",
        "documents": [
          {
            "type": "cpf",
            "value": "12345678901"
          }
        ]
      },
      "payment": {
        "amount": 5000,
        "currency": "BRL",
        "payment_method": "pix",
        "installments": 1,
        "pix": {
          "expires_at": "2024-12-31T23:59:59Z"
        }
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const pixOrder = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      description: 'Pagamento PIX - Pedido #12345',
      code: 'PIX-ORDER-12345',
      mcc: '5411',
      customer: {
        name: 'João Silva',
        email: 'joao@exemplo.com.br',
        documents: [
          {
            type: 'CPF',
            value: '12345678901'
          }
        ]
      },
      payment: {
        amount: 5000,
        currency: 'BRL',
        payment_method: 'pix',
        installments: 1,
        pix: {
          expires_at: '2024-12-31T23:59:59Z'
        }
      }
    })
  });

  const order = await pixOrder.json();
  console.log('Pagamento PIX criado:', order);
  ```

  ```php PHP theme={null}
  <?php

  $data = [
      'description' => 'Pagamento PIX - Pedido #12345',
      'code' => 'PIX-ORDER-12345',
      'mcc' => '5411',
      'customer' => [
          'name' => 'João Silva',
          'email' => 'joao@exemplo.com.br',
          'documents' => [
              [
                  'type' => 'CPF',
                  'value' => '12345678901'
              ]
          ]
      ],
      'payment' => [
          'amount' => 5000,
          'currency' => 'BRL',
          'payment_method' => 'pix',
          'installments' => 1,
          'pix' => [
              'expires_at' => '2024-12-31T23:59:59Z'
          ]
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/charges/orders',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $order = json_decode($response, true);
  curl_close($curl);

  echo "PIX: " . json_encode($order, JSON_PRETTY_PRINT);
  ?>
  ```
</CodeGroup>

#### Resposta

```json theme={null}
{
  "id": "5d8b3f92-1c6e-4a7d-b249-8e3f5c7a1d64",
  "hash": "AUTOPX01JZX3Y5T4Q8KWVREGH2M9SF",
  "status": "pending",
  "is_closed": false,
  "payment": {
    "id": "e4a7c158-9b2d-4e6f-a831-6c9e2b5d8f47",
    "hash": "AUTPPX01JZX3Y5T4Q8KWVREGH2M9SG",
    "merchant_reference": "PIX-ORDER-12345",
    "status": "waiting_payment",
    "payment_method": "pix",
    "amount": 5000,
    "installments": 1,
    "currency": "BRL",
    "description": "Pagamento PIX - Pedido #12345",
    "bank_slip": null,
    "credit_card": null,
    "pix": {
      "expires_at": "2024-12-31T23:59:59Z",
      "qr_code": "00020126580014BR.GOV.BCB.PIX0136123e4567-e12b-12d1-a456-426655440000520400005303986540550.005802BR5913Autorizou Ltda6009SAO PAULO62070503***63041D3D"
    },
    "pix_recurring": null,
    "google_pay": null,
    "apple_pay": null,
    "refused_reason": null,
    "return_code": null,
    "created_at": "2024-01-15 12:00:00",
    "updated_at": "2024-01-15 12:00:00"
  },
  "fee": {
    "fixed_fee_amount": 0,
    "platform_fee_percentage": 0.99,
    "platform_fee_amount": 50
  },
  "customer": {
    "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
    "name": "João Silva",
    "email": "joao@exemplo.com.br"
  }
}
```

<Info>
  O conteúdo copia-e-cola do PIX é o próprio `payment.pix.qr_code` (payload EMV). Para exibir a
  imagem, gere o QR a partir dele na sua aplicação. O pagamento confirma de forma assíncrona: aguarde
  o webhook `payment.authorized` ou consulte `GET /payments/{id}`.
</Info>

### Pagamento Apple Pay

#### Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/charges/orders \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "description": "Compra via Apple Pay",
      "code": "APPLE-PAY-ORDER-001",
      "mcc": "5411",
      "customer": {
        "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
        "name": "João Silva",
        "email": "joao@exemplo.com.br",
        "documents": [
          {
            "type": "cpf",
            "value": "12345678901"
          }
        ]
      },
      "payment": {
        "amount": 25000,
        "currency": "BRL",
        "payment_method": "apple_pay",
        "installments": 1,
        "apple_pay": {
          "apple_pay_token": "{\"token\":{\"paymentData\":{\"version\":\"EC_v1\",\"data\":\"...\",\"signature\":\"...\",\"header\":{...}},\"paymentMethod\":{\"displayName\":\"Visa 1234\",\"network\":\"Visa\",\"type\":\"credit\"},\"transactionIdentifier\":\"...\"}}",
          "statement_descriptor": "MINHA LOJA",
          "capture": true
        }
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const applePayOrder = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      description: 'Compra via Apple Pay',
      code: 'APPLE-PAY-ORDER-001',
      mcc: '5411',
      customer: {
        id: 12345,
        name: 'João Silva',
        email: 'joao@exemplo.com.br',
        documents: [
          {
            type: 'CPF',
            value: '12345678901'
          }
        ]
      },
      payment: {
        amount: 25000,
        currency: 'BRL',
        payment_method: 'apple_pay',
        installments: 1,
        apple_pay: {
          // event.payment é o objeto ApplePayPayment completo do evento onpaymentauthorized
          apple_pay_token: JSON.stringify(event.payment),
          statement_descriptor: 'MINHA LOJA',
          capture: true
        }
      }
    })
  });

  const order = await applePayOrder.json();
  console.log('Pagamento Apple Pay criado:', order);
  ```

  ```php PHP theme={null}
  <?php

  // $applePayment é o objeto ApplePayPayment completo recebido do frontend via POST
  // Deve conter: token.paymentData, token.paymentMethod, token.transactionIdentifier
  $applePayToken = json_encode($applePayment);

  $data = [
      'description' => 'Compra via Apple Pay',
      'code' => 'APPLE-PAY-ORDER-001',
      'mcc' => '5411',
      'customer' => [
          'id' => 12345,
          'name' => 'João Silva',
          'email' => 'joao@exemplo.com.br',
          'documents' => [
              [
                  'type' => 'CPF',
                  'value' => '12345678901'
              ]
          ]
      ],
      'payment' => [
          'amount' => 25000,
          'currency' => 'BRL',
          'payment_method' => 'apple_pay',
          'installments' => 1,
          'apple_pay' => [
              'apple_pay_token' => $applePayToken,
              'statement_descriptor' => 'MINHA LOJA',
              'capture' => true
          ]
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/charges/orders',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $order = json_decode($response, true);
  curl_close($curl);

  echo "Apple Pay: " . json_encode($order, JSON_PRETTY_PRINT);
  ?>
  ```
</CodeGroup>

#### Resposta

```json theme={null}
{
  "id": "7a4e9c23-6f8b-4d1a-92c5-3b7e6a9d4f18",
  "hash": "AUTOAP01JZX3Y5T4Q8KWVREGH2M9SH",
  "status": "paid",
  "is_closed": false,
  "payment": {
    "id": "c92d5b47-3e8a-4f6c-b174-9a2e5c8b3d61",
    "hash": "AUTPAP01JZX3Y5T4Q8KWVREGH2M9SJ",
    "merchant_reference": "APPLE-PAY-ORDER-001",
    "status": "authorized",
    "payment_method": "apple_pay",
    "amount": 25000,
    "installments": 1,
    "currency": "BRL",
    "description": "Compra via Apple Pay",
    "bank_slip": null,
    "credit_card": null,
    "pix": null,
    "pix_recurring": null,
    "google_pay": null,
    "apple_pay": {
      "statement_descriptor": "MINHA LOJA",
      "capture": true,
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "three_ds": null,
      "brand": "visa",
      "last_4": "1234",
      "card_type": "credit"
    },
    "refused_reason": null,
    "return_code": null,
    "created_at": "2024-01-15 13:30:00",
    "updated_at": "2024-01-15 13:30:03"
  },
  "fee": {
    "fixed_fee_amount": 0,
    "platform_fee_percentage": 0,
    "platform_fee_amount": 0
  },
  "customer": {
    "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
    "name": "João Silva",
    "email": "joao@exemplo.com.br"
  }
}
```

<Info>
  **Integração Apple Pay:** Para implementar o Apple Pay em seu frontend e obter o `apple_pay_token`, consulte o [Guia Completo de Integração Apple Pay](/api-reference/payments/apple-pay-integration).
</Info>

<Check>
  **Salvamento Automático:** A Autorizou salva automaticamente a carteira digital após o primeiro pagamento bem-sucedido com Apple Pay. O `apple_pay.id` retornado na resposta pode ser usado como `digital_wallet_uuid` em cobranças futuras, eliminando a necessidade de solicitar o token Apple Pay novamente.
</Check>

### Venda com Split

#### Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/charges/orders \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "description": "Venda no Marketplace",
      "code": "MARKETPLACE-ORD-789",
      "mcc": "5411",
      "customer": {
        "name": "Cliente Marketplace",
        "email": "cliente@exemplo.com.br",
        "documents": [
          {
            "type": "cpf",
            "value": "98765432100"
          }
        ]
      },
      "payment": {
        "amount": 100000,
        "currency": "BRL",
        "payment_method": "credit_card",
        "installments": 1,
        "credit_card": {
          "id": "5f2b7c3a-9d41-4e8a-bc60-1a2b3c4d5e6f",
          "statement_descriptor": "MARKETPLACE*VND",
          "capture": true,
          "processing_model": "normal"
        },
        "split": [
          {
            "recipient_id": "8f3a91c2-4b5d-4c6e-9a70-2f1e3d4c5b6a",
            "amount": 10000,
            "type": "flat",
            "allow_charge_processing_fee": false,
            "allow_charge_remainder_fee": false,
            "is_liable": false
          },
          {
            "recipient_id": "c9d8e7f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
            "amount": 90000,
            "type": "flat",
            "allow_charge_processing_fee": true,
            "allow_charge_remainder_fee": true,
            "is_liable": true
          }
        ]
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const splitOrder = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      description: 'Venda no Marketplace',
      code: 'MARKETPLACE-ORD-789',
      mcc: '5411',
      customer: {
        name: 'Cliente Marketplace',
        email: 'cliente@exemplo.com.br',
        documents: [
          {
            type: 'CPF',
            value: '98765432100'
          }
        ]
      },
      payment: {
        amount: 100000,
        currency: 'BRL',
        payment_method: 'credit_card',
        installments: 1,
        credit_card: {
          id: 67890,
          statement_descriptor: 'MARKETPLACE*VND',
          capture: true,
          processing_model: 'normal'
        },
        split: [
          {
            recipient_id: 100,
            amount: 10000,
            type: 'flat',
            allow_charge_processing_fee: false,
            allow_charge_remainder_fee: false,
            is_liable: false
          },
          {
            recipient_id: 200,
            amount: 90000,
            type: 'flat',
            allow_charge_processing_fee: true,
            allow_charge_remainder_fee: true,
            is_liable: true
          }
        ]
      }
    })
  });

  const order = await splitOrder.json();
  console.log('Pedido com split criado:', order);
  ```

  ```php PHP theme={null}
  <?php

  $data = [
      'description' => 'Venda no Marketplace',
      'code' => 'MARKETPLACE-ORD-789',
      'mcc' => '5411',
      'customer' => [
          'name' => 'Cliente Marketplace',
          'email' => 'cliente@exemplo.com.br',
          'documents' => [
              [
                  'type' => 'CPF',
                  'value' => '98765432100'
              ]
          ]
      ],
      'payment' => [
          'amount' => 100000,
          'currency' => 'BRL',
          'payment_method' => 'credit_card',
          'installments' => 1,
          'credit_card' => [
              'id' => 67890,
              'statement_descriptor' => 'MARKETPLACE*VND',
              'capture' => true,
              'processing_model' => 'normal'
          ],
          'split' => [
              [
                  'recipient_id' => 100,
                  'amount' => 10000,
                  'type' => 'flat',
                  'allow_charge_processing_fee' => false,
                  'allow_charge_remainder_fee' => false,
                  'is_liable' => false
              ],
              [
                  'recipient_id' => 200,
                  'amount' => 90000,
                  'type' => 'flat',
                  'allow_charge_processing_fee' => true,
                  'allow_charge_remainder_fee' => true,
                  'is_liable' => true
              ]
          ]
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/charges/orders',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $order = json_decode($response, true);
  curl_close($curl);

  echo "Split: " . json_encode($order, JSON_PRETTY_PRINT);
  ?>
  ```
</CodeGroup>

#### Resposta

```json theme={null}
{
  "id": "2b6e9d43-8a1f-4c5e-97b2-4d8f1a6c3e59",
  "hash": "AUTOCC01JZX3Y5T4Q8KWVREGH2M9SK",
  "status": "paid",
  "is_closed": true,
  "payment": {
    "id": "f17c4e82-5b9a-4d3f-8e61-2a7c5f9b4d36",
    "hash": "AUTPCC01JZX3Y5T4Q8KWVREGH2M9SM",
    "merchant_reference": "MARKETPLACE-ORD-789",
    "status": "authorized",
    "payment_method": "credit_card",
    "amount": 100000,
    "installments": 1,
    "currency": "BRL",
    "description": "Venda no Marketplace",
    "bank_slip": null,
    "credit_card": {
      "id": "a83f6d21-4c7e-4b9a-8d52-6e1a4f7c9b30",
      "holder": "CLIENTE MARKETPLACE",
      "brand": "visa",
      "first_6": "424242",
      "last_4": "4242",
      "exp_month": "11",
      "exp_year": "31",
      "statement_descriptor": "MARKETPLACE*VND",
      "capture": true,
      "three_ds": null
    },
    "pix": null,
    "pix_recurring": null,
    "google_pay": null,
    "apple_pay": null,
    "refused_reason": null,
    "return_code": "00",
    "created_at": "2024-01-15 13:00:00",
    "updated_at": "2024-01-15 13:00:03"
  },
  "fee": {
    "fixed_fee_amount": 0,
    "platform_fee_percentage": 2.99,
    "platform_fee_amount": 2990
  },
  "customer": {
    "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
    "name": "Cliente Marketplace",
    "email": "cliente@exemplo.com.br"
  },
  "split": [
    {
      "recipient": { "uuid": "8f3a91c2-4b5d-4c6e-9a70-2f1e3d4c5b6a", "name": "Loja Parceira A" },
      "amount": 10000,
      "interest_amount": 0,
      "percentage": null,
      "is_liable": false
    },
    {
      "recipient": { "uuid": "c9d8e7f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f", "name": "Loja Parceira B" },
      "amount": 90000,
      "interest_amount": 0,
      "percentage": null,
      "is_liable": true
    }
  ]
}
```

<Info>
  No bloco `split` da resposta, `recipient: null` indica a fatia que fica com a **sua própria conta**.
  Os itens ecoam a divisão **realizada** (enviada no `split[]` ou resolvida pela configuração da conta).
</Info>

## Códigos de Erro

<Warning>
  **Recusa de pagamento NÃO é erro HTTP.** Quando a cobrança é processada e o emissor recusa, a
  resposta é **`201 Created`** com `payment.status: "refused"`, o motivo em `payment.refused_reason`
  e o código do emissor em `payment.return_code`. Trate recusa lendo o corpo, não o status HTTP.
</Warning>

<AccordionGroup>
  <Accordion title="400 - Bad Request" icon="circle-xmark">
    Falta o header obrigatório `Idempotency-Key` (veja a seção de idempotência no topo).
  </Accordion>

  <Accordion title="401 - Unauthorized" icon="circle-xmark">
    Chave de API ausente ou inválida no header `Authorization: Bearer`.
  </Accordion>

  <Accordion title="409 - Conflict" icon="circle-xmark">
    A mesma `Idempotency-Key` foi reutilizada com um **corpo diferente**, ou a requisição original
    com essa chave ainda está **em processamento** (neste caso a resposta traz o header
    `Retry-After` com os segundos para tentar de novo).
  </Accordion>

  <Accordion title="422 - Unprocessable Entity" icon="circle-xmark">
    Validação dos dados falhou. O corpo segue o formato padrão de validação:

    ```json theme={null}
    {
      "message": "The payment.amount field is required. (and 1 more error)",
      "errors": {
        "payment.amount": ["The payment.amount field is required."],
        "customer.email": ["The customer.email field must be a valid email address."]
      }
    }
    ```

    **Possíveis causas:** parâmetros obrigatórios faltando, tipos incorretos, valores fora dos
    limites, soma do `split[]` incompatível com o valor da venda.
  </Accordion>
</AccordionGroup>

## Regras de Negócio

### Valores e Limites

<AccordionGroup>
  <Accordion title="Valores Permitidos" icon="money-bill">
    * **Mínimo:** R\$ 1,00 (100 centavos)
    * **Máximo:** Conforme limite do merchant
    * **Parcelamento:** Até 12x para cartão de crédito
    * **Taxa:** Calculada automaticamente conforme tabela do merchant
  </Accordion>

  <Accordion title="Prazos de Captura" icon="calendar">
    * **Cartão:** Captura imediata ou até 5 dias
    * **PIX:** Expiração configurável (até 24h)
    * **Boleto:** Vencimento configurável
    * **3DS:** Autenticação deve ser concluída em 15 minutos
  </Accordion>

  <Accordion title="Restrições" icon="ban">
    * Cartão deve estar ativo e não expirado
    * Split deve somar exatamente o valor total
    * Cliente deve ter cadastro válido
    * MCC deve estar autorizado para o merchant
  </Accordion>
</AccordionGroup>

## Split de Pagamentos

### Como Funciona

O Split permite dividir o valor de um pagamento entre múltiplos destinatários. Ideal para marketplaces, plataformas multi-vendor e agregadores.

### Regras de Split

1. **Soma dos valores** deve ser igual a `payment.amount`
2. **Recebedors** devem estar previamente cadastrados
3. **Taxas** podem ser atribuídas a destinatários específicos
4. **Responsabilidade** por chargebacks pode ser configurada

### Tipos de Split

<AccordionGroup>
  <Accordion title="Flat (Valor Fixo)" icon="money-bill">
    Valor fixo em centavos destinado ao recipiente

    ```json theme={null}
    {
      "recipient_id": "8f3a91c2-4b5d-4c6e-9a70-2f1e3d4c5b6a",
      "amount": 5000, // R$ 50,00 fixo
      "type": "flat"
    }
    ```
  </Accordion>

  <Accordion title="Percentage (Percentual)" icon="percent">
    Percentual do valor total

    ```json theme={null}
    {
      "recipient_id": "c9d8e7f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
      "amount": 10000, // R$ 100,00 (calculado como 10% de R$ 1.000,00)
      "type": "percentage"
    }
    ```

    **Nota:** Mesmo com `type = "percentage"`, o campo `amount` deve conter o valor já calculado em centavos.
  </Accordion>
</AccordionGroup>

### Configuração de Taxas

<AccordionGroup>
  <Accordion title="allow_charge_processing_fee" icon="toggle-on">
    Define se o destinatário paga a taxa de processamento

    **Exemplo:** Taxa de 3% = R$ 30,00 em uma venda de R$ 1.000,00

    * `true`: Recebedor recebe R\$ 970,00 (desconta a taxa)
    * `false`: Recebedor recebe R\$ 1.000,00 (marketplace paga)
  </Accordion>

  <Accordion title="allow_charge_remainder_fee" icon="toggle-on">
    Define se o destinatário paga taxas de ajuste/resto

    Taxas residuais de arredondamento ou divisões não exatas
  </Accordion>

  <Accordion title="is_liable" icon="toggle-on">
    Define responsabilidade por chargebacks

    * `true`: Recebedor é responsável e terá valores descontados em caso de chargeback
    * `false`: Marketplace/Plataforma assume o risco
  </Accordion>
</AccordionGroup>

### Exemplo Prático de Split

```javascript theme={null}
// Cenário: Marketplace com comissão de 10%
// Venda de R$ 1.000,00

const splitConfig = [
  {
    recipient_id: 100, // Marketplace
    amount: 10000, // R$ 100,00 (10% de comissão)
    type: 'flat',
    allow_charge_processing_fee: false, // Marketplace não paga taxa
    allow_charge_remainder_fee: false,
    is_liable: false // Marketplace não assume risco
  },
  {
    recipient_id: 200, // Vendedor
    amount: 90000, // R$ 900,00 (90% do valor)
    type: 'flat',
    allow_charge_processing_fee: true, // Vendedor paga taxa de processamento
    allow_charge_remainder_fee: true,
    is_liable: true // Vendedor assume risco de chargeback
  }
];

// Taxa de processamento: 3% = R$ 30,00
// Vendedor receberá: R$ 900,00 - R$ 30,00 = R$ 870,00
// Marketplace receberá: R$ 100,00 (sem desconto)
```

## 3D Secure (3DS)

3D Secure é um protocolo de autenticação adicional que aumenta a segurança e taxa de aprovação.

### Quando Usar

* Pagamentos de alto valor (acima de R\$ 500)
* Primeiro uso do cartão
* Cliente internacional
* Comportamento suspeito detectado

### Implementação Básica

Para usar 3DS, envie o parâmetro `authentication_data` com informações do navegador:

```javascript theme={null}
const order = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
  method: 'POST',
  body: JSON.stringify({
    // ... outros parâmetros
    authentication_data: {
      attempt_authentication: 'always',
      browser_info: {
        accept_header: 'text/html',
        color_depth: '24',
        java_enabled: false,
        language: 'pt-BR',
        screen_height: '1080',
        screen_width: '1920',
        timezone_offset: '180',
        user_agent: navigator.userAgent
      },
      origin: window.location.origin,
      ip_address: '192.168.1.100'
    }
  })
});

// Se retornar status 'requires_action', redirecione para authentication_url
if (order.status === 'requires_action') {
  window.location.href = order.three_d_secure.authentication_url;
}
```

## Próximos Passos

Após criar um pedido:

1. [Configurar webhooks](/api-reference/webhooks/webhook-configuration) para notificações em tempo real
2. [Consultar detalhes do pagamento](/api-reference/charges/payments/get-payment)
3. [Processar estornos](/api-reference/refunds/create-refund) quando necessário
4. [Consultar recebedores do split](/api-reference/recipients/get-recipient)
