WantsPay WantsPay API DOCS
WantsPay API v1 · Produção & Sandbox

Uma chave. Todos os trilhos.

A WantsPay é o hub: uma única API e uma única chave reúnem PIX ↔ cripto, cash-out cripto → PIX, payouts, SWIFT em 20+ moedas, compra de cripto com KYC/KYB, custódia em reais, boletos, KYC, KYB e consulta de dados. Você integra uma vez; a gente cuida do resto — com webhooks assinados, idempotência e sandbox determinístico.

BASE https://api.wantspay.pro AUTH X-API-Key FORMAT JSON · OpenAPI 3.1

🧩 Como funciona: a WantsPay expõe uma superfície única de API que cobre liquidação PIX, on/off-ramp cripto, SWIFT, KYC/KYB e dados. O contrato é sempre o da WantsPay — estável, versionado e sem mudanças do seu lado. Cada chave só acessa os serviços aprovados para ela: por padrão nascem cash-out (cripto → PIX) e payout PIX; os demais são liberados sob aprovação. Fonte de verdade é a API — leia /keys/me, /catalog e /*/limits antes de operar.

i
Disponibilidade: esta é a referência técnica da API. O portal, as chaves e os endpoints de produção dependem da habilitação da conta e podem estar temporariamente indisponíveis. Consulte a equipe antes de integrar.

1 Visão geral

A WantsPay é uma camada única de infraestrutura financeira: uma integração dá acesso a um catálogo completo de serviços financeiros e de compliance. Todos os valores em reais trafegam em centavos (amount_cents); quantidades de cripto e moedas estrangeiras são strings decimais.

📤 Cash-out

Receba USDT/USDC e liquide em PIX. Serviço-base de toda chave.

⚡ Payouts PIX

Envie PIX direto a partir do saldo, sem passar por cripto.

📥 Cash-in

O cliente paga PIX e você entrega cripto ou guarda como saldo.

🌎 SWIFT

Cripto → transferência internacional em 20+ moedas (USD, EUR, GBP…).

🪙 Compra de cripto

On-ramp com KYC/KYB obrigatório e trava de 24h na saída.

🏦 Custódia BRL

Saldo em reais por subconta, com extrato e conciliação.

🧾 Boletos

Emita e concilie boletos bancários pela mesma API.

🪪 KYC / KYB

Verificação de pessoas e empresas com decisão e trilha de auditoria.

🔎 Consulta de dados

Enriquecimento e validação de CPF, CNPJ, chave PIX e listas restritivas.

💡
Fonte de verdade é a API. Ativos, redes, moedas, limites, taxas e prazos mudam — leia sempre /catalog, /*/limits e /keys/me em vez de assumir valores fixos. Cotações são devolvidas antes de cada operação, já com a taxa aplicada.

2 Autenticação

Toda requisição autenticada envia a sua chave no header X-API-Key. Requisições com corpo usam Content-Type: application/json. Uma chave só acessa os serviços aprovados para ela (ver Escopos).

bashrequisição autenticada
curl --fail-with-body https://api.wantspay.pro/keys/me \
  -H "X-API-Key: $WANTSPAY_API_KEY"
🔒
A chave é secreta e só vive no servidor. Nunca a exponha no bundle do front-end, em repositório ou em .env commitado. O navegador nunca deve falar direto com a API — passe sempre por um route handler do seu backend.

Verificar a chave, os escopos e o saldo

GET/keys/meescopos, limites e taxas
GET/saldosaldo da conta
jsonGET /keys/me — resposta
{
  "key_id": "key_9f2e…",
  "env": "live",
  "account_type": "business",
  "scopes": ["cashout.pix", "payout.pix"],
  "scopes_pending": ["swift.payout", "onramp.buy"],
  "partner_fee_bps": 0,
  "webhook_url": null,
  "limits": { "cashout_max_brl_cents": 5000000 }
}

3 Ambientes & chaves

