Execução da ordem de compra e venda
beta
Este endpoint permite que o cliente do parceiro Bankly possa concluir o processo de compra ou venda de criptomoedas com a mesma cotação retornada na última consulta do endpoint de Cotação de criptomoedas.
Para que seja possível executar a ordem de compra ou venda, é necessário informar o identificador da transação (authenticationCode), retornado no endpoint de criação da ordem.
Conta cripto
Os valores referentes às criptomoedas adquiridas são reservados em uma conta cripto.
A conta cripto consiste em uma conta pocket, ou conta bolsão, que tem como característica guardar um determinado valor em um local separado da conta de pagamento.
Portanto, antes de uma ordem de compra ser executada, o sistema irá verificar se já existe uma conta cripto vinculada àquele CPF ou CNPJ. Caso ela não exista, será gerada automaticamente.
A execução da ordem de compra é finalizada somente após a geração da conta cripto.
NotaÉ possível consultar o saldo da conta cripto por meio do endpoint Consulta de saldo da conta pocket.
Pré-requisito
Para que seja possível utilizar este endpoint, é necessário que o cliente do parceiro:
- Possua uma conta ativa;
- Tenha criado uma ordem de compra ou venda em até um minuto.
Requisição (Request)
Requisição HTTP
POST https://api-mtls.sandbox.bankly.com.br/v2/crypto/orders/{authenticationCode}--request POST \
--url 'https://api-mtls.sandbox.bankly.com.br/v2/crypto/orders/{authenticationCode}' \
--header 'accept: application/json' \
--header 'bankly-idempotency-key: FLORESTA_ED' \
--header 'bankly-version: 2023-01-30' \
--header 'bankly-user-id: 47742663023' \
--header 'authorization: Bearer' \
--header 'content-type: application/json' \
--header 'bankly-correlation-id: 5a88c4ae-99cd-494e-96b7-39b8109c8a77' \
--data '{
"data": {
"account": {
"branch": "0001",
"number": "15163"
}
},
"metadata": {
"exemplo1": "123",
"exemplo2": 123,
"exemplo3": {},
"exemplo4": [],
}
}'Autorização
Para garantir a segurança nas requisições, todos os endpoints do Bankly utilizam scopes como parte do seu fluxo de autorização.
Esta requisição requer o scope descrito a seguir:
| Scope | Descrição |
|---|---|
crypto.order.create | Concede acesso para criar a ordem de compra ou venda. |
Cabeçalhos (Headers)
| Nome | Descrição |
|---|---|
bankly-version | Obrigatório. Data em que ocorreu a alteração no contrato. Neste caso, insira 2023-01-30. |
authorization | Obrigatório. Token de autorização do tipo Bearer. |
bankly-correlation-id | Obrigatório. Informe um GUID, sendo um novo cada requisição. |
bankly-idempotency-key | Obrigatório. Chave de idempotência para a requisição (UUID v4). |
bankly-user-id | Obrigatório. Número do documento do usuário que irá fazer a requisição. |
Parâmetros da rota (Path)
No path desta requisição envie o seguinte campo:
| Nome | Tipo | Descrição |
|---|---|---|
authenticationCode | path | Obrigatório. Identificador da transação retornado no endpoint de Criação de intenção de compra e venda de criptomoedas. |
Corpo da requisição (Body)
No body, envie os seguintes campos em formato JSON:
| Nome | Tipo | Descrição |
|---|---|---|
account | object | Obrigatório. Objeto que contém informações sobre a conta do usuário. |
account.branch | string | Obrigatório. Número da agência. |
account.number | string | Obrigatório. Número da conta. |
metadata | dictionary<string, object> | Dicionário de metadados que pode conter informações adicionais da requisição, de acordo com o modelo de negócio do cliente. |
{
"data": {
"account": {
"branch": "0001",
"number": "226513"
}
},
"metadata": {
"exemplo1": "123",
"exemplo2": 123,
"exemplo3": {},
"exemplo4": [],
}
}Resposta (Response)
O status code 201 indicará que a ordem de compra ou venda foi executada com sucesso.
Sendo bem-sucedido, o retorno irá trazer um objeto contendo os seguintes campos em formato JSON:
| Nome | Tipo | Descrição |
|---|---|---|
authenticationCode | string | Identificador da transação informado no path desta requisição. |
type | string | Tipo de ordem (compra ou venda), o qual pode ser “PURCHASE” ou “SELL”. |
market | string | O mercado, o qual é constituído da sigla da criptomoeda com a sigla do real. Exemplo: BTC:BRL. |
status | string | Situação da ordem de execução de compra ou venda. |
account | object | Objeto que contém informações sobre a conta principal do usuário. |
account.branch | string | Número da agência bancária. |
account.number | string | Número da conta bancária. |
price | object | Objeto que contém informações sobre o preço da criptomoeda. |
price.value | number | Preço final da criptomoeda. |
price.currency | string | Sigla da criptomoeda. |
amount | object | Objeto que contém informações sobre o valor da compra ou venda das criptomoedas, sem taxa. |
data.amount.value | number | Valor da compra ou venda sem taxa. |
data.amount.currency | string | Sigla da moeda com base na ISO-4217. |
data.fee | object | Objeto que contém informações sobre a taxa aplicada no valor da compra ou venda das criptomoedas. |
fee.value | number | Valor da taxa. |
fee.currency | string | Sigla da moeda com base na ISO-4217. |
quota | object | Objeto que contém informações sobre o valor da operação, em criptomoeda. |
quota.value | number | Valor da operação. |
quota.currency | string | Sigla da criptomoeda. |
data.total | object | Objeto que contém informações sobre o valor total da operação, em reais (amount+ fee). |
total.value | string | Valor da operação. |
total.currency | string | Sigla da moeda. |
createdAt | string | Data de criação da execução da ordem de compra ou venda, no formato ISO 8601 - UTC. |
updatedAt | string | Data de atualização da ordem de compra ou venda, no formato ISO 8601 - UTC. |
metadata | object | Dicionário de metadados que pode conter informações adicionais da requisição, de acordo com o modelo de negócio do cliente. |
links[] | array of objects | Lista de objetos que contém os links de próximos estados válidos da entidade/recurso. |
{
"data": {
"authenticationCode": "60c66bce-0127-4e07-a35d-d14d31e4126a",
"type": "PURCHASE",
"market": "BTC:BRL",
"status": "DONE",
"account": {
"branch": "0001",
"number": "15164"
},
"price": {
"value": 107497.22,
"currency": "BRL"
},
"amount": {
"value": 1,
"currency": "BRL"
},
"fee": {
"value": 2.1,
"currency": "BRL"
},
"quota": {
"value": 0.0000093,
"currency": "BTC"
},
"total": {
"value": 3.1,
"currency": "BRL"
},
"createdAt": "2023-01-04T17:41:19.733Z",
"updatedAt": "2023-01-04T17:41:19.733Z"
},
"metadata": {
"exemplo1": "123",
"exemplo2": 123,
"exemplo3": {},
"exemplo4": []
},
"links": [
{
"url": "/crypto/orders/60c66bce-0127-4e07-a35d-d14d31e4126a",
"rel": "get_order",
"method": "GET"
}
]
}Possíveis status da ordem de execução de compra ou venda
| Status | Descrição |
|---|---|
| CREATED | Ordem solicitada. |
| IN_PROCESS | Ordem em processamento. |
| DONE | Ordem executada. |
| EXPIRED | Ordem expirada. |
DicaPara simular uma requisição nesse endpoint, acesse o API Reference.
Erros
Este endpoint pode retornar alguns erros específicos, conforme a tabela a seguir:
| Status Code | Código | Descrição |
|---|---|---|
| 422 | MAXIMUM_POCKETS_COUNT_REGISTERED_FOR_ACCOUNT | O limite de pockets foi excedido para esta conta. |
Recordamos que esta API também poderá retornar erros comuns entre todos os endpoints. Portanto, recomendamos a consulta da documentação de erros, onde é possível encontrar as mensagens comuns em inglês que acompanham os erros 400 (se houver).
Eventos
Caso o parceiro deseje receber mensagens referentes aos eventos relacionados a esse endpoint, é preciso configurar o webhook. Os eventos são:
| Nome do evento | Descrição |
|---|---|
CRYPTO_ORDER_WAS_EXECUTED | Ordem de compra ou venda executada. |
