> ## 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.

# Schemas

> Referência dos modelos de dados da API Autorizou

# Schemas da API

Esta página contém a documentação detalhada de todos os modelos de dados utilizados na API Autorizou.

## OrderRequest

<ResponseField name="mcc" type="string" required>
  Código MCC da transação
</ResponseField>

<ResponseField name="code" type="string" required>
  Código da venda no estabelecimento
</ResponseField>

<ResponseField name="description" type="string">
  Descrição da transação
</ResponseField>

<ResponseField name="customer" type="object" required>
  <Expandable title="Propriedades">
    <ResponseField name="id" type="string" required>
      ID do cliente
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="payment" type="object" required>
  <Expandable title="Propriedades">
    <ResponseField name="amount" type="integer" required>
      Valor em centavos
    </ResponseField>

    <ResponseField name="currency" type="string" required>
      Moeda da transação
    </ResponseField>

    <ResponseField name="payment_method" type="string" required>
      Método de pagamento
    </ResponseField>

    <ResponseField name="installments" type="integer">
      Número de parcelas
    </ResponseField>

    <ResponseField name="credit_card" type="object">
      <Expandable title="Propriedades">
        <ResponseField name="id" type="string" required>
          ID do cartão
        </ResponseField>

        <ResponseField name="statement_descriptor" type="string">
          Descrição que aparecerá na fatura
        </ResponseField>

        <ResponseField name="capture" type="boolean">
          Se a transação deve ser capturada automaticamente
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## CustomerRequest

<ResponseField name="name" type="string" required>
  Nome do cliente
</ResponseField>

<ResponseField name="email" type="string" required>
  Email do cliente
</ResponseField>

<ResponseField name="documents" type="array" required>
  <Expandable title="Propriedades do item">
    <ResponseField name="type" type="string" required>
      Tipo do documento
    </ResponseField>

    <ResponseField name="value" type="string" required>
      Valor do documento
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="addresses" type="array">
  <Expandable title="Propriedades do item">
    <ResponseField name="type" type="string" required>
      Tipo do endereço
    </ResponseField>

    <ResponseField name="postal_code" type="string" required>
      CEP
    </ResponseField>

    <ResponseField name="line_1" type="string" required>
      Logradouro
    </ResponseField>

    <ResponseField name="line_2" type="string">
      Complemento
    </ResponseField>

    <ResponseField name="number" type="string" required>
      Número
    </ResponseField>

    <ResponseField name="neighborhood" type="string" required>
      Bairro
    </ResponseField>

    <ResponseField name="city" type="string" required>
      Cidade
    </ResponseField>

    <ResponseField name="state" type="string" required>
      Estado
    </ResponseField>

    <ResponseField name="country" type="string" required>
      País
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="phone" type="object">
  <Expandable title="Propriedades">
    <ResponseField name="type" type="string" required>
      Tipo do telefone
    </ResponseField>

    <ResponseField name="ddi" type="string" required>
      DDI
    </ResponseField>

    <ResponseField name="ddd" type="string" required>
      DDD
    </ResponseField>

    <ResponseField name="number" type="string" required>
      Número
    </ResponseField>
  </Expandable>
</ResponseField>

## CardRequest

<ResponseField name="encrypted" type="string" required>
  Dados do cartão criptografados
</ResponseField>

<ResponseField name="customer_id" type="string" required>
  ID do cliente
</ResponseField>

## RefundRequest

<ResponseField name="payment_id" type="string" required>
  ID do pagamento
</ResponseField>

<ResponseField name="amount" type="integer" required>
  Valor em centavos
</ResponseField>

## Error

<ResponseField name="code" type="string" required>
  Código do erro
</ResponseField>

<ResponseField name="message" type="string" required>
  Mensagem de erro
</ResponseField>

## Payment Status (Status de Pagamento)

Os pagamentos na Autorizou seguem um ciclo de vida com diferentes status. Cada status representa uma etapa específica no processamento do pagamento.

### Status Gerais

<ResponseField name="authorized" type="status">
  **Pagamento autorizado com sucesso**

  O pagamento foi aprovado pela instituição financeira. Para cartão de crédito com captura automática, o valor foi capturado. Para PIX Recorrente, indica que a cobrança foi bem-sucedida.
</ResponseField>

<ResponseField name="waiting_payment" type="status">
  **Aguardando pagamento do cliente**

  * **Boleto:** Aguardando pagamento do boleto bancário
  * **PIX:** Aguardando escaneamento do QR Code
  * **PIX Recorrente:** Aguardando primeiro pagamento para autorizar recorrência
</ResponseField>

<ResponseField name="processing" type="status">
  **Pagamento em processamento**

  O pagamento está sendo processado pela adquirente. Comum em PIX Recorrente quando a cobrança é enviada para a Adyen (2 dias antes do vencimento).
</ResponseField>

