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"
}