Documentação da API Royal Bank - Cashin

Bem-vindo à documentação da API Pix do RoyalBanking! Esta API permite que você integre a funcionalidade de geração e confirmação de pagamentos via Pix em seus sistemas. Abaixo, você encontrará detalhes sobre como realizar operações de entrada (cash in) e saída (cash out) utilizando a API.

Atenção: Somente IP's autorizados

Solicitação de Depósito (Pix de Entrada)

Como Usar

Para usar a API Pix do RoyalBanking, faça uma requisição HTTP POST para o endpoint https://api.royalbanking.com.br/v1/gateway/ com os seguintes parâmetros:

Descrição

Esse endpoint permite realizar requisições de pagamento via PIX, com autenticação por chave de API e validação de IP autorizado. Ele também verifica campos obrigatórios e requisitos de valores mínimos.

Exemplo de Requisição Cash in

            
{
    "amount": 100,
    
    "client": {
    
        "name": "Maria Oliveira",
        
        "document": "123456789",
        
        "telefone": "11999999999",
        
        "email": "[email protected]"
        
    },
    
        "split" => [
    
        "email" => 'Teste002', //Utilize Seu Nome De Usuario!
            
        "percentage" => '50',
    
],
        "callbackUrl" => 'https://exemplo/royalbanking/callback', //Utilize para enviar seu webhook

        "api-key": "81bb141jmdaw9u32-d3q9md3qd-qdwq59"
}
            
        

Respostas da API

  • 200 OK: O Pix foi gerado com sucesso. A resposta incluirá detalhes do Pix.

Exemplo de Resposta (200 OK)

Aqui está um exemplo de resposta quando a requisição é bem-sucedida:

                
{
    "status": "success",
    "message": "ok",
    "paymentCode": "00020101021226790014br.gov.bcb.pix255/v2/be1920df6b714e4e84edd77d7f25204000039865802BR
592**63042CA1", "idTransaction": "52fc5262-4063-4900-933b-55e69850", "paymentCodeBase64": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AQAAAACgl2eQAAACwElEQVR4Xu2XS5IjIQwF4SJw/1vMUeAi
. MJmi2y57IjpmMaXZGH+qDLl4IelJ5bJ/Xr/K+87b+gBnfYCzPsBZfweMUuoqpfTVGl91r9Knm4nA5D36Xn3uUQdY5epmJhA/Fyedr9I
HMuvZTAXmnopDHRurtP4fgNVMUCuuvglbNsAbFlZQERo8cI22piU9dFaE8oCVMd2xTXdUiFNGHmlArQtNdWvWt1+gT6LNgHAL7SwO
kImuRr8JHo9E/CwlGifvJp6Q2omQPNgktTTRzuVg8YwcSJwzGoHp04QSdUM4YfIFCDMs8ItJgt1DNpcQNsSoeKhTUTR12QlADHPqFal
EaViM1FwzwV4tunhWW3DiLONXYxzP3BqxEihi/Ph3TVZCcBSm56xmYO0GsnSwGmAvZuzPkkaVYs8fPyWrNuBKFfaCG3MUzV688zm/YB
PeYoM04waWp0umYBmDVHW67R+SuQrE0AXEeo2T2Ryt2K6PJOVACixEq0RMi3iYRvZD5EJgF3UyVQxcGSCWynmEo1seZtpm1dzJsAGJ
e9eJsgrmSvjhd33w5MI2UjnR51h+s+P/MATYN3BVX8Z7IygBpRIkfNcTo0Lum6uvt2wKaBJiITIns0ESOWClisyDqPOGBEimR5lAWMa
. vOSIlYGLc5fknU7gGHCq9HMCNlQYDgoD1ihyOE+zVgkr3roSi5Pm8ybxSgRc9q+4MFOV/DLcE4BxikTbVP+H2sot2UeyEoBTG+wstVH
. A54ZPIhDaCt4hV8dBoTsbmOEZg7X0TPw329nAiL7lvUYySnJ5wHamEqvwSsgdPvBIZAGRGTSW+vVvmHg1e0ki8NP6AGd9gLM+wFn/AP
. gNfNIphReCMrQAAAAASUVORK5CYII=" }

Dados do Cliente

Campo Tipo Obrigatório Descrição
clientstringSim{
namestringSimNome do cliente (Exemplo: "ExemploDaSilva")
documentstringSimCPF sem pontuação. (Exemplo: "12345678911")
telefonestringSimTelefone sem pontuação. (Exemplo: "12345678911")
emailstringSimEmail do Cliente. (Padrão: "[email protected]")
},

Detalhes do Pagamento

Campo Tipo Obrigatório Descrição
api-keystringSimApi-Key do Cliente Royal. (Exemplo: "81bb141jmdaw9u32-d3q9md3qd-qdwq59")
amountStringSimValor do pagamento em reais. Sem pontuação.
splitstringNão{
emailstringNãoUsuario do Split. (Exemplo: "@teste123")
percentagestringNãoPorcentagem de Split. (Exemplo: "10")
},

Outros Parâmetros

Campo Tipo Obrigatório Descrição
callbackUrlstringSimURL de retorno para notificações de atualização

Webhook - Confirmação de Pagamento

{ "idtransaction": "81bb141a-1746-49a8-bb4a-c3b8aa0d2259", "status": "paid" }

Caso seu sistema não retorne Status: 200

O Webhook será disparado por mais 3 vezes

Respostas da API

Sucesso

Código: 200 OK

Corpo: JSON contendo informações da transação e confirmação do processamento.

Erros

Código Mensagem Descrição
401API Key não fornecidaCabeçalho de autenticação ausente ou inválido.
403IP não autorizadoO IP do solicitante não é permitido.
422Dados inválidosFaltam dados obrigatórios ou valor fora do permitido.

Documentação da API Royal Bank - Cashout

Solicitação de Saques (Pix de Saída)

Endpoint: https://api.royalbanking.com.br/c1/cashout

Descrição

Esse endpoint permite realizar requisições de saque via PIX, com autenticação por chave de API, validação de IP autorizado e cálculo de taxas e saldo líquido para cashout.

Formato de Requisição: JSON via POST
Autenticação: Basic Auth
Cabeçalho:
Authorization: Basic {API_KEY}
content-type: application/json

Substitua {API_KEY} pela chave de API codificada em Base64.

Parâmetros da Requisição (JSON)

Campo Tipo Obrigatório Descrição
api_keystringSimChave de API do usuário para autenticação.
amountNumberSimValor do saque solicitado em reais.
pixKeystringSimChave pix para recebimento.
pixTypestringSimTipo da chave.
beneficiaryNamestringSimNome do beneficiário.
beneficiaryDocumentstringSimCPF do beneficiário
beneficiaryDocumentstringNãoDescrição
postbackUrlstringSimURL de retorno para notificações de atualização.

Exemplo Json de Envio

 
        {
          "api-key": "81bb141a-1746-49a8-basdasdas4a-c3b8dasdasdasaa0d2259" ,
          "name": "adm neto",
          "cpf": "33456787698"
          "keypix": "7029132323669492",
          "amount": 410.95
        }
                

Respostas da API

Sucesso

Código: 200 OK

Corpo: JSON contendo informações sobre a transação e o saldo atualizado.

Erros

Código Mensagem Descrição
401API Key não fornecidaCabeçalho de autenticação ausente ou inválido.
401IP não autorizadoO IP do solicitante não está autorizado.
422Dados inválidosFaltam dados obrigatórios ou o valor é inválido.

Documentação da API Royal Bank - Webhook para Transações

Este webhook permite que o sistema receba notificações de transações de depósito e saque via JSON.

Endpoint

https://seuservidor.com/webhook.php

Descrição

Este webhook recebe notificações automáticas para depósitos e saques, fornecendo dados detalhados das transações. No caso de um depósito, o campo paymentCode pode ser usado para gerar um QR Code para pagamento.

Formato de Requisição: JSON via POST
Cabeçalho: Content-Type: application/json

Estrutura JSON da Requisição

1. Depósito

Campo Tipo Descrição
idintegerID da transação
user_idintegerID do usuário
externalreferencestringReferência externa da transação
amountfloatValor do depósito
client_namestringNome do cliente
client_documentstringDocumento do cliente
client_emailstringEmail do cliente
data_registrostringData de registro da transação
adquirente_refstringReferência do adquirente
statusstringStatus da transação
idtransactionstringID da transação de pagamento
paymentcodestringCódigo para gerar QR Code de pagamento
paymentCodeBase64stringQRCode em Base64
taxa_depositofloatTaxa aplicada ao depósito
taxa_adquirentefloatTaxa do adquirente
deposito_liquidofloatValor líquido do depósito

2. Saque

Campo Tipo Descrição
idintegerID da transação
user_idintegerID do usuário
externalreferencestringReferência externa da transação
amountfloatValor do saque
beneficiarynamestringNome do beneficiário
beneficiarydocumentstringDocumento do beneficiário
pixstringChave Pix
typestringTipo de saque
pixkeystringChave Pix
datestringData da transação
statusstringStatus da transação
idtransactionstringID da transação de pagamento
taxa_cash_outfloatTaxa aplicada ao saque
cash_out_liquidofloatValor líquido do saque

Exemplo de Código para Implementação do Webhook

O exemplo a seguir ilustra como configurar o webhook para receber e processar as notificações de transações.

 
                // webhook.php
                $data = file_get_contents("php://input");
                $jsonData = json_decode($data, true);
                
                if ($jsonData) {
                    if (isset($jsonData['client_name']) && isset($jsonData['paymentcode'])) {
                        $transactionType = 'Depósito';
                        $paymentCode = $jsonData['paymentcode']; // QR Code pode ser gerado com este código
                    } elseif (isset($jsonData['beneficiaryname']) && isset($jsonData['pixkey'])) {
                        $transactionType = 'Saque';
                    } else {
                        $transactionType = 'Desconhecido';
                    }
                
            echo json_encode(['status' => 'success', 'message' => "$transactionType recebido com sucesso."]);
                } else {
                    http_response_code(400);
                    echo json_encode(['status' => 'error', 'message' => 'Dados inválidos.']);
                }