On-ramp e off-ramp · Brasil

On-ramp e off-ramp no Brasil, em uma API

Conecte o recebimento em Pix à entrega de USDT ou USDC, ou receba cripto e pague Pix. Com a LuniumPay, sua aplicação também pode receber Pix em saldo BRL e escolher o saque depois. Comece pelo fluxo que corresponde ao seu produto.

Criar chave sandbox Falar com integração Documentação completa

Para quem é

O que são on-ramp e off-ramp?

On-ramp é a entrada de moeda tradicional em cripto. Neste fluxo, o cliente paga Pix e a aplicação acompanha a entrega do ativo na rede escolhida. Off-ramp é a saída de cripto para moeda tradicional: após cotação, aceite e depósito confirmado, a operação segue para o pagamento Pix.

Receber Pix em custódia é uma escolha diferente: o saldo fica em reais até uma solicitação de saque. Receber o Pix não significa que o saldo já foi convertido em stablecoin.

ObjetivoFluxoPróximo passo
Cliente paga Pix e recebe USDT ou USDCCash-in com entrega direta; ativo, rede e endereço definidos na cobrança.Testar Pix para cripto
Cliente deposita cripto e recebe PixCash-out; cotação, aceite, instrução de depósito e conciliação.Testar cripto para Pix
Plataforma recebe Pix e decide o saque depoisCustódia em BRL; saldo disponível e saques em Pix ou cripto.Testar custódia
Marketplace paga usuários com seu saldoPayout Pix; débito de saldo e acompanhamento do pagamento.Ver guia de payouts

O fluxo, ponta a ponta

  1. Entrada: POST /cashin/charge cria um QR PIX identificado pelo CPF/CNPJ de quem vai pagar. Após o pagamento, acompanhe eventuais retenções e a entrega de cripto até o estado final.
  2. Saída: POST /cash-outs cota, /accept trava e devolve o endereço; você deposita e uma chave PIX recebe reais.
  3. Custódia (opcional): com destino: "saldo" o PIX vira saldo em reais por subconta, e você paga com POST /payouts quando quiser.
  4. Os dois sentidos usam a mesma chave, o mesmo formato de erro (erro + acao) e o mesmo external_id.
  5. Valide a assinatura dos webhooks e use a consulta de status para reconciliar eventos ausentes ou atrasados.

Endpoints usados

EndpointPara quê
POST /cashin/chargeEntrada: cria o QR PIX e entrega stablecoin.
POST /cash-outs + /acceptSaída: cota, trava e recebe o endereço de depósito.
POST /payoutsPIX direto em reais a partir do saldo custodial, sem perna cripto.
GET /keys/meSeus limites vigentes e o que está liberado. Leia daqui, não do código.
GET /v1/verificar/{e2e}Verificação pública de um PIX liquidado. Sem chave.

Exemplo de requisições — substitua os dados

# entrada: PIX vira stablecoin na sua carteira
curl -X POST https://api.luniumpay.com/cashin/charge -H "X-API-Key: $LUNIUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount_cents":100000,"asset":"usdc","chain":"polygon",
       "payout_address":"0xTesouraria","payer_tax_number":"12345678909",
       "external_id":"in-9001"}'

# saída: stablecoin vira PIX na conta de alguém
curl -X POST https://api.luniumpay.com/cash-outs -H "X-API-Key: $LUNIUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asset":"USDC","network":"polygon","brl_amount":"1000.00",
       "pix_key":"11122233344","pix_key_type":"cpf","external_id":"out-9001"}'
const API = "https://api.luniumpay.com";
const h = { "X-API-Key": process.env.LUNIUM_KEY, "Content-Type": "application/json" };

export const entrada = (cents, carteira, docPagador, id) =>
  fetch(`${API}/cashin/charge`, { method: "POST", headers: h, body: JSON.stringify({
    amount_cents: cents, asset: "usdc", chain: "polygon",
    payout_address: carteira, payer_tax_number: docPagador, external_id: id,
  })}).then((r) => r.json());

