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

# Fluxo Payin (BRL → Crypto)

> Integração completa do fluxo payin.

Payin é a conversão **BRL → Crypto**. O receiver paga via PIX e recebe crypto na carteira Solana indicada.

## Etapas

1. **Cotação** — preço e taxas fixados por 30s.
2. **Criação da ordem** — gera o QR Code PIX.
3. **Pagamento PIX** — receiver paga.
4. **Conversão** — swap on-chain.
5. **Entrega** — crypto chega na wallet destino.
6. **Webhook** — `order.completed`.

## Cotação

```bash theme={null}
curl -X POST https://api.astronpay.co/api/v1/quote/payin \
  -H "x-api-key: $API_KEY" -H "x-api-secret: $API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{ "receiverId": "rcv_...", "amountBrl": 1000, "targetToken": "USDC" }'
```

O campo `targetToken` aceita `"USDC"` ou `"SOL"`. O padrão é `"USDC"`.

Response inclui `quoteId`, `amountToken` (quanto o receiver receberá), `commercialRate`, `ratePlatform`, `expiresAt`. **Use o `quoteId` ao criar a ordem dentro de 30s.**

## Criação da ordem

```bash theme={null}
curl -X POST https://api.astronpay.co/api/v1/payin \
  -H "x-api-key: $API_KEY" -H "x-api-secret: $API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "receiverId": "rcv_...",
    "quoteId": "qt_...",
    "destinationWallet": "4k5d...",
    "externalId": "meu-pedido-123"
  }'
```

A resposta traz:

* `pixPaymentCode` — código EMV copia-e-cola do PIX. Exiba ao receiver para que ele efetue o pagamento.

## Status ao longo do tempo

| Status             | Quando                                      |
| ------------------ | ------------------------------------------- |
| `PENDING`          | Ordem criada, aguardando PIX.               |
| `AWAITING_PAYMENT` | QR Code gerado, aguardando pagamento.       |
| `PAYMENT_RECEIVED` | PIX confirmado; processamento iniciado.     |
| `SWAPPING`         | Swap on-chain em execução.                  |
| `TRANSFERRING`     | Crypto sendo enviado para a wallet destino. |
| `COMPLETED`        | Crypto entregue à `destinationWallet`.      |
| `FAILED`           | Algo falhou; ver `failureReason`.           |
| `EXPIRED`          | Receiver não pagou dentro do prazo PIX.     |
| `REFUNDING`        | Estorno PIX em andamento.                   |
| `REFUNDED`         | Valor estornado ao receiver.                |

Para o ciclo de vida completo, veja [Ciclo de vida das ordens](/concepts/orders-lifecycle).

## Webhooks recebidos

* `order.payment_received`
* `order.completed`
* `order.failed`
* `order.refunding`
* `order.refunded`

Payloads completos em [Eventos de webhook](/webhooks/events).

## Consultando uma ordem

```bash theme={null}
curl https://api.astronpay.co/api/v1/payin/$ORDER_ID \
  -H "x-api-key: $API_KEY" -H "x-api-secret: $API_SECRET"
```

Ou use o endpoint genérico `/orders/{id}`.

## Erros comuns

| Erro               | Causa                                                                        |
| ------------------ | ---------------------------------------------------------------------------- |
| `QUOTE_EXPIRED`    | Mais de 30 s entre cotação e criação. Regere a cotação.                      |
| `LIMIT_EXCEEDED`   | Receiver já atingiu limite diário.                                           |
| `KYC_NOT_APPROVED` | Receiver não aprovado. Complete o [onboarding](/guides/receiver-onboarding). |