Existe um ambiente de sandbox (determinístico, sem dinheiro real) e o de produção. Distinga-os pelo prefixo da chave e mantenha-os totalmente separados.

AmbienteComo obter a chavePrefixo
SandboxPOST /keys/sandbox — sem e-mail obrigatóriowp_test_…
ProduçãoPOST /keys — com e-mail de operaçãowp_live_…

Criar chave de sandbox

bashsandbox
curl --fail-with-body https://api.wantspay.pro/keys/sandbox \
  -H 'Content-Type: application/json' \
  -d '{"name":"Minha integração de teste"}'

Criar chave de produção

bashprodução
curl --fail-with-body https://api.wantspay.pro/keys \
  -H 'Content-Type: application/json' \
  -d '{
    "name":"Integração de produção",
    "email":"operacao@suaempresa.com",
    "account_type":"business"
  }'

A resposta traz api_key, scopes (os já aprovados), limits e uma monitor_url (painel privado de acompanhamento, somente leitura). Guarde a api_key como WANTSPAY_API_KEY no ambiente do servidor.

4 Escopos & aprovação de serviços

Cada chave carrega um conjunto de escopos — os serviços que a WantsPay aprovou para aquele cliente. Uma chamada a um serviço não aprovado responde 403 com erro: "scope_nao_aprovado".

✓
Padrão de fábrica: toda chave nova nasce com cashout.pix (receber cripto e pagar PIX) e payout.pix ativos. Os demais serviços entram em scopes_pending e são liberados após análise — por API ou no portal do parceiro.
EscopoServiçoPadrão
cashout.pixCash-out cripto → PIXativo
payout.pixPayouts PIX a partir do saldoativo
cashin.cryptoCash-in PIX → criptosob aprovação
custody.brlCustódia em reais & subcontassob aprovação
swift.payoutTransferência SWIFT em 20+ moedassob aprovação
onramp.buyCompra de cripto (KYC/KYB + trava 24h)sob aprovação
boleto.issueEmissão e conciliação de boletossob aprovação
kycVerificação de pessoas (KYC)sob aprovação
kybVerificação de empresas (KYB)sob aprovação
data.lookupConsulta e enriquecimento de dadossob aprovação

Solicitar um serviço adicional

POST/keys/me/scopes/requestpede aprovação de um serviço
jsonPOST /keys/me/scopes/request
{
  "scopes": ["swift.payout", "onramp.buy"],
  "note": "Vamos oferecer remessa internacional aos nossos clientes PJ."
}

Enquanto um escopo está em análise ele aparece em scopes_pending. Você pode acompanhar por GET /keys/me ou receber o evento key.scope_approved por webhook. A aprovação final é da WantsPay e pode exigir documentação adicional do cliente.

🛡️
Aprovação é por cliente, não por endpoint. A mesma chave pode ter serviços diferentes conforme o perfil e o risco do cliente. Trate o 403 scope_nao_aprovado como estado normal do fluxo — mostre ao usuário que o serviço precisa ser habilitado, não como erro de código.

5 Comece agora

Do zero à primeira liquidação em quatro passos — usando o serviço-base (cash-out cripto → PIX).

Gere a chave de sandbox

Uma chamada a POST /keys/sandbox devolve uma chave wp_test_…. Exporte como WANTSPAY_API_KEY.

Confira chave, escopos e saldo

GET /keys/me e GET /saldo validam a autenticação e mostram serviços aprovados, limites e taxas vigentes.

Cote um cash-out

POST /cashout/preview devolve quanto o cliente recebe em PIX por um valor em USDT — sem criar ordem.

Crie e acompanhe até liquidar

POST /cashout gera o endereço de depósito. Acompanhe por GET /cashout/{id} ou receba o webhook cashout.completed.

bashprimeira cotação de cash-out
curl --fail-with-body https://api.wantspay.pro/cashout/preview \
  -H "X-API-Key: $WANTSPAY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{ "asset":"USDT", "network":"polygon", "amount":"100.00", "pix_key":"cliente@example.com" }'
