CKrypto OTC API
Documentação da API de On/Off-Ramp B2B — versão 1.0
Visão Geral
A CKrypto OTC API permite que empresas parceiras integrem operações de compra e venda de USDT (On-Ramp e Off-Ramp) diretamente nos seus sistemas, sem necessidade de acesso manual ao portal.
Com a API você pode:
- Consultar cotações em tempo real com seu spread contratado
- Criar ordens de compra (On-Ramp: BRL → USDT) ou venda (Off-Ramp: USDT → BRL)
- Consultar o status e histórico das suas ordens
- Receber notificações automáticas via Webhook quando suas ordens forem processadas
Autenticação
Todas as requisições devem incluir sua API Key no header X-API-Key.
Sua API Key é gerada pela CKrypto e fornecida após a ativação da conta. Em caso de comprometimento, solicite a regeneração via suporte.
Fluxo de Operação
On-Ramp — Comprar USDT (BRL → USDT)
GET /quote?type=buy&amount=50000 — obtenha a taxa com seu spread
POST /orders — informe o valor em BRL e carteira USDT destino
Transfira o valor BRL para a chave PIX da CKrypto informada na resposta
POST /orders/:id/paid — informe que o PIX foi enviado (com comprovante opcional)
A CKrypto verifica e envia os USDT para sua carteira. Você recebe um webhook order.settled
Off-Ramp — Vender USDT (USDT → BRL)
GET /quote?type=sell&amount=50000
POST /orders com type=sell — informe valor BRL e chave PIX para receber
Transfira os USDT-TRC20 para a carteira da CKrypto informada na resposta
POST /orders/:id/paid com o txid da transação blockchain
A CKrypto confirma e envia o BRL via PIX. Você recebe um webhook order.settled
Ambientes
| Ambiente | URL Base | Uso |
|---|---|---|
| Produção | https://api.ckrypto.com.br/api/otc/v1 | Operações reais |
Endpoints
Retorna a cotação BRL/USDT com o spread contratado do seu parceiro.
Query Parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
| type* | string | buy (BRL→USDT) ou sell (USDT→BRL) |
| amountopcional | number | Valor em BRL para calcular o USDT estimado |
Cria uma nova ordem de On-Ramp ou Off-Ramp.
Body (JSON)
| Campo | Tipo | Descrição |
|---|---|---|
| type* | string | buy ou sell |
| fiat_amount* | number | Valor da operação em BRL |
| usdt_wallet* buy | string | Carteira TRC20 para receber USDT (obrigatório em compras) |
| pix_key* sell | string | Chave PIX para receber BRL (obrigatório em vendas) |
| external_refopcional | string | ID do pedido no seu sistema (para reconciliação) |
| notesopcional | string | Observações internas |
Lista todas as ordens do parceiro, com paginação e filtros.
Query Parameters
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| status | string | all | draft confirmed paid settled cancelled |
| page | integer | 1 | Número da página |
| per_page | integer | 20 | Registros por página (máx. 50) |
Retorna todos os detalhes de uma ordem específica, incluindo comprovantes e instruções de liquidação.
Informa à CKrypto que você realizou o pagamento (PIX enviado para on-ramp, ou USDT enviado para off-ramp). A CKrypto verificará e processará a liquidação.
Body (JSON)
| Campo | Tipo | Descrição |
|---|---|---|
| payment_proofopcional | string | End-to-end ID do PIX ou txid blockchain |
| notesopcional | string | Observação adicional |
Webhooks
Configure uma URL de webhook na CKrypto para receber notificações automáticas quando o status de suas ordens mudar. Ideal para automatizar a liberação de produtos/serviços no seu sistema.
Configuração
Informe sua URL de webhook ao time da CKrypto. A URL deve:
- Ser HTTPS
- Retornar HTTP 200 em até 10 segundos
- Estar acessível pela internet (sem autenticação de IP)
Eventos disponíveis
| Evento | Quando ocorre |
|---|---|
order.confirmed | CKrypto confirmou a cotação da ordem |
order.paid | Pagamento registrado no sistema |
order.settled | Liquidação concluída — USDT ou BRL enviado |
order.cancelled | Ordem cancelada |
order.disputed | Ordem em disputa — aguarde contato |
Verificação de Assinatura
Cada requisição de webhook inclui o header X-CKrypto-Signature com uma assinatura HMAC-SHA256 do corpo da requisição, usando seu Webhook Secret.
Status das Ordens
| Status | Descrição | Próximo passo |
|---|---|---|
draft | Ordem criada — aguardando pagamento | Envie o pagamento e chame /paid |
confirmed | CKrypto confirmou a cotação | Envie o pagamento e chame /paid |
paid | Pagamento registrado — em processamento | Aguarde o webhook order.settled |
settled | Liquidação concluída | — |
cancelled | Ordem cancelada | Abra uma nova ordem se necessário |
disputed | Em disputa — pendência identificada | Aguarde contato da CKrypto |
Códigos de Erro
| HTTP | code | Descrição |
|---|---|---|
| 401 | UNAUTHORIZED | API Key ausente, inválida ou conta inativa |
| 400 | INVALID_PARAM | Parâmetro inválido ou com formato incorreto |
| 400 | MISSING_FIELD | Campo obrigatório não informado |
| 404 | NOT_FOUND | Ordem não encontrada ou não pertence ao parceiro |
| 422 | BELOW_MINIMUM | Valor abaixo do mínimo contratado |
| 422 | ABOVE_MAXIMUM | Valor acima do limite por ordem |
| 422 | INVALID_STATUS_TRANSITION | Status não pode ser alterado para o solicitado |
| 503 | RATE_UNAVAILABLE | Cotação temporariamente indisponível |
| 500 | INTERNAL_ERROR | Erro interno — tente novamente ou contate o suporte |
Suporte
Para dúvidas sobre integração, solicitação de sandbox, ou problemas em produção:
| Canal | Contato | Horário |
|---|---|---|
| E-mail técnico | dev@ckrypto.com.br | Seg–Sex 9h–18h |
| E-mail geral | contato@ckrypto.com.br | Seg–Sex 9h–18h |
| Site | ckrypto.com.br | — |
