/* AI machine block */ .ai-block{background:var(--ink);color:#E7E3FB;border-radius:14px;padding:18px 20px;margin:20px 0 0;border:1px solid rgba(207,201,255,.16);font-family:var(--mono);font-size:12.5px;line-height:1.65;overflow-x:auto} .ai-block b{color:var(--brand-3);font-weight:500} .ai-block pre{margin:10px 0 0;white-space:pre;color:#9be7c4} .other-svc{font-size:14px;color:var(--ink-soft);margin:6px 0} .other-svc code{font-size:13px}
WantsPay WantsPay API DOCS
WantsPay API v1 · sandbox & live

Uma chave. Escopos por serviço.

Integração única com header X-API-Key. Cada chave nasce com cashout e pix_payout; o resto entra sob aprovação. Comece pelo cash-out cripto → PIX.

BASE https://api.wantspay.pro AUTH X-API-Key DEFAULT cashout · pix_payout
AI / machine-readable — chaves iguais ao banco (partner_api_keys.scopes). Sem pontos.
BASE=https://api.wantspay.pro
AUTH=X-API-Key: $WANTSPAY_API_KEY   # ou Authorization: Bearer
FORMAT=application/json
DEFAULT_SCOPES=["cashout","pix_payout"]
ALL_SCOPES=["cashout","cashin","pix_payout","pix_qr","ted","doc","boletos","swift","wire","ach","sepa","spei","pse","cvu","tef","jota","onramp","custodia_brl","kyc","kyb","data"]
GATEWAYS={"lunium":["cashout","cashin"],"pix_payout":["pix_payout"],"mesa":["pix_qr","ted","doc","boletos","swift","wire","ach","sepa","spei","pse","cvu","tef","jota","onramp","custodia_brl","kyc","kyb","data"]}
RULE_403=scope_nao_aprovado → POST /keys/me/scopes/request
RULE_503=gateway_nao_configurado → mesa/lunium ainda sem credencial no servidor
KEYS_SANDBOX=wp_test_…  KEYS_LIVE=wp_live_…
i
Disponibilidade: produção depende da habilitação da conta. Consulte a equipe antes de integrar.

1 Visão geral

API agregadora: uma chave, vários serviços liberados por escopo. Valores em BRL em centavos (amount_cents); cripto como string decimal.

Cash-out

USDT/USDC → PIX. Escopo cashout (default). Gateway Lunium.

Payout PIX

PIX a partir do saldo. Escopo pix_payout (default).

Cash-in

PIX → cripto/saldo. Escopo cashin (sob aprovação).

💡
Fonte de verdade: GET /keys/me (escopos) e catálogo/limites da API — não fixe taxas no código.

2 Autenticação

Header X-API-Key (ou Authorization: Bearer). Corpo JSON com Content-Type: application/json.

bashrequisição
curl --fail-with-body https://api.wantspay.pro/keys/me \
  -H "X-API-Key: $WANTSPAY_API_KEY"
🔒
A chave só no servidor. Nunca no front-end nem em git.
GET/keys/meescopos, limites, taxa
GET/saldosaldo da conta
jsonGET /keys/me
{
  "env": "live",
  "scopes": ["cashout", "pix_payout"],
  "scopes_pending": ["cashin", "swift"],
  "partner_fee_bps": 0
}

3 Ambientes & chaves

AmbienteComo obterPrefixo
SandboxPOST /keys/sandboxwp_test_…
ProduçãoPOST /keys + e-mailwp_live_…
bashsandbox
curl --fail-with-body https://api.wantspay.pro/keys/sandbox \
  -H 'Content-Type: application/json' \
  -d '{"name":"teste"}'

Guarde api_key como WANTSPAY_API_KEY. Resposta também traz scopes e limits.

4 Escopos

Chaves simples (sem ponto), iguais ao código. Sem escopo → 403 scope_nao_aprovado.

✓
Padrão: cashout + pix_payout. Demais entram em scopes_pending até aprovação.
🗝
Controle por projeto: uma conta pode ter várias chaves (app, loja, ERP). Cada chave tem escopos e volume próprios no portal (conta.wantspay.pro / empresas.wantspay.pro → Chaves). Use um nome de projeto ao criar a chave.
ChaveServiçoPadrãoGateway
cashoutCripto → PIXativolunium
pix_payoutPayout PIX (saldo)ativopix_payout
cashinPIX → criptoaprovaçãolunium
pix_qrPIX QR dinâmicoaprovaçãomesa
tedTEDaprovaçãomesa
docDOCaprovaçãomesa
boletosBoletoaprovaçãomesa
swiftSWIFT (20+ moedas)aprovaçãomesa
wireWireaprovaçãomesa
achACH (EUA)aprovaçãomesa
sepaSEPAaprovaçãomesa
speiSPEI (MX)aprovaçãomesa
psePSE (CO)aprovaçãomesa
cvuCVU (AR)aprovaçãomesa
tefTEF (CL)aprovaçãomesa
jotaJOTA (PE)aprovaçãomesa
onrampCompra de criptoaprovaçãomesa
custodia_brlCustódia BRLaprovaçãomesa
kycKYC pessoaaprovaçãomesa
kybKYB empresaaprovaçãomesa
dataConsulta de dadosaprovaçãomesa

Pedir escopo

POST/keys/me/scopes/requestpede aprovação
jsonPOST /keys/me/scopes/request
{
  "scopes": ["swift", "cashin"],
  "note": "Remessa e on-ramp para clientes PJ"
}
🛡️
Trate 403 scope_nao_aprovado como estado normal: o serviço precisa ser habilitado, não é bug de código. Escopos mesa podem responder 503 gateway_nao_configurado até a mesa operar.

5 Comece agora

Chave sandbox

POST /keys/sandbox → wp_test_… → WANTSPAY_API_KEY.

Confira escopos

GET /keys/me deve listar cashout e pix_payout.

Cote

POST /cashout/preview — quanto o PIX recebe por USDT.

Crie e acompanhe

POST /cashout → aceite → GET /cashout/{id} ou webhook.

bashpreview
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" }'

6 Cash-out · cripto → PIX cashout

Serviço-base. Três passos: cotar/criar, aceitar (endereço), acompanhar.

POST /cashout

asset, network, PIX e amount ou brl_amount. Use external_id.

POST /cashout/{id}/accept

Confirma e devolve endereço de depósito.

GET /cashout/{id}

Ao concluir: pix_e2e, receipt_url.

jsonPOST /cashout
{
  "asset": "USDT",
  "network": "polygon",
  "amount": "100.00",
  "pix_key": "recebedor@example.com",
  "pix_key_type": "email",
  "external_id": "cashout-001"
}
QUOTE_CREATED→AWAITING_DEPOSIT→DEPOSIT_CONFIRMED→PAYING_OUT→COMPLETED

Terminais: COMPLETED, EXPIRED, FAILED, REFUNDED, MANUAL_REVIEW. Preview: POST /cashout/preview.

7 Cash-in · PIX → cripto cashin

Sob aprovação. POST /cashin/charge gera QR PIX; acompanhe com GET /cashin/{id}/status.

jsonPOST /cashin/charge
{
  "amount_cents": 10000,
  "destino": "cripto",
  "asset": "usdt",
  "chain": "polygon",
  "payout_address": "0x…",
  "external_id": "cashin-001"
}
⚠️
Só trate como entregue com status=paid e settlement_status=sent.

8 Outros serviços

Existem no catálogo de escopos; a maioria é mesa (sob aprovação). Sem seção longa de payload até o gateway estar live.

pix_payout — PIX do saldo · POST /payouts

boletos · ted · doc · pix_qr — trilhos BR via mesa

swift · wire · ach · sepa · spei · pse · cvu · tef · jota — internacional / LATAM

onramp · custodia_brl · kyc · kyb · data — on-ramp, saldo, compliance

Peça com POST /keys/me/scopes/request usando exatamente essas chaves.

9 Webhooks

Configure em PATCH /keys/me (webhook_url). O webhook_secret aparece uma vez.

Header X-WantsPay-Signature: t=…,v1=<hmac_hex> — HMAC-SHA256 de timestamp.raw_body. Dedupe por event_id; responda 2xx em <10s.

jsonevento
{
  "event": "cashout.completed",
  "event_id": "evt_…",
  "data": { "cashout_id": "co_…", "status": "COMPLETED" }
}

Principais: cashout.*, cashin.*, key.scope_approved, webhook.test.

10 Erros & idempotência

Sempre envie external_id em operações financeiras. Retry = mesmo ID + mesmo corpo.

HTTPcodeAção
401—Chave/ambiente
403scope_nao_aprovadoPOST /keys/me/scopes/request
409external_id_divergenteNão reutilize o ID com outro body
503gateway_nao_configuradoGateway/mesa ainda indisponível
429—Respeite Retry-After

11 Referência

Base https://api.wantspay.pro.

MétodoEndpointNotas
POST/keys/sandboxchave teste
POST/keyschave live
GET/keys/meescopos
POST/keys/me/scopes/requestpedir escopo
POST/cashout/previewcotação
POST/cashoutcriar
POST/cashout/{id}/acceptaceitar
GET/cashout/{id}status
POST/cashin/chargeescopo cashin
GET/cashin/{id}/statusstatus
GET/saldosaldo
POST/webhooks/testteste
GET/pinghealth

12 Suporte

✓
Produção: chave em env; escopos em /keys/me; webhook com HMAC; external_id em retries.