✓
Em sandbox, use POST /sandbox/cashout/{id}/deposit para simular o depósito de cripto e ver o ciclo completo sem transferir dinheiro real.

6 Cash-out · cripto → PIX cashout.pix

O serviço-base da WantsPay: alguém envia cripto de uma carteira externa e você paga em PIX. O fluxo tem três passos — cotar, aceitar (recebe o endereço de depósito) e acompanhar.

Cotar — POST /cashout

Informe asset, network, a chave PIX de destino e um entre amount (cripto) ou brl_amount. Recebe cashout_id, deposit_address e a validade.

Aceitar — POST /cashout/{id}/accept

Confirma os termos e devolve o endereço/estado atualizados para o depósito.

Acompanhar — GET /cashout/{id}

Ao concluir, a resposta traz pix_e2e, pix_paid_at e receipt_url.

jsonPOST /cashout
{
  "asset": "USDT",
  "network": "polygon",
  "amount": "100.00",
  "pix_key": "recebedor@example.com",
  "pix_key_type": "email",
  "customer_ref": "cliente-42",
  "external_id": "cashout-001"
}

Ciclo de estados

QUOTE_CREATED→AWAITING_DEPOSIT→DEPOSIT_DETECTED→DEPOSIT_CONFIRMED→SELLING→PAYING_OUT→COMPLETED

Estados terminais: COMPLETED, MANUAL_REVIEW, REFUNDING_CRYPTO, REFUNDED, EXPIRED, FAILED. Estimativa sem criar ordem: POST /cashout/preview.

7 Payouts · PIX via API payout.pix

Envie PIX direto a partir do saldo em custódia — sem intermediar cripto. Requer saldo suficiente (valor + taxas).

POST/payoutsenvia o PIX
GET/payouts/{payout_id}acompanha
jsonPOST /payouts
{
  "amount_cents": 5000,
  "pix_key": "recebedor@example.com",
  "pix_key_type": "email",
  "tax_number": "00000000191",
  "customer_ref": "cliente-42",
  "external_id": "saque-pix-cliente42-001"
}

Estados: processing → sent / failed / refunded. Quando disponível, o comprovante traz e2e, paid_at, receiver_name e verify_url. Dica: valide o titular da chave antes com POST /data/pix-key.

8 Cash-in · PIX → cripto / custódia cashin.crypto

Uma única cobrança (POST /cashin/charge) atende dois destinos, controlados pelo campo destino:

💰 destino: "saldo"

O PIX vira saldo em reais na custódia (opcionalmente numa subconta via customer_ref). A saída fica para depois.

🪙 destino: "cripto"

Entrega imediata de USDT/USDC no endereço informado. Requer asset, chain e payout_address.

POST/cashin/chargecria a cobrança PIX
jsonentrega direta em cripto
{
  "amount_cents": 10000,
  "payer_tax_number": "00000000191",
  "destino": "cripto",
  "asset": "usdt",
  "chain": "polygon",
  "payout_address": "0x1111111111111111111111111111111111111111",
  "external_id": "compra-cripto-001"
}

A resposta traz cashin_id, qr_copypaste, qr_image_url e expires_at. Gerar o QR confirma a criação — não o recebimento.

Acompanhar o status

GET/cashin/{cashin_id}/statusestado da cobrança
CampoValores
statuspending under_review paid expired refunded failed
settlement_statuspending sending sent incerto failed
⚠️
Só considere o crédito concluído quando status = paid E settlement_status = sent. Um paid com liquidação sending/incerto ainda não está entregue — não mostre "entregue" ao cliente nem reenvie a operação.

9 SWIFT · cripto → 20+ moedas swift.payout

Receba cripto e liquide uma transferência internacional na conta bancária do beneficiário, em mais de 20 moedas. O fluxo espelha o cash-out: cotar → aceitar → depositar → acompanhar.