<ResponseField name="refused" type="status">
  **Pagamento recusado**

  O pagamento foi negado pela instituição financeira.

  **Motivos comuns:**

  * Saldo insuficiente
  * Cartão bloqueado ou vencido
  * Limite de crédito excedido
  * Dados inválidos
  * Suspeita de fraude

  **PIX Recorrente:** Se `retry_policy = true`, o sistema tentará novamente automaticamente (até 3 vezes).
</ResponseField>

<ResponseField name="expired" type="status">
  **Pagamento expirado**

  O prazo para pagamento expirou sem que o cliente tenha completado a transação.

  * **Boleto:** Passou da data de vencimento
  * **PIX:** QR Code expirou
  * **PIX Recorrente:** QR Code inicial não foi pago no prazo
</ResponseField>

<ResponseField name="scheduled" type="status">
  **Pagamento agendado**

  **Exclusivo para PIX Recorrente.** O pagamento foi agendado para ser processado em uma data futura. Ocorre 3 dias antes da data de cobrança. Utilizado para a primeira cobrança de assinaturas com trial e para posteriores cobranças.
</ResponseField>

<ResponseField name="refunded" type="status">
  **Pagamento estornado**

  O valor foi devolvido ao cliente completamente. Este é um estado final.
</ResponseField>

<ResponseField name="refunded_partially" type="status">
  **Pagamento estornado parcialmente**

  Parte do valor foi devolvida ao cliente. O pagamento pode receber estornos adicionais até o valor total.
</ResponseField>

<ResponseField name="refunded_chargeback" type="status">
  **Estornado por chargeback**

  O pagamento foi estornado devido a um chargeback. Este é um estado final e não pode ser revertido.

  <Warning>
    Chargebacks impactam negativamente a reputação do merchant junto às adquirentes e podem resultar em taxas adicionais.
  </Warning>
</ResponseField>

<ResponseField name="refunded_fraud" type="status">
  **Estornado por fraude**

  O pagamento foi identificado como fraudulento e estornado. Este é um estado final e não pode ser revertido.

  <Warning>
    Este status indica fraude confirmada. Revise seus processos de prevenção antifraude.
  </Warning>
</ResponseField>

<ResponseField name="refund_requested" type="status">
  **Estorno solicitado**

  Um estorno foi solicitado e está sendo processado. Aguardando confirmação da adquirente.
</ResponseField>

<ResponseField name="chargeback" type="status">
  **Chargeback confirmado**

  O cliente contestou a cobrança junto ao banco e o chargeback foi confirmado. O valor foi revertido.
</ResponseField>

<ResponseField name="chargeback_notification" type="status">
  **Notificação de chargeback**

  Um chargeback foi iniciado pelo cliente. Você tem prazo limitado para contestar (geralmente 7-10 dias).
</ResponseField>

<ResponseField name="disputed" type="status">
  **Em disputa**

  Há uma disputa ativa sobre o pagamento. Aguardando resolução.
</ResponseField>

<ResponseField name="settled" type="status">
  **Pagamento liquidado**

  O pagamento foi processado e liquidado. O valor está disponível para transferência.
</ResponseField>

<ResponseField name="sent_for_settle" type="status">
  **Enviado para liquidação**

  O pagamento foi enviado para o processo de liquidação (settlement). Em breve estará disponível.
</ResponseField>

<ResponseField name="error" type="status">
  **Erro no processamento**

  Ocorreu um erro técnico durante o processamento. Entre em contato com o suporte se o erro persistir.
</ResponseField>

<ResponseField name="authentication_requested" type="status">
  **Autenticação solicitada**

  Para cartão de crédito com 3D Secure, indica que o cliente precisa completar a autenticação adicional.
</ResponseField>

### Transições de Status

Os status seguem regras específicas de transição. Nem todos os status podem mudar para qualquer outro status.

#### Fluxo PIX Recorrente

```
Primeiro pagamento:
waiting_payment → authorized → settled
waiting_payment → expired

Cobranças recorrentes:
scheduled → waiting_payment → authorized → settled
scheduled → waiting_payment → refused → scheduled (retry automático)
scheduled → error
```

#### Fluxo Cartão de Crédito

```
processing → authorized → sent_for_settle → settled
processing → refused
authorized → refund_requested → refunded
authorized → chargeback_notification → chargeback
```

#### Fluxo PIX / Boleto

```
waiting_payment → authorized → sent_for_settle → settled
waiting_payment → expired
authorized → refund_requested → refunded
```

## Respostas de erro

Guie-se sempre pelo **status HTTP**. O corpo de erro traz uma mensagem legível e, em erros de validação (`422`), um objeto `errors` com a lista por campo:

```json theme={null}
{
  "message": "Pagamento não encontrado."
}
```

```json theme={null}
{
  "message": "The given data was invalid.",
  "errors": {
    "email": ["O campo email é obrigatório."]
  }
}
```

<Note>
  O `Idempotency-Key` obrigatório nas cobranças responde `400` quando ausente e `409` em conflito de
  chave (com header `Retry-After` quando a primeira requisição ainda está em processamento).
</Note>
