Visão Geral
Bem-vindo à documentação da API Pix do LumoPay! Esta API permite que você integre facilmente a funcionalidade de geração de Pix em seus aplicativos.
Gerar Pix (Cash In)
POST
https://api.lumopay.pro/v1/gateway/
Parâmetros da Requisição
{
"amount": 100,
"client": {
"name": "Maria Oliveira",
"document": "123456789",
"telefone": "11999999999",
"email": "maria.oliveira@email.com"
},
"api-key": "81bb141jmdaw9u32-d3q9md3qd-qdwq59",
"postback": "https://meusistema.com/callback"
}
Resposta de Sucesso
{
"status": "success",
"message": "ok",
"paymentCode": "00020101021226790014br.gov.bcb.pix255/v2/be1920df6b714e4e84edd77d7f25204000039865802BR592**63042CA1",
"idTransaction": "52fc5262-4063-4900-933b-55e69850",
"paymentCodeBase64": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AQAAAACgl2eQAAACwElEQVR4Xu2XS5IjIQwF4SJw/1vMUeAiMJmi2y57IjpmMaXZGH+qDLl4IelJ5bJ/Xr/K+87b+gBnfYCzPsBZfweMUuoqpfTVGl91r9Knm4nA5D36Xn3uUQdY5epmJhA/Fyedr9IHMuvZTAXmnopDHRurtP4fgNVMUCuuvglbNsAbFlZQERo8cI22piU9dFaE8oCVMd2xTXdUiFNGHmlArQtNdWvWt1+gT6LNgHAL7SwOkImuRr8JHo9E/CwlGifvJp6Q2omQPNgktTTRzuVg8YwcSJwzGoHp04QSdUM4YfIFCDMs8ItJgt1DNpcQNsSoeKhTUTR12QlADHPqFalEaViM1FwzwV4tunhWW3DiLONXYxzP3BqxEihi/Ph3TVZCcBSm56xmYO0GsnSwGmAvZuzPkkaVYs8fPyWrNuBKFfaCG3MUzV688zm/YBPeYoM04waWp0umYBmDVHW67R+SuQrE0AXEeo2T2Ryt2K6PJOVACixEq0RMi3iYRvZD5EJgF3UyVQxcGSCWynmEo1seZtpm1dzJsAGJe9eJsgrmSvjhd33w5MI2UjnR51h+s+P/MATYN3BVX8Z7IygBpRIkfNcTo0Lum6uvt2wKaBJiITIns0ESOWClisyDqPOGBEimR5lAWMavOSIlYGLc5fknU7gGHCq9HMCNlQYDgoD1ihyOE+zVgkr3roSi5Pm8ybxSgRc9q+4MFOV/DLcE4BxikTbVP+H2sot2UeyEoBTG+wstVHA54ZPIhDaCt4hV8dBoTsbmOEZg7X0TPw329nAiL7lvUYySnJ5wHamEqvwSsgdPvBIZAGRGTSW+vVvmHg1e0ki8NP6AGd9gLM+wFn/APgNfNIphReCMrQAAAAASUVORK5CYII="
}
Realizar Saque (Cash Out)
POST
https://api.lumopay.pro/c1/cashout/
Parâmetros da Requisição
{
"api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name": "João da Silva",
"cpf": "12345678900",
"keypix": "joao@email.com",
"amount": 100.00,
"pix_type": "EMAIL",
"webhook_url": "https://meusistema.com/webhook/cashout"
}
Exemplos de Requisição
curl -X POST https://api.lumopay.pro/c1/cashout/ \
-H "Content-Type: application/json" \
-d '{
"api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name": "João da Silva",
"cpf": "12345678900",
"keypix": "joao@email.com",
"amount": 100.00,
"pix_type": "EMAIL",
"webhook_url": "https://meusistema.com/webhook/cashout"
}'
const axios = require('axios');
const data = {
"api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name": "João da Silva",
"cpf": "12345678900",
"keypix": "joao@email.com",
"amount": 100.00,
"pix_type": "EMAIL",
"webhook_url": "https://meusistema.com/webhook/cashout"
};
axios.post('https://api.lumopay.pro/c1/cashout/', data, {
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
console.log('Status:', response.data.status);
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error.response?.data || error.message);
});
import requests
import json
url = "https://api.lumopay.pro/c1/cashout/"
data = {
"api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name": "João da Silva",
"cpf": "12345678900",
"keypix": "joao@email.com",
"amount": 100.00,
"pix_type": "EMAIL",
"webhook_url": "https://meusistema.com/webhook/cashout"
}
headers = {
"Content-Type": "application/json"
}
try:
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
print(f"Status: {result.get('status')}")
print(f"Response: {result}")
else:
print(f"Error {response.status_code}: {response.text}")
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
const data = {
"api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name": "João da Silva",
"cpf": "12345678900",
"keypix": "joao@email.com",
"amount": 100.00,
"pix_type": "EMAIL",
"webhook_url": "https://meusistema.com/webhook/cashout"
};
fetch('https://api.lumopay.pro/c1/cashout/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => {
console.log('Status:', result.status);
console.log('Response:', result);
})
.catch(error => {
console.error('Error:', error);
});
$data = [
"api-key" => "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259",
"name" => "João da Silva",
"cpf" => "12345678900",
"keypix" => "joao@email.com",
"amount" => 100.00,
"pix_type" => "EMAIL",
"webhook_url" => "https://meusistema.com/webhook/cashout"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.lumopay.pro/c1/cashout/");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
$result = json_decode($response, true);
echo "Status: " . $result['status'] . "\n";
echo "Response: " . $response . "\n";
} else {
echo "Error " . $http_code . ": " . $response . "\n";
}
Resposta de Sucesso
{
"status": "success",
"message": "K-200"
}
Webhooks Cashout
Consulta de Status
Para consultar o status de um saque, faça uma requisição HTTP POST para o endpoint:
POST
https://seuendpoint.com/webhook_cashout
Parâmetros da Requisição
{
"idTransaction": "81bb141a-1746-49a8-bb4a-c3b8aa0d2259",
"status": "pending",
"amount": "5.88",
"pixKey": "00000000-0000-0000-0000-0000000000000",
"paymentMethod": "PIX"
}
Resposta de Sucesso (200 OK)
{
"status": "pending" // Status inicial
// ou
"status": "paid" // Saque realizado com sucesso
// ou
"status": "refused" // Pagamento recusado
// ou
"status": "cancelled" // Saque cancelado
}
Notificações de Atualização
Quando o status de um saque é atualizado, enviamos uma notificação POST para a URL de webhook configurada com o seguinte payload:
{
"idTransaction": "81bb141a-1746-49a8-bb4a-c3b8aa0d2259",
"status": "paid", // MESMO FORMATO LISTADO ACIMA
"amount": "5.88",
"pixKey": "00000000-0000-0000-0000-0000000000000",
"paymentMethod": "PIX"
}
Resposta de Erro (400 Bad Request)
{
"error": "Invalid JSON or missing externalreference"
}
Resposta de Erro (404 Not Found)
{
"error": "Transaction not found"
}
Webhooks Cash In
Confirmação de Pagamento
Para confirmar o pagamento, faça uma requisição HTTP POST para o endpoint:
POST
https://seuendpoint.com/webhook
Parâmetros da Requisição
{
"idtransaction": "string",
"status": "pending | paid | chargeback | in_dispute | failed"
}
Resposta de Sucesso (200 OK)
{
"status": "paid",
"idTransaction": "81bb141a-1746-49a8-bb4a-c3b8aa0d2259"
}
Resposta de Erro (400 Bad Request)
{
"error": "Invalid JSON or missing externalreference"
}
Resposta de Erro (404 Not Found)
{
"error": "Transaction not found"
}
Consultar Transação de CashIn
POST
https://api.lumopay.pro/v1/transactions/cashin/
Parâmetros da Requisição
Parâmetro | Tipo | Descrição |
---|---|---|
idTransaction |
String | Id da transação |
api-key |
String | Token de autorização |
Exemplos de Requisição
curl -X POST https://api.lumopay.pro/v1/transactions/cashin/ \
-H "Content-Type: application/json" \
-d '{
"idTransaction": "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
}'
const axios = require('axios');
const data = {
idTransaction: "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
};
axios.post('https://api.lumopay.pro/v1/transactions/cashin/', data, {
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
console.log('Status:', response.data.status);
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error.response?.data || error.message);
});
import requests
import json
url = "https://api.lumopay.pro/v1/transactions/cashin/"
data = {
"idTransaction": "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
}
headers = {
"Content-Type": "application/json"
}
try:
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
print(f"Status: {result.get('status')}")
print(f"Response: {result}")
else:
print(f"Error {response.status_code}: {response.text}")
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
const data = {
idTransaction: "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
};
fetch('https://api.lumopay.pro/v1/transactions/cashin/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => {
console.log('Status:', result.status);
console.log('Response:', result);
})
.catch(error => {
console.error('Error:', error);
});
// Dados da transação (substitua pelos dados reais)
$data = [
"idTransaction" => "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL", // ID da transação
"api-key" => "SUA_API_KEY_GERADA_NO_PAINEL" // Sua chave da API
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.lumopay.pro/v1/transactions/cashin/");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
$result = json_decode($response, true);
echo "Status: " . $result['status'] . "\n";
echo "Response: " . $response . "\n";
} else {
echo "Error " . $http_code . ": " . $response . "\n";
}
Resposta de Sucesso (200 OK)
{
"status": "WAITING_FOR_APPROVAL" // aguardando pagamento
"status": "PAID_OUT" // aprovado
"status": "REFUSED" // RECUSADO
"status": "CANCELLED" // Cancelado
"status": "CHARGEBACK" // Estorno
}
Resposta de Erro (400 Bad Request)
{
"error": "Invalid JSON or missing required parameters (idTransaction, api-key)"
}
Resposta de Erro (401 Unauthorized)
{
"error": "Invalid API key"
}
Resposta de Erro (404 Not Found)
{
"error": "Transaction not found or access denied"
}
Consultar Transação de Cashout
POST
https://api.lumopay.pro/v1/transactions/cashout/
Parâmetros da Requisição
Parâmetro | Tipo | Descrição |
---|---|---|
idTransaction |
String | Id da transação |
api-key |
String | Token de autorização |
Exemplos de Requisição
curl -X POST https://api.lumopay.pro/v1/transactions/cashout/ \
-H "Content-Type: application/json" \
-d '{
"idTransaction": "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
}'
const axios = require('axios');
const data = {
idTransaction: "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
};
axios.post('https://api.lumopay.pro/v1/transactions/cashout/', data, {
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
console.log('Status:', response.data.status);
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error.response?.data || error.message);
});
import requests
import json
url = "https://api.lumopay.pro/v1/transactions/cashout/"
data = {
"idTransaction": "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
}
headers = {
"Content-Type": "application/json"
}
try:
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
print(f"Status: {result.get('status')}")
print(f"Response: {result}")
else:
print(f"Error {response.status_code}: {response.text}")
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
const data = {
idTransaction: "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL",
"api-key": "SUA_API_KEY_GERADA_NO_PAINEL"
};
fetch('https://api.lumopay.pro/v1/transactions/cashout/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => {
console.log('Status:', result.status);
console.log('Response:', result);
})
.catch(error => {
console.error('Error:', error);
});
// Dados da transação (substitua pelos dados reais)
$data = [
"idTransaction" => "ID_DA_TRANSACAO_MOSTRADA_NO_PAINEL", // ID da transação
"api-key" => "SUA_API_KEY_GERADA_NO_PAINEL" // Sua chave da API
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.lumopay.pro/v1/transactions/cashout/");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
$result = json_decode($response, true);
echo "Status: " . $result['status'] . "\n";
echo "Response: " . $response . "\n";
} else {
echo "Error " . $http_code . ": " . $response . "\n";
}
Resposta de Sucesso (200 OK)
{
"status": "PENDING" // aguardando processamento
"status": "COMPLETED" // aprovado
"status": "CANCELLED" // RECUSADO
}
Resposta de Erro (400 Bad Request)
{
"error": "Invalid JSON or missing required parameters (idTransaction, api-key)"
}
Resposta de Erro (401 Unauthorized)
{
"error": "Invalid API key"
}
Resposta de Erro (404 Not Found)
{
"error": "Transaction not found or access denied"
}