GET/swift/currenciesmoedas, países e campos exigidos

O catálogo de moedas é dinâmico. Exemplos suportados: USD EUR GBP CHF JPY CAD AUD CNY HKD SGD AED MXN ZAR SEK NOK DKK PLN TRY INR NZD ILS …

Cotar — POST /swift/quote

Informe asset/network de entrada e a currency de saída. Recebe câmbio, taxas e validade.

Criar — POST /swift/transfers

Com os dados do beneficiário (SWIFT/BIC, IBAN, país, endereço) recebe deposit_address para a cripto.

Depositar & acompanhar — GET /swift/transfers/{id}

Ao liquidar, a resposta traz mt103_ref, value_date e receipt_url.

jsonPOST /swift/transfers
{
  "asset": "USDT",
  "network": "ethereum",
  "currency": "EUR",
  "amount_fiat": "2500.00",
  "beneficiary": {
    "name": "Acme GmbH",
    "type": "business",
    "country": "DE",
    "address": "Friedrichstrasse 100, Berlin"
  },
  "bank": {
    "swift_bic": "DEUTDEFFXXX",
    "iban": "DE89370400440532013000"
  },
  "purpose_code": "GDDS",
  "external_id": "swift-eur-001"
}

Ciclo de estados

QUOTE_CREATED→AWAITING_DEPOSIT→DEPOSIT_CONFIRMED→FX_LOCKED→COMPLIANCE_CHECK→WIRE_SENT→SETTLED
🌍
Campos bancários variam por corredor: alguns países usam iban, outros account_number + routing (ABA/Sort Code/BSB). Sempre leia GET /swift/currencies para saber os campos obrigatórios e limites de cada moeda antes de montar o payload.

10 Compra de cripto · on-ramp onramp.buy

Compra de criptoativos com KYC/KYB obrigatório, política amplamente descritiva e trava de segurança de 24 horas antes de qualquer saída — proteção contra fraude e conta-laranja.

🔐
KYC/KYB é pré-requisito. A ordem só sai de KYC_REQUIRED quando existir uma verificação aprovada (ver KYC / KYB) vinculada ao customer_ref. Sem isso, POST /onramp/orders responde 423 kyc_pendente com o kyc_session_url para concluir.

Cotar — POST /onramp/quote

Quanto de cripto o cliente recebe por um valor em BRL (via PIX ou saldo), com taxa e validade.

Criar a ordem — POST /onramp/orders

Requer customer_ref com KYC/KYB aprovado. Se for pago por PIX, devolve o QR.

Trava de 24h — GET /onramp/orders/{id}

Após o pagamento a cripto é comprada e fica LOCKED_24H. A saída (saque on-chain) só libera em unlock_at.

jsonPOST /onramp/orders
{
  "amount_cents": 200000,
  "pay_with": "pix",
  "asset": "USDT",
  "network": "polygon",
  "customer_ref": "cliente-42",
  "payout_address": "0x1111111111111111111111111111111111111111",
  "external_id": "onramp-001"
}
jsonGET /onramp/orders/{id} — trava ativa
{
  "order_id": "onr_9f2e…",
  "status": "LOCKED_24H",
  "asset": "USDT",
  "crypto_amount": "366.20",
  "locked_at": "2026-09-30T14:00:00Z",
  "unlock_at": "2026-10-01T14:00:00Z",
  "kyc_status": "approved"
}

Ciclo de estados

KYC_REQUIRED→AWAITING_PAYMENT→PAID→BUYING→LOCKED_24H→RELEASABLE→RELEASED

A trava de 24h é contada a partir de locked_at. Enquanto status=LOCKED_24H, exiba ao cliente a data/hora de unlock_at — não é erro. A liberação pode ser automática (em unlock_at) ou manual via POST /onramp/orders/{id}/release quando RELEASABLE.

11 Custódia BRL & saldo custody.brl

