Pular para o conteúdo

Checkout

O checkout é uma cobrança única com URL própria, hospedada pela Avexus. Em vez de montar a tela de pagamento, você cria o checkout e manda o pagador para a nossa página: ele informa os dados, gera o Pix ali e vê a confirmação.

  1. Você cria o checkout com valor, descrição e — opcionalmente — os dados do pagador que já conhece.

  2. A Avexus devolve a URL da página pública, com um token não enumerável no lugar do id.

  3. O pagador abre a página, confirma os dados e pede o Pix.

  4. O Pix é gerado só aí — o checkout nasce PENDING sem código Pix. Isso evita gerar QR code de cobrança que ninguém vai abrir.

  5. Você recebe o webhook transaction com CONFIRMED quando o pagamento compensa, igual a qualquer cobrança.

POST /checkouts TODO(contrato)

Campo Tipo Obrigatório Descrição
amount number Sim Valor em BRL, maior que zero
description string Não Descrição exibida na página
external_ref string Não A sua referência (id do pedido)
expires_in_hours number Não Expiração em horas (legado: padrão 24, máximo 720)
customer.name string Não Nome do pagador, se você já souber
customer.email string Não E-mail do pagador
customer.document string Não CPF do pagador (validado com dígito verificador)
POST /checkouts — criar (contrato provisório)
curl --request POST \
--url https://api.avexus.app/checkouts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <API_KEY>' \
--header 'x-token: <TOKEN>' \
--header 'idempotency-key: <UNIQUE_KEY>' \
--data '{
"amount": 197.00,
"description": "Mentoria Pro — plano trimestral",
"external_ref": "pedido_1042",
"expires_in_hours": 24,
"customer": {
"name": "Maria Souza",
"email": "maria@example.com",
"document": "12468239008"
}
}'
201 (formato do legado)
{
"checkout": {
"id": "0f2c9a41-6c58-4d0e-9a3f-6d5a1c7b2e88",
"url": "https://avexus.app/pay/c/8xK2mQ7pRvN4tL9wZ3cB6hD1",
"amount": 197.0,
"status": "PENDING",
"expiresAt": "2026-07-25T18:38:26.703Z"
}
}

GET /checkouts TODO(contrato)

Devolve os checkouts da sua loja, do mais recente para o mais antigo, com o status, a url e se o Pix já foi gerado.

GET /checkouts — listar (contrato provisório)
curl --request GET \
--url https://api.avexus.app/checkouts \
--header 'x-api-key: <API_KEY>' \
--header 'x-token: <TOKEN>'

Estas rotas não são autenticadas: quem chama é a página do pagador, não a sua aplicação. Você só precisa delas se resolver hospedar a própria tela em vez de usar a da Avexus.

Método Endpoint Descrição
GET /checkout/{token} Dados públicos do checkout (valor, descrição, nome do lojista, status)
POST /checkout/{token}/pay O pagador informa nome, e-mail e CPF; a Avexus gera o Pix

POST /checkout/{token}/pay chamado duas vezes devolve o mesmo código Pix — o segundo responde 200 com o código já gerado, em vez de criar outra cobrança no adquirente.

Tanto a leitura quanto a geração do Pix passam pelas mesmas verificações — o legado as centraliza em checkoutAvailability justamente para não divergirem:

Situação Resposta
Não é um checkout (é cobrança de link de pagamento) Checkout indisponível
Conta do lojista não está ativa Vendedor indisponível para cobrança
Passou de expires_at Checkout expirado
Já foi pago A página exibe a confirmação; gerar Pix responde Este checkout já foi pago