Integre o MonezPay ao seu sistema de forma simples e rápida
Base URL:
https://moonezpay.site/api/v1
A API do MonezPay permite que você integre pagamentos PIX e Cartão de Crédito ao seu sistema de forma simples e segura.
Para usar a API, você precisa gerar uma chave de API no painel do sistema.
No painel do sistema, acesse a seção "Chave API" no menu lateral.
Ir para Chaves de API →Clique em "Gerar Nova Chave" e dê um nome descritivo (ex: "Site Principal", "App Mobile").
⚠️ Importante: Copie e guarde o token imediatamente, pois ele só será exibido uma vez!
Adicione o token gerado nas configurações do seu site/aplicação. O token terá o formato:
nxp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Crie pagamentos PIX e receba notificações em tempo real quando o pagamento for confirmado.
POST https://moonezpay.site/api/v1/payments/pix
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| amount | float | Sim | Valor do pagamento (mínimo: R$ 0,01) |
| payer_name | string | Sim | Nome completo do pagador |
| payer_email | string | Sim | Email do pagador |
| payer_cpf | string | Sim | CPF do pagador (apenas números) |
| description | string | Não | Descrição do pagamento |
| webhook_url | string (URL) | Sim | URL para receber o webhook específico deste pagamento |
{
"success": true,
"data": {
"transaction_uuid": "550e8400-e29b-41d4-a716-446655440000",
"amount": 100.00,
"fee": 4.00,
"amount_net": 96.00,
"status": "pending",
"qr_code": "00020126580014BR.GOV.BCB.PIX...",
"pix_code": "00020126580014BR.GOV.BCB.PIX...",
"pix_key": "00020126580014BR.GOV.BCB.PIX...",
"expires_at": "2024-11-26T12:30:00Z",
"expires_in_seconds": 300
}
}
Crie saques via PIX para transferir saldo da conta do usuário para uma chave PIX.
Importante: Para saques automáticos funcionarem, você precisa: 1. Configurar o modo de saque como "Automático" ao criar a credencial de API 2. Adicionar o IP do seu servidor nas configurações da API 3. O usuário precisa estar aprovado (KYC) e com saques desbloqueados
POST https://moonezpay.site/api/v1/cashout/pix
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| amount | float | Sim | Valor líquido desejado (mínimo: R$ 10,00). O sistema calcula automaticamente o valor bruto incluindo taxas. |
| pix_key | string | Sim | Chave PIX de destino (CPF, Email, Telefone ou Chave Aleatória) |
{
"success": true,
"message": "Saque criado e processado automaticamente.",
"withdrawal": {
"id": 123,
"amount": 95.00,
"amount_gross": 100.00,
"fee": 5.00,
"status": "processing",
"pix_key": "12345678900"
}
}
Liste e filtre as transações da sua conta ou busque uma transação específica.
GET https://moonezpay.site/api/v1/transactions
| Campo | Tipo | Descrição |
|---|---|---|
| status | string | Filtrar por status (paid, pending, failed, etc) |
| page | integer | Número da página |
| limit | integer | Itens por página (padrão: 15) |
Webhook é a forma recomendada de receber a confirmação do pagamento (pago / pendente / falhou) em tempo real, sem precisar ficar consultando o status.
webhook_url no payload de criação da transação.
Exemplo: https://seusite.com/webhooks/webhook
⚠️ O webhook é enviado para todas as suas chaves ativas que tenham Webhook URL configurada.
Para garantir que a notificação foi enviada pelo MonezPay, nós assinamos o payload com HMAC SHA-256 e enviamos no header:
X-Webhook-Signature: <HMAC_SHA256>
A chave usada na assinatura é o seu token de API (o mesmo usado no Authorization Bearer).
<?php
// Exemplo de validação do Webhook (PHP)
$raw = file_get_contents('php://input');
$received = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$token = 'SEU_TOKEN_DE_API_AQUI';
$expected = hash_hmac('sha256', $raw, $token);
if (!hash_equals($expected, $received)) {
http_response_code(401);
echo 'invalid signature';
exit;
}
$payload = json_decode($raw, true);
// Processe o evento...
http_response_code(200);
echo 'ok';
| Evento | Quando acontece |
|---|---|
| transaction.waiting_payment | Cobrança criada / aguardando pagamento. |
| transaction.completed | Pagamento confirmado (pago). |
| deposit.completed | Evento adicional para depósito PIX confirmado. |
| transaction.failed | Falha/expiração/cancelamento da transação. |
| withdrawal.completed | Saque concluído (quando você usa o cashout). |
O MonezPay envia uma requisição POST para sua Webhook URL com o corpo abaixo:
{
"event": "transaction.completed",
"created_at": "2026-02-25T04:19:10Z",
"data": {
"id": 123,
"uuid": "0b55f102-2cbd-450f-b65f-4e5af080fc0f",
"external_id": "0b55f102-2cbd-450f-b65f-4e5af080fc0f",
"type": "pix",
"status": "completed",
"gateway_provider": "misticpay",
"amount_gross": 20.00,
"fee": 2.10,
"amount_net": 17.90,
"payer_name": "Renato Gomes",
"payer_email": "renato@email.com",
"payer_cpf": "12345678900",
"expires_at": "2026-02-25T04:23:28Z",
"created_at": "2026-02-25T04:18:29Z",
"updated_at": "2026-02-25T04:19:10Z"
}
}
✅ No seu sistema, o ideal é usar uuid (ou external_id) como chave para identificar o pedido do seu cliente e liberar o produto/serviço quando chegar transaction.completed.
Seu endpoint deve responder com HTTP 200 OK. Se retornar 5xx ou der timeout, o sistema tentará reenviar automaticamente.
Exemplo de criação de pagamento PIX usando Guzzle.
<?php
$client = new \GuzzleHttp\Client();
$response = $client->post('https://moonezpay.site/api/v1/payments/pix', [
'headers' => [
'Authorization' => 'Bearer SEU_TOKEN',
'X-Client-ID' => 'SEU_CLIENT_ID',
'Accept' => 'application/json',
],
'json' => [
'amount' => 100.00,
'payer_name' => 'João Silva',
'payer_email' => 'joao@email.com',
'payer_cpf' => '12345678900',
'description' => 'Pagamento de Teste',
'webhook_url' => 'https://seu-sistema.com/api/webhook'
]
]);
$body = json_decode($response->getBody(), true);
print_r($body);
Exemplo usando a biblioteca requests.
import requests
url = "https://moonezpay.site/api/v1/payments/pix"
payload = {
"amount": 100.00,
"payer_name": "João Silva",
"payer_email": "joao@email.com",
"payer_cpf": "12345678900",
"description": "Pagamento de Teste",
"webhook_url": "https://seu-sistema.com/api/webhook"
}
headers = {
"Authorization": "Bearer SEU_TOKEN",
"X-Client-ID": "SEU_CLIENT_ID",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
Exemplo usando fetch API.
const url = "https://moonezpay.site/api/v1/payments/pix";
const payload = {
amount: 100.00,
payer_name: "João Silva",
payer_email: "joao@email.com",
payer_cpf: "12345678900",
description: "Pagamento de Teste",
webhook_url: "https://seu-sistema.com/api/webhook"
};
const headers = {
"Authorization": "Bearer SEU_TOKEN",
"X-Client-ID": "SEU_CLIENT_ID",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST "https://moonezpay.site/api/v1/payments/pix" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "X-Client-ID: SEU_CLIENT_ID" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"payer_name": "João Silva",
"payer_email": "joao@email.com",
"payer_cpf": "12345678900",
"description": "Pagamento de Teste",
"webhook_url": "https://seu-sistema.com/api/webhook"
}'
Lista de possíveis códigos de status HTTP retornados pela API.
| Código | Significado | Descrição |
|---|---|---|
| 200 | OK | Requisição processada com sucesso. |
| 201 | Created | Recurso criado com sucesso (ex: novo pagamento). |
| 400 | Bad Request | Dados inválidos enviados na requisição. Verifique os campos. |
| 401 | Unauthorized | Token inválido ou não fornecido. |
| 403 | Forbidden | Acesso negado ao recurso solicitado. |
| 404 | Not Found | Recurso não encontrado (ex: transação inexistente). |
| 422 | Unprocessable Entity | Erro de validação (ex: email inválido, saldo insuficiente). |
| 500 | Internal Server Error | Erro interno do servidor. Tente novamente mais tarde. |