O saldo em reais fica organizado por subconta (customer_ref) sobre a "casa". Consulte, extraia, transfira entre subcontas e saque como cripto ou PIX.

GET/saldocasa ou ?customer_ref=
GET/saldo/consolidadocasa + subcontas
GET/saldo/extratolançamentos
POST/saldo/transferirentre subcontas
POST/saldo/sacar-criptosaque em USDT/USDC
GET/saldo/clientessaldos por cliente
🧮
O saldo distingue total_cents, disponivel_cents (sacável, após retenções) e bloqueado_cents. Respeite carencia_ate — mostre ao cliente a data prevista de liberação em vez de tratar como erro.

12 Boletos boleto.issue

Emita boletos bancários registrados e concilie o pagamento pela mesma API. O crédito cai na custódia em reais (ou dispara o webhook para o seu fluxo).

POST/boletosemite o boleto
GET/boletos/{id}status & linha digitável
POST/boletos/{id}/cancelcancela antes do vencimento
GET/boletoslista / concilia
jsonPOST /boletos
{
  "amount_cents": 15000,
  "due_date": "2026-10-15",
  "payer": {
    "name": "João da Silva",
    "tax_number": "00000000191"
  },
  "instructions": "Não receber após o vencimento.",
  "customer_ref": "cliente-42",
  "external_id": "boleto-001"
}

A resposta traz boleto_id, linha_digitavel, barcode, pdf_url e expires_at. Estados: registered → paid / expired / canceled. Pagamento confirmado dispara boleto.paid.

13 KYC · verificação de pessoas kyc

Verificação de identidade de pessoas físicas: documento, selfie com prova de vida, validação de CPF e checagem em listas restritivas. Retorna uma decisão auditável que você pode vincular a um customer_ref (pré-requisito da compra de cripto).

POST/kyc/sessionscria sessão (URL hospedada)
GET/kyc/sessions/{id}decisão & motivos
jsonPOST /kyc/sessions
{
  "customer_ref": "cliente-42",
  "person": {
    "name": "João da Silva",
    "tax_number": "00000000191",
    "birth_date": "1990-01-01"
  },
  "level": "full",
  "redirect_url": "https://suaempresa.com/kyc/callback",
  "external_id": "kyc-cliente42-001"
}
CampoValores
statuscreated pending processing approved rejected review expired
checksdocument · liveness · face_match · cpf_status · watchlist · pep

A resposta traz session_url (fluxo hospedado, pronto para abrir num iframe/redirect), decision, reasons[] e expires_at. Conclusões disparam kyc.approved / kyc.rejected / kyc.review por webhook.

14 KYB · verificação de empresas kyb

Verificação de pessoas jurídicas (CNPJ): situação cadastral, quadro societário (QSA), beneficiários finais (UBO), checagem de sócios em listas restritivas e documentos societários.

POST/kyb/checksinicia a verificação (CNPJ)
GET/kyb/checks/{id}dados, UBO & decisão
jsonPOST /kyb/checks
{
  "customer_ref": "empresa-7",
  "company": {
    "tax_number": "60281018000130",
    "legal_name": "Acme Serviços Ltda"
  },
  "require_ubo": true,
  "require_documents": true,
  "external_id": "kyb-empresa7-001"
}
CampoConteúdo
statusprocessing approved rejected review
companysituação cadastral · natureza jurídica · CNAE · endereço · data de abertura
partners[]QSA com nome, documento e participação
ubo[]beneficiários finais & screening em watchlist/PEP

Conclusões disparam kyb.approved / kyb.rejected / kyb.review. A decisão aprovada habilita onramp.buy e swift.payout para o customer_ref vinculado.

15 Consulta de dados data.lookup

Enriquecimento e validação em tempo real, roteados para os bureaus da malha WantsPay. Use antes de pagar, cobrar ou aprovar — reduz erro de titularidade e fraude.

