AxioPay
API Reference
Gateway de pagamentos brasileiro com suporte a Pix, cartão de crédito e débito, e links de pagamento compartilháveis. API REST, respostas em JSON, integração em minutos.
https://api.axiopay.com.br/v1 — Sandbox: https://sandbox.axiopay.com.br/v1
Início rápido
Em 3 passos você já aceita pagamentos:
# 1. Gere suas chaves em app.axiopay.com.br/developers # 2. Crie uma cobrança Pix curl -X POST https://api.axiopay.com.br/v1/charges \ -H "Authorization: Bearer sk_live_SUA_CHAVE" \ -H "Content-Type: application/json" \ -d '{ "amount": 4990, "method": "pix", "description": "Plano Imobiliária — X-Troca", "customer": { "name": "João Silva", "cpf": "123.456.789-00", "email": "[email protected]" } }'
Chaves de API
Todas as requisições devem incluir sua chave no header Authorization. Use chaves diferentes para produção e sandbox.
| Prefixo | Ambiente | Uso |
|---|---|---|
| sk_live_ | Produção | Transações reais. Mantenha segura no servidor. |
| sk_test_ | Sandbox | Testes sem cobranças reais. |
| pk_live_ | Produção (pública) | Uso no frontend. Não realiza cobranças. |
sk_live_ no frontend. Use sempre do servidor.
Taxas por método
Cobradas somente sobre transações aprovadas. Liquidação automática na conta bancária cadastrada.
Cobranças
Parâmetros
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
| amount | integer | sim | Valor em centavos. Ex: 4990 = R$49,90 |
| method | string | sim | pix · credit_card · debit_card |
| description | string | não | Descrição da cobrança (max 255 chars) |
| customer | object | sim | Dados do pagador. Ver objeto Customer abaixo. |
| metadata | object | não | Dados adicionais retornados no webhook. |
| webhook_url | string | não | URL para receber notificações de status. |
Objeto Customer
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
| name | string | sim | Nome completo |
| cpf | string | sim | CPF com ou sem formatação |
| string | sim | E-mail do pagador | |
| phone | string | não | Telefone com DDD |
Resposta
{
"id": "ch_01HXYZ123ABC",
"status": "pending",
"amount": 4990,
"method": "pix",
"pix": {
"qr_code": "00020126580014BR.GOV.BCB.PIX...",
"qr_code_url": "https://api.axiopay.com.br/v1/charges/ch_01HXYZ/qr.png",
"expires_at": "2026-03-12T23:59:59Z"
},
"customer": {
"name": "João Silva",
"email": "[email protected]"
},
"created_at": "2026-03-12T10:00:00Z"
}
Retorna os dados completos de uma cobrança incluindo status atual.
Status possíveis
| Status | Descrição |
|---|---|
| pending | Aguardando pagamento |
| paid | Pago e confirmado |
| failed | Falha no pagamento |
| expired | QR Code ou link expirado |
| refunded | Estornado |
Integração Pix
O Pix é processado via Banco Central do Brasil. O QR Code é gerado instantaneamente e a confirmação ocorre em tempo real.
Exemplo completo — Pix
<?php // Criar cobrança Pix $ch = AxioPay::charge([ 'amount' => 4990, // R$49,90 em centavos 'method' => 'pix', 'description' => 'Plano Imobiliária', 'customer' => [ 'name' => 'João Silva', 'cpf' => '12345678900', 'email' => '[email protected]', ], 'webhook_url' => 'https://seusite.com.br/webhook/axiopay', 'metadata' => ['order_id' => 1042], ]); // Exibir QR Code para o cliente echo '<img src="' . $ch->pix->qr_code_url . '">'; echo '<textarea>' . $ch->pix->qr_code . '</textarea>';
Cartão de Crédito e Débito
Para processar cartões, tokenize os dados no frontend usando a chave pública pk_live_ e envie o token ao servidor. Nunca trafegue dados de cartão pelo seu backend diretamente.
1. Tokenizar no frontend
// Incluir o SDK AxioPay const axiopay = new AxioPay('pk_live_SUA_CHAVE_PUBLICA'); const token = await axiopay.tokenize({ number: '4111111111111111', name: 'JOAO SILVA', expiry: '12/2028', cvv: '123', }); // Envie token.id para o seu servidor fetch('/processar-pagamento', { method: 'POST', body: JSON.stringify({ card_token: token.id }) });
2. Cobrar no backend
$ch = AxioPay::charge([ 'amount' => 4990, 'method' => 'credit_card', // ou 'debit_card' 'card_token' => $_POST['card_token'], 'customer' => [ 'name' => 'João Silva', 'cpf' => '12345678900', 'email' => '[email protected]', ], ]); if ($ch->status === 'paid') { // Ativar produto/serviço }
Links de Pagamento
Crie links de pagamento e compartilhe com seus clientes por e-mail, WhatsApp, SMS ou redes sociais. O cliente acessa o link, escolhe o método de pagamento (Pix, crédito ou débito) e paga — sem precisar de integração técnica.
Criar link via API
Parâmetros
| Campo | Tipo | Obrig. | Descrição |
|---|---|---|---|
| name | string | sim | Nome do produto ou serviço (exibido no checkout) |
| amount | integer | sim | Valor em centavos. Ex: 4990 = R$49,90 |
| methods | array | não | Métodos aceitos: ["pix","credit_card","debit_card"] (padrão: todos) |
| description | string | não | Descrição adicional (max 255 chars) |
| redirect_url | string | não | URL de redirecionamento após pagamento aprovado |
| expires_in | integer | não | Expiração em minutos. Padrão: 1440 (24h). 0 = sem expiração |
| max_payments | integer | não | Limite de pagamentos. Padrão: 0 (ilimitado). Use 1 para links de uso único. |
| webhook_url | string | não | URL para receber notificações de pagamento |
| metadata | object | não | Dados adicionais retornados no webhook |
Resposta
{
"id": "pl_01HXYZ456DEF",
"url": "https://pay.axiopay.com.br/pl_01HXYZ456DEF",
"short_url": "https://axio.pay/pL4k9x",
"name": "Plano Pro — Imobiliária",
"amount": 4990,
"methods": ["pix", "credit_card", "debit_card"],
"status": "active",
"payments_count": 0,
"expires_at": "2026-03-13T10:00:00Z",
"created_at": "2026-03-12T10:00:00Z"
}
Retorna todos os links de pagamento da sua conta, ordenados por data de criação (mais recente primeiro).
Query parameters
| Campo | Tipo | Descrição |
|---|---|---|
| status | string | Filtrar por status: active · expired · disabled |
| limit | integer | Máximo de resultados (padrão: 20, máx: 100) |
| offset | integer | Paginação — pular N resultados |
Desativa um link de pagamento. Links desativados retornam erro link_disabled ao acessar. Cobranças já realizadas não são afetadas.
Exemplo completo — Criar e compartilhar
<?php // Criar link de pagamento $link = AxioPay::createPaymentLink([ 'name' => 'Plano Imobiliária — X-Troca', 'amount' => 4990, // R$49,90 'methods' => ['pix', 'credit_card', 'debit_card'], 'description' => 'Assinatura mensal', 'expires_in' => 0, // sem expiração 'redirect_url' => 'https://seusite.com.br/obrigado', 'webhook_url' => 'https://seusite.com.br/webhook/axiopay', 'metadata' => ['plan' => 'pro'], ]); // URL para compartilhar echo $link->url; // https://pay.axiopay.com.br/pl_01HXYZ456DEF echo $link->short_url; // https://axio.pay/pL4k9x (ideal para WhatsApp/SMS)
Exemplo — cURL
curl -X POST https://api.axiopay.com.br/v1/payment-links \ -H "Authorization: Bearer sk_live_SUA_CHAVE" \ -H "Content-Type: application/json" \ -d '{ "name": "Consultoria — 1 hora", "amount": 15000, "methods": ["pix", "credit_card"], "expires_in": 0, "redirect_url": "https://seusite.com.br/obrigado" }'
Botão de pagamento (HTML embed)
Incorpore um botão estilizado no seu site que redireciona para o link de pagamento:
<!-- Botão AxioPay --> <a href="https://pay.axiopay.com.br/pl_SEU_LINK_ID" style="display:inline-block;padding:14px 32px; background:#00e5ff;color:#05090f;font-weight:700; border-radius:8px;text-decoration:none; font-family:sans-serif;font-size:15px"> Pagar com AxioPay </a>
Status do link
| Status | Descrição |
|---|---|
| active | Link ativo e aceitando pagamentos |
| expired | Link expirou (tempo limite atingido) |
| disabled | Link desativado manualmente via API ou portal |
| max_reached | Limite de pagamentos atingido |
charge independente. Use o webhook_url do link ou o webhook global da sua conta para receber notificações.
Webhooks
A AxioPay envia uma requisição POST para sua webhook_url sempre que o status de uma cobrança muda.
Payload do webhook
{
"event": "charge.paid",
"charge": {
"id": "ch_01HXYZ123ABC",
"status": "paid",
"amount": 4990,
"method": "pix",
"paid_at": "2026-03-12T10:05:23Z",
"metadata": { "order_id": 1042 }
},
"signature": "sha256=abc123..."
}
Verificar assinatura
$payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_AXIOPAY_SIGNATURE']; $secret = 'seu_webhook_secret'; $expected = 'sha256=' . hash_hmac('sha256', $payload, $secret); if (!hash_equals($expected, $signature)) { http_response_code(401); exit; } $event = json_decode($payload); if ($event->event === 'charge.paid') { // Liberar acesso ao produto $order_id = $event->charge->metadata->order_id; ativar_plano($order_id); }
WordPress / WooCommerce
Instale o plugin AxioPay e configure suas chaves. Após a ativação, o gateway aparece automaticamente nas opções de pagamento do WooCommerce.
Shortcode de checkout
Para usar o checkout AxioPay em qualquer página WordPress, sem WooCommerce:
[axiopay_checkout produto="Nome do produto" valor="4990" descricao="Descrição" redirect_url="https://seusite.com/obrigado" webhook_url="https://seusite.com/webhook" ]
Parâmetros do shortcode
| Parâmetro | Obrig. | Descrição |
|---|---|---|
| produto | sim | Nome exibido no checkout |
| valor | sim | Valor em centavos |
| descricao | não | Descrição interna da cobrança |
| redirect_url | não | URL após pagamento aprovado |
| webhook_url | não | URL para receber notificações |
| metodos | não | pix,credit_card,debit_card (padrão: todos) |
SDK PHP
composer require axiopay/axiopay-php
use AxioPay\AxioPay; AxioPay::setApiKey('sk_live_SUA_CHAVE'); // Criar cobrança $charge = AxioPay::charge([...]); // Consultar $charge = AxioPay::getCharge('ch_01HXYZ'); // Estornar AxioPay::refund('ch_01HXYZ');
Sandbox & Cartões de teste
| Número | Resultado |
|---|---|
| 4111 1111 1111 1111 | ✅ Aprovado |
| 4000 0000 0000 0002 | ❌ Saldo insuficiente |
| 4000 0000 0000 0069 | ❌ Cartão expirado |
| 4000 0000 0000 0119 | ⏳ Timeout (simula lentidão) |
Códigos de erro
| HTTP | Código | Descrição |
|---|---|---|
| 400 | invalid_amount | Valor inválido ou abaixo do mínimo (R$1,00) |
| 401 | invalid_api_key | Chave de API inválida ou expirada |
| 400 | invalid_card | Dados do cartão inválidos |
| 400 | card_declined | Cartão recusado pela operadora |
| 400 | insufficient_funds | Saldo insuficiente |
| 422 | charge_expired | QR Code ou link de pagamento expirado |
| 410 | link_disabled | Link de pagamento desativado |
| 410 | link_max_reached | Limite de pagamentos do link atingido |