export const saida = (brl, chave, tipo, id) =>
  fetch(`${API}/cash-outs`, { method: "POST", headers: h, body: JSON.stringify({
    asset: "USDC", network: "polygon", brl_amount: brl,
    pix_key: chave, pix_key_type: tipo, external_id: id,
  })}).then((r) => r.json());
import os, requests

API, H = "https://api.luniumpay.com", {"X-API-Key": os.environ["LUNIUM_KEY"]}

def entrada(cents, carteira, doc_pagador, ident):
    return requests.post(f"{API}/cashin/charge", headers=H, timeout=30, json={
        "amount_cents": cents, "asset": "usdc", "chain": "polygon",
        "payout_address": carteira, "payer_tax_number": doc_pagador,
        "external_id": ident}).json()

def saida(brl, chave, tipo, ident):
    return requests.post(f"{API}/cash-outs", headers=H, timeout=30, json={
        "asset": "USDC", "network": "polygon", "brl_amount": brl,
        "pix_key": chave, "pix_key_type": tipo, "external_id": ident}).json()

Sandbox: teste antes de gastar

Uma chamada, sem aprovação prévia, sem cartão; só o seu e-mail é obrigatório (é para ele que mandamos o manual, o fluxograma e o passo a passo da integração). A chave lun_test_ permite testar os fluxos e cenários documentados sem movimentar dinheiro real.

curl -X POST https://api.luniumpay.com/keys/sandbox \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@empresa.com","name":"meu-teste"}'

O que o sandbox não prova: liquidação real. Nenhuma cripto se move e nenhum PIX é pago — ele serve para acertar o contrato, não para medir o trilho.

Ativos e redes

O catálogo de entrada de cripto é GET /catalog; o de entrega após Pix é GET /cashin/catalog. Consulte o ativo e a rede do fluxo escolhido antes de cotar. Disponibilidade e mínimos podem mudar.

Use deposit_tag no depósito quando o aceite informar um memo. Na entrega, envie payout_tag quando exigido pela rota. O manual da API descreve cada campo.

Limites e retenções

Consulte GET /keys/me para os limites e as taxas da conta, GET /cashin/limits?payer_tax=... para o pagador e as prévias para o mínimo da rota. Não use um teto fixo compartilhado entre cash-in, cash-out e payout.

Uma cobrança paga pode aguardar retenção antes da liquidação. Use os estados, a linha do tempo e os eventos assinados para distinguir recebimento, saldo disponível e entrega final. A validade da operação vem em expires_at.

Medições, não promessas

O prazo depende do fluxo, da rota disponível, das confirmações da rede e de eventuais retenções. Acompanhe a operação até o estado final e consulte o status do serviço. O tempo de uma simulação não mede uma liquidação real.

Idempotência

Mande external_id em toda operação que move dinheiro. Repetir a mesma chamada devolve a mesma operação, nunca uma segunda; os mesmos parâmetros com id diferente criam duas, e o mesmo id com parâmetros diferentes responde 409 external_id_divergente em vez de adivinhar.

Timeout não é recusa. Se a chamada não respondeu, consulte pelo external_id antes de repetir — a operação pode existir.

Webhooks e reconciliação

Cada transição dispara um evento assinado em HMAC SHA-256 com timestamp (header X-Lunium-Signature, formato t=…,v1=…) — o timestamp é o que impede replay de uma entrega capturada. Confira a assinatura antes de confiar no corpo.

Webhook é o sinal principal; polling é opcional. Quando precisar pesquisar, o status traz a timeline carimbada pelo servidor — desenhe a etapa a partir dela, porque o cronômetro do seu polling mede a sua rede, não a operação.

Não respondeu 2xx? A entrega é retentada com backoff. Você reenvia à mão em POST /webhooks/deliveries/{event_id}/retry e testa a sua URL em POST /webhooks/test.

