Pular para o conteúdo principal

Depósito com Conversão Crypto

Este endpoint gera uma ordem de depósito com conversão automática. O cliente realiza o pagamento em moeda fiduciária (Pix/BRL) e o valor é creditado em criptomoeda (ex: USDT) na carteira dele.

Todo pedido é obrigatoriamente associado a um usuário. Isso garante que o saldo convertido seja entregue corretamente, além de facilitar a conciliação e manter um histórico organizado de todas as operações de câmbio.


Endpoint​

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

Testar Integração​

Utilize o formulário abaixo para simular a criação de um pedido e gerar o QR Code.

💲 Testar: Criar Depósito (Pix para Crypto)

1. Suas Credenciais

2. Dados do Depósito
Não possui cliente? Clique aqui para criar

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 depósito (ex: 100.50).
customerIdstringNãoO ID único (_id) do cliente que fará o depósito.
customerobjectNãoDados para a criação do cliente junto da criação do pedido de depósito.
currencyobjectSimA moeda da transação (ex: BRL).
cryptocurrencyobjectSimCriptomoeda de destino para a conversão (ex: USDT ou USDC).
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.

Importante: Identificação do Cliente

Para criar um depósito, é obrigatório identificar o utilizador. Você deve enviar o customerId (caso o cliente já exista) OU o objeto customer (para criar um novo cliente no momento do pedido).

Nunca envie ambos os campos na mesma requisição, pois isso resultará em falha na transação.

Boas Práticas: Prevenção de Duplicidade

Recomendamos fortemente o envio do campo externalId. Ele atua como uma chave de idempotência, garantindo que o mesmo pedido de depósito não seja criado 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 o code (Pix Copia e Cola) para o usuário pagar.

{
"message": "Pix Gerado com Sucesso",
"data": {
"status": "WAITING_PAYMENT",
"code": "00020126850014br.gov.bcb.pix2563pi************************************************************************************",
"id": "696e28a43e09**************",
"customerId": "68e7b8f0db**************"
}
}

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.
409Conflict• Nome do cliente informado já está cadastrado.
• Documento informado já está cadastrado.
500Internal Server ErrorErro interno de servidor. Entrar em contato com suporte.

Como usar​

A finalidade deste endpoint é iniciar o fluxo de entrada de dinheiro (Cash-in).

O retorno mais importante aqui é o campo code. Ele contém a string do "Pix Copia e Cola". Você deve exibir esse código para o seu usuário final ou gerar um QR Code visual a partir dele.

O Fluxo de Integração​

  1. Crie/Identifique o Cliente: Certifique-se de que o usuário existe na XGate (POST /customer) e tenha o _id dele.
  2. Crie o Pedido: Chame este endpoint passando o valor e o ID do cliente.
  3. Exiba o Pix: Pegue o code da resposta e mostre ao usuário.
  4. Aguarde o Pagamento: O status inicial será PENDING. Assim que o usuário pagar, o status mudará (via Webhook ou consulta).

Exemplo Prático​

Para criar pedidos de depósito Pix, você deve seguir esses 3 passos:

1. Passo: Aqui você tem as opções de criar o pedido de depósito sem um cliente ainda criado pela rota (POST /customer) ou com um já criado.

Recomendação

A equipe XGate recomenda que o cliente seja criado pela rota de criação de clientes (POST /customer).

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

1. Passe o _id do cliente como customerId, igual no campo destacado:

{
"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
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

2. Passo: Você deve obter a moeda fiduciária para qual está realizando o depósito.

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
},
"externalId": "67ce09d**************",
"identifiedDocumentPix": true
}

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

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

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.

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 currencies = await axios.get(`${url_api}/deposit/company/currencies`, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
const cryptocurrencies = await axios.get(`${url_api}/deposit/company/cryptocurrencies`, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
const { data } = await axios.post(`${url_api}/deposit`, {
amount,
customerId,
currency: currencies.data[0],
cryptocurrency: cryptocurrencies.data[0],
identifiedDocumentPix: true
}, {
headers: {
"Authorization": `Bearer ${login.data.token}`
}
});
console.log(data); // Response
} catch (error) {
console.log(error.response.data.message) // Error
}
})()