MétodoEndpointRetorna
POST/data/cpfNome, situação cadastral, faixa etária, óbito
POST/data/cnpjRazão social, situação, QSA, CNAE, endereço
POST/data/pix-keyTitular da chave PIX (nome mascarado, banco, tipo)
POST/data/bank-accountValidação de conta bancária & titularidade
POST/data/watchlistScreening em listas restritivas / PEP / sanções
jsonPOST /data/pix-key
{ "pix_key": "recebedor@example.com" }

// resposta
{
  "pix_key": "recebedor@example.com",
  "owner_name": "J*** da S***",
  "owner_tax_masked": "***.000.001-**",
  "bank": "Nubank",
  "key_type": "email"
}
⚖️
Uso responsável de dados. A consulta exige base legal (LGPD) e finalidade legítima — prevenção à fraude, KYC, conciliação. Não armazene mais do que o necessário e trate documentos completos como dado sensível. As respostas vêm mascaradas por padrão.

17 Comissão (partner fee)

Você pode embutir uma comissão própria sobre cada operação, definida em basis points (partner_fee_bps; 200 = 2%). Ela é calculada sobre a base após a taxa da WantsPay e creditada num saldo de comissão separado.

jsonPATCH /keys/me
{ "partner_fee_bps": 200 }   // 2%
GET/comissao
GET/comissao/extrato
POST/comissao/sacar

A comissão é apurada após a liquidação da operação. Consulte disponivel_cents, min_saque_cents e pode_sacar_agora antes de sacar. Fórmula: floor(base_cents × (10000 − wantspay_bps − partner_bps) / 10000).

18 Webhooks

Configure a URL de recepção em PATCH /keys/me. A resposta devolve o webhook_secret uma única vez — guarde com segurança. Um só endpoint recebe os eventos de todos os serviços da chave.

jsonPATCH /keys/me
{ "webhook_url": "https://suaempresa.com/api/wantspay/webhook" }

Assinatura (HMAC-SHA256)

Cada entrega traz o header X-WantsPay-Signature: t=1700000000,v1=<hmac_hex>. Valide o HMAC-SHA256 de timestamp.raw_body — capture o corpo bruto antes de fazer o parse do JSON.

javascriptverificação da assinatura
const crypto = require('crypto');

function verify(header, rawBody, secret) {
  const t  = header.split(',')[0].split('=')[1];
  const v1 = header.split(',')[1].split('=')[1];
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(v1), Buffer.from(expected)      // comparação em tempo constante
  );
}

Outros headers: X-WantsPay-Event-Id (dedupe por ele), X-WantsPay-Delivery-Id e X-WantsPay-Attempt (até 12 tentativas em ~7h).

Formato do evento

jsonexemplo
{
  "event": "cashout.completed",
  "event_id": "evt_exemplo",
  "created_at": "2026-09-30T20:00:00.000Z",
  "data": {
    "cashout_id": "co_exemplo",
    "status": "COMPLETED",
    "pix_e2e": "E00000000202609302000…"
  }
}
GrupoEventos
cashoutawaiting_deposit · deposit_detected · processing · under_review · refunding · completed · refunded · expired · failed
payoutsent · failed · refunded
cashinpaid · settled · settlement_failed · expired · refunded · failed
swiftawaiting_deposit · fx_locked · compliance_check · wire_sent · settled · refunded · failed
onramppaid · buying · locked · releasable · released · refunded · failed
boletoregistered · paid · expired · canceled
kyc / kybapproved · rejected · review
saldoliberado · congelado · transferido
keyscope_approved · scope_rejected
webhooktest
📌
Boas práticas de recepção: valide assinatura + timestamp antes do parse; persista por event_id com restrição de unicidade (dedupe); responda 2xx em até 10s e faça o trabalho pesado de forma assíncrona; releia o estado canônico com um GET no recurso antes de atualizar a UI. Recupere entregas falhas em GET /webhooks/deliveries e reenvie com POST /webhooks/deliveries/{event_id}/retry. Dispare um teste com POST /webhooks/test.