Quando dá errado

Cada erro traz erro (o que houve) e acao (o que fazer): corrigir, repetir, esperar ou parar. É o campo que um agente ou um retry automático consegue seguir sem heurística.

parar é o mais importante: em provedor_sem_resposta num saque, o PIX pode ter saído. Consulte a operação, não repita.

Segurança

A verificação aberta é a que mais importa numa negociação: a sua contraparte confere o PIX sozinha, sem chave e sem depender da nossa palavra.

Tempo até a primeira integração

Sandbox em uma chamada, sem aprovação prévia. A sandbox permite exercitar os fluxos e cenários documentados com valores fictícios. Cotações e algumas respostas de simulação têm campos próprios. Confira o manual e valide a configuração e a liquidação em um piloto de produção antes de atender clientes.

Perguntas sobre Pix, on-ramp e off-ramp

Preciso de empresa no Brasil?

Você pode começar pela sandbox. Para produção, confirme a elegibilidade, os documentos e as condições aplicáveis ao seu modelo de negócio com a equipe de integração.

Como funciona o limite para quem está começando?

Consulte GET /keys/me para limites e taxas da chave, GET /cashin/limits para o pagador e a prévia para o mínimo da rota. Não aplique uma tabela fixa a todos os fluxos; verifique também retenções e saldo disponível.

Posso receber Pix e escolher quando sacar?

Sim. No fluxo destino=saldo, o Pix é creditado em saldo BRL, sujeito às regras de disponibilidade. A aplicação solicita depois um payout Pix ou saque cripto para uma rota disponível. O crédito em BRL não é uma conversão automática para USDT.

O teste da sandbox usa dinheiro real?

Não. O saldo, os pagamentos e as entregas são simulados. O teste serve para validar a integração; a disponibilidade da rota e a liquidação real precisam de validação em produção.

Dá para integrar com uma IA?

Sim. Use o manual, a OpenAPI e o guia de integração com IA. Leve o checklist de aceite para o seu editor e peça evidências de cada teste, incluindo falhas, idempotência e conciliação.

Leve um plano de integração para sua equipe

Use o checklist para definir o fluxo, validar saldo e mínimos, testar falhas e registrar as evidências antes do piloto. Ele pode ser preenchido por um desenvolvedor ou usado como contexto para um agente de IA.

Baixar checklist de integração (Markdown) · Integrar com IA · Todos os guias

Conteúdo técnico da equipe LuniumPay · Revisado em . Conheça a empresa.

Criar chave sandbox Falar com integração

Contrato OpenAPI vigente · fatos desta página em product-truth.json · status

Entrada e saída no Brasil. Comece com uma chave de teste.

A chave de teste sai em uma chamada, sem aprovação prévia e sem custo — e o seu caso vai direto para quem integra.

Receber sandbox e falar com integração Cash-in e payout com as taxas da sua chave · consulte a cotação · sem mensalidade

Outros caminhos

API PIX para USDTReceba em reais e entregue USDT na carteira do cliente.API USDT para PIXVenda stablecoin e pague qualquer chave PIX.API de payout PIXPague fornecedores e usuários em reais, por API.BRL ↔ USDT por APIConversão nos dois sentidos, com cotação e comprovante.PIX no checkout, stablecoin no caixaReceba do cliente em PIX e guarde em dólar digital.PIX e stablecoin para walletsDê aos seus usuários um trilho de entrada e saída.Infraestrutura com a sua marcaO trilho inteiro operando por trás do seu produto.

Fala com quem construiu

A chave de teste sai em uma chamada, sem aprovação prévia — se é isso que você quer, comece pela documentação. Este formulário é para o resto: taxa por volume, um caso que a doc não cobre, ou uma dúvida antes de integrar.

Prefere e-mail direto? contato@luniumpay.com