Pular para o conteúdo principal

Saque Crypto com Conversão FIAT

Este endpoint permite que o cliente realize o resgate de seus ativos digitais com conversão automática para moeda fiduciária. Na prática, o sistema processa a venda da criptomoeda (ex: USDT) e realiza o pagamento equivalente em BRL diretamente via Pix para a chave cadastrada.


Endpoint​

  • Método: POST
URL do Endpoint
https://api.xgateglobal.com/withdraw

Testar Integração​

Utilize o formulário abaixo para simular a criação de um pedido de conversão Crypto para FIAT.

🔄

Testar: Saque Crypto para Fiat

1. Suas Credenciais

Requisição​

É necessário enviar o Header de autenticação e o Body com os dados do pedido.

Headers Obrigatórios​

HeaderValorDescrição
AuthorizationBearer <seu_token>O token JWT obtido no login.

Body (Corpo da Requisição)​

CampoTipoObrigatórioDescrição
amountnumberSimO valor do saque em USDT (ex: 0.1 min).
customerIdstringSimO ID único (_id) do cliente que fará o saque.
currencyobjectSimA moeda da transação (ex: BRL).
cryptocurrencyobjectSimA criptomoeda da transação (ex: USDT, ou USDC).
pixKeyobjectSimA chave pix do cliente para realizar o saque.
externalIdstringNãoIdempotência.
identifiedDocumentPixbooleanNãoQuando true, força a verificação de titularidade do documento no Pix.
Sobre a validação de titularidade

O envio do parâmetro identifiedDocumentPix com o valor false (ou a ausência dele) não desativa a checagem de titularidade caso ela esteja configurada como obrigatória no painel administrativo da XGate para a sua conta.

Este parâmetro serve estritamente para forçar a validação (enviando true) em contas onde a regra padrão do painel está desativada. Para desativar a verificação de titularidade de forma definitiva, é necessário alinhar comercialmente via contrato.

Boas Práticas: Prevenção de Duplicidade

Recomendamos fortemente o envio do campo externalId. Ele atua como uma chave de idempotência, garantindo que a mesma ordem de saque não seja criada em duplicidade em caso de falha de rede, cliques duplos ou retentativas acidentais pelo seu sistema.


Respostas (Responses)​

Sucesso (201 Created)​

Retorna o objeto do pedido criado, contendo informações do status e o _id da transação.

{
"message": "Solicitação de Saque realizada com sucesso",
"status": "PENDING",
"_id": "69849e8c50****************"
}

Erros Comuns​

StatusMensagemMotivo Provável
401Unauthorized• Token inválido ou expirado.
• Header inválido ou não informado.
• IP não permitido.
404Not FoundCliente informado no campo customerId não existe.
500Internal Server ErrorErro interno de servidor. Entrar em contato com suporte.

Como usar​

A finalidade deste endpoint é iniciar o fluxo de saída de dinheiro com conversão Crypto para BRL (Cash-out).

O Fluxo de Integração​

  1. Identifique o Cliente: Certifique-se de que o usuário existe na XGate (POST /customer) e tenha o _id dele.
  2. Cadastre uma Chave Pix: Após criar o cliente, é necessário estar cadastrando uma chave pix para o mesmo em Adicionar Chave Pix.
  3. Dados de moeda: Será necessário buscar os dados da moeda e criptomoeda para adicionar na requisição, você pode obter em Moedas FIAT e Criptomoedas.
  4. Crie o Pedido: Chame este endpoint enviando os dados de amount, customerId, currency, cryptocurrency e pixKey.
  5. Aguarde o Pagamento: O status inicial será PENDING.

Exemplo Prático​

Para criar pedidos de saque convertendo Crypto para BRL, você deve seguir esses 5 passos:

Recomendação

É necessário criar um cliente antes de processeguir para criação de saque.

Você pode estar clicando aqui para ir para a página de documentação de criação de cliente.

1. Passo: Passe o valor em USDT no campo amount e o _id do cliente como customerId, igual nos campos destacados:

{
"amount": 2,
"customerId": "672f40**************",
"currency": {
"_id": "6722ba**************",
"name": "BRL",
"type": "PIX",
"createdDate": "202*********************",
"updatedDate": "202*********************",
"__v": 0,
"symbol": "R$"
},
"cryptocurrency": {
"_id": "67ce09d**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "usdt",
"updatedDate": "202*********************",
"createdDate": "202*********************",
"__v": 0
},
"pixKey": {
"key": "123**************",
"type": "CPF",
"_id": "152535**************"
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

2. Passo: Você deve obter a moeda fiduciária com os dados para saque.

Você pode obter a lista delas clicando aqui.

{
"amount": 2,
"customerId": "672f40**************",
"currency": {
"_id": "6722ba**************",
"name": "BRL",
"type": "PIX",
"createdDate": "202*********************",
"updatedDate": "202*********************",
"__v": 0,
"symbol": "R$"
},
"cryptocurrency": {
"_id": "67ce09d**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "usdt",
"updatedDate": "202*********************",
"createdDate": "202*********************",
"__v": 0
},
"pixKey": {
"key": "123**************",
"type": "CPF",
"_id": "152535**************"
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

Detalhes do Objeto​

Veja os detalhes de cada informação no objeto currency para montar sua requisição.

CampoTipoObrigatórioDescrição
_idstringSimIdentificador único da moeda.
namestringSimNome da moeda.
typestringSimTipo do método de pagamento ou transação associado à moeda.
createdDatestringNãoData em que a moeda foi criada no sistema.
updatedDatestringNãoData da última atualização das informações da moeda.
__vnumberNãoVersão do registro da moeda no banco de dados.
symbolstringSimSímbolo da moeda.

3. Passo: Você deve obter a criptomoeda para realizar a conversão de saque.

Você pode obter a lista delas clicando aqui.

{
"amount": 2,
"customerId": "672f40**************",
"currency": {
"_id": "6722ba**************",
"name": "BRL",
"type": "PIX",
"createdDate": "202*********************",
"updatedDate": "202*********************",
"__v": 0,
"symbol": "R$"
},
"cryptocurrency": {
"_id": "67ce09d**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "usdt",
"updatedDate": "202*********************",
"createdDate": "202*********************",
"__v": 0
},
"pixKey": {
"key": "123**************",
"type": "CPF",
"_id": "152535**************"
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

Detalhes do Objeto​

Veja os detalhes de cada informação no objeto cryptocurrency para montar sua requisição.

CampoTipoObrigatórioDescrição
_idstringSimIdentificador único da criptomoeda.
namestringSimNome da criptomoeda.
symbolstringSimSímbolo da criptomoeda.
coinGeckostringNãoIdentificador da criptomoeda no CoinGecko.
updatedDatestringNãoData da última atualização das informações da criptomoeda.
createdDatestringNãoData em que a criptomoeda foi criada no sistema.
__vnumberNãoVersão do registro da criptomoeda no banco de dados.

4. Passo: Você deve obter os dados da chave pix e informar no payload para o saque ser realizado.

Você pode obter a lista das chaves pix cadastradas clicando aqui ou então adicionar uma nova chave pix.

{
"amount": 2,
"customerId": "672f40**************",
"currency": {
"_id": "6722ba**************",
"name": "BRL",
"type": "PIX",
"createdDate": "202*********************",
"updatedDate": "202*********************",
"__v": 0,
"symbol": "R$"
},
"cryptocurrency": {
"_id": "67ce09d**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "usdt",
"updatedDate": "202*********************",
"createdDate": "202*********************",
"__v": 0
},
"pixKey": {
"key": "123**************",
"type": "CPF",
"_id": "152535**************"
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

5. Passo (Opcional): Adicione o externalId ao final do código, ele irá evitar que o cliente envie mais de 1 (uma) vez a solicitação de saque, evitando duplicidade.

{
"amount": 2,
"customerId": "672f40**************",
"currency": {
"_id": "6722ba**************",
"name": "BRL",
"type": "PIX",
"createdDate": "202*********************",
"updatedDate": "202*********************",
"__v": 0,
"symbol": "R$"
},
"cryptocurrency": {
"_id": "67ce09d**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "usdt",
"updatedDate": "202*********************",
"createdDate": "202*********************",
"__v": 0
},
"pixKey": {
"key": "123**************",
"type": "CPF",
"_id": "152535**************"
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

Integração​

O exemplo de integração utiliza a biblioteca Axios em Node.js.

Instalando Axios:

npm install axios

Exemplo Javascript:

const axios = require("axios");

(async () => {
const email = "your_email@domain.com";
const password = "**********";
const customerId = "************";
const amount = 10.90;

try {
const url_api = "https://api.xgateglobal.com"
const login = await axios.post(`${url_api}/auth/token`, { email, password });
const cryptocurrencies = await axios.get(`${url_api}/withdraw/company/cryptocurrencies`, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
const currencies = await axios.get(`${url_api}/withdraw/company/currencies`, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
const pixKey = await axios.get(`${url_api}/pix/customer/${customerId}/key`, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
const { data } = await axios.post(`${url_api}/withdraw/conversion/brl/pix`, {
amount,
customerId,
currency: currencies.data[0],
cryptocurrency: cryptocurrencies.data[0],
pixKey: pixKey.data[0]
}, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
console.log(data); // Response
} catch (error) {
console.log(error.response.data.message) // Error
}
})()