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

# Ciclo de vida das ordens

> Estados e transições de ordens payin e payout.

Cada ordem passa por uma sequência determinística de estados. Webhooks são emitidos em cada transição relevante.

## Estados

| Status                 | Significado                                                                         |
| ---------------------- | ----------------------------------------------------------------------------------- |
| `PENDING`              | Ordem criada, aguardando confirmação interna antes de gerar instrução de pagamento. |
| `AWAITING_PAYMENT`     | QR Code PIX gerado — aguardando pagamento do receiver (payin).                      |
| `PAYMENT_RECEIVED`     | PIX confirmado; plataforma inicia conversão.                                        |
| `SWAPPING`             | Swap on-chain em andamento (Jupiter DEX).                                           |
| `TRANSFERRING`         | Transferência de crypto para a wallet destino em andamento.                         |
| `AWAITING_DEPOSIT`     | Endereço de depósito gerado — aguardando crypto do receiver (payout).               |
| `DEPOSIT_RECEIVED`     | Depósito on-chain confirmado; plataforma inicia envio do PIX.                       |
| `PIX_SENDING`          | PIX outbound sendo enviado via 3xPay.                                               |
| `PIX_SENT_UNCONFIRMED` | PIX enviado, confirmação final pendente (reconciliação manual possível).            |
| `COMPLETED`            | Fluxo concluído com sucesso.                                                        |
| `FAILED`               | Erro irrecuperável; consulte `failureReason`.                                       |
| `EXPIRED`              | Ordem expirou sem ação do receiver.                                                 |
| `REFUNDING`            | Estorno em andamento.                                                               |
| `REFUNDED`             | Estorno concluído (PIX devolvido ao receiver).                                      |

## Fluxo Payin (BRL → Crypto)

```
PENDING ──► AWAITING_PAYMENT ──► PAYMENT_RECEIVED ──► SWAPPING ──► TRANSFERRING ──► COMPLETED
                │                       │                                │
                └──► EXPIRED            └──► REFUNDING ◄────────────────┘
                                                │
                                           REFUNDED
```

> `PAYMENT_RECEIVED → TRANSFERRING` ocorre quando o token destino é USDC (sem swap necessário).

## Fluxo Payout (Crypto → BRL)

```
PENDING ──► AWAITING_DEPOSIT ──► DEPOSIT_RECEIVED ──► PIX_SENDING ──► COMPLETED
                │                       │                   │
                └──► EXPIRED            └──► REFUNDING      └──► PIX_SENT_UNCONFIRMED ──► COMPLETED
                                                │
                                           REFUNDED
```

> `DEPOSIT_RECEIVED → SWAPPING → PIX_SENDING` quando o depósito não é em USDC e precisa de swap antes do PIX.

## Timing

* Payin PIX: confirmação em segundos após o pagamento.
* Swap on-chain: \~10–30 s na rede Solana.
* PIX outbound (payout): segundos no horário comercial; pode levar alguns minutos fora.

## Webhooks emitidos

| Evento                   | Tipo           | Transição                                 |
| ------------------------ | -------------- | ----------------------------------------- |
| `order.payment_received` | PAYIN          | `AWAITING_PAYMENT` → `PAYMENT_RECEIVED`   |
| `order.processing`       | PAYOUT         | Depósito aceito; PIX de saída enfileirado |
| `order.deposit_received` | PAYOUT         | `AWAITING_DEPOSIT` → `DEPOSIT_RECEIVED`   |
| `order.pix_sending`      | PAYOUT         | PIX submetido ao provedor                 |
| `order.completed`        | PAYIN / PAYOUT | → `COMPLETED`                             |
| `order.failed`           | PAYIN / PAYOUT | → `FAILED`                                |
| `order.refunding`        | PAYIN          | → `REFUNDING`                             |
| `order.refunded`         | PAYIN          | → `REFUNDED`                              |

Consulte [Eventos de webhook](/webhooks/events) para payloads completos.