19 Idempotência & erros

Envie external_id em toda operação financeira (cash-out, payout, cash-in, swift, on-ramp, boleto, transferência). Em retry, reutilize o mesmo external_id com o corpo idêntico.

🔁
Perdeu a resposta depois do POST? Não recrie às cegas. Consulte pelo external_id no endpoint de listagem do serviço (/cashout, /payouts, /swift/transfers, /boletos…). Se existir, acompanhe; se não, repita com o mesmo corpo/ID respeitando backoff.

Códigos de erro

HTTPCampoSignificadoAção
401—Autenticação inválidaVerifique a chave e o ambiente
403scope_nao_aprovadoServiço não habilitado para a chaveSolicite em /keys/me/scopes/request
402saldo_insuficienteSaldo insuficienteCheque disponível, subconta e taxas
409external_id_divergenteID já usado com parâmetros diferentesNão repita com o mesmo ID
423kyc_pendente / trava_24hKYC/KYB pendente ou trava ativaMostre kyc_session_url / unlock_at
429—Rate limitRespeite o header Retry-After
5xx—Erro de servidor / timeoutConsulte a operação antes de repetir

O corpo de erro inclui erro, acao, detail, request_id e agent_guidance. Ao pedir suporte, informe ambiente, id da operação, external_id, horário com fuso e request_id — nunca a chave, o segredo do webhook ou o CPF/CNPJ completo.

20 Referência de endpoints

Resumo das rotas por serviço. Base: https://api.wantspay.pro.

ServiçoMétodoEndpointDescrição
Conta & chavesPOST/keys/sandboxCria chave de teste
POST/keysCria chave de produção
GET/keys/meEscopos, limites e taxas
POST/keys/me/scopes/requestSolicita serviço adicional
Cash-outPOST/cashoutCota cripto → PIX (passo 1)
POST/cashout/{id}/acceptAceita e recebe endereço
GET/cashout/{id}Acompanha
POST/cashout/previewCotação sem criar ordem
PayoutsPOST/payoutsEnvia PIX do saldo
GET/payouts/{id}Acompanha o payout
Cash-inPOST/cashin/chargeCria cobrança PIX
GET/cashin/{id}/statusEstado da cobrança
SWIFTGET/swift/currenciesMoedas & campos exigidos
POST/swift/transfersCria a transferência internacional
GET/swift/transfers/{id}Acompanha
On-rampPOST/onramp/quoteCotação BRL → cripto
POST/onramp/ordersCria ordem (KYC/KYB + trava 24h)
GET/onramp/orders/{id}Acompanha & trava
BoletosPOST/boletosEmite boleto
GET/boletos/{id}Status & linha digitável
POST/boletos/{id}/cancelCancela
Compliance & dadosPOST/kyc/sessionsVerificação de pessoa
POST/kyb/checksVerificação de empresa
POST/data/{cpf|cnpj|pix-key|…}Consulta & enriquecimento
Custódia & plataformaGET/saldoSaldo (casa ou subconta)
POST/saldo/sacar-criptoSaque do saldo em cripto
POST/webhooks/testDispara webhook de teste
GET/pingHealth check

21 Suporte

🟢 Status

wantspay.pro/status — disponibilidade da API.

✉️ WantsPay

suporte@wantspay.pro — integração e dúvidas comerciais.

📘 Especificação

OpenAPI 3.1 em /openapi.json.

🚀
Checklist de produção: chave em variável de ambiente e sandbox separado de produção; escopos confirmados em /keys/me; webhook validando HMAC + timestamp, deduplicando e respondendo em 10s; IDs persistidos e retries preservando corpo + external_id; UI lendo catálogo/limites atuais e distinguindo PIX pago de cripto entregue; KYC/KYB aprovado antes de on-ramp; conciliação tratando carência, trava de 24h, câmbio e erros de saldo sem duplicar operações.