MW MASTER WALLETDEVELOPER PORTAL
API v1.0 OpenAPI ↗ Painel da carteira ↗
Documentação para desenvolvedores

Integre. Automatize.
Receba com Pix.

Conecte seu sistema à Master Wallet com uma API REST simples e segura. Crie cobranças, acompanhe pagamentos e receba atualizações automáticas por webhook.

Produção disponível REST + JSON Bearer Token Webhooks assinados
URL base de produção
https://api.masterwallet.app/v1
Todas as rotas da API v1 partem deste endereço.
01 / VISÃO GERAL

Comece por aqui

Para começar, entre no painel Master Wallet, abra API para desenvolvedores, informe um nome para sua integração e crie uma chave no ambiente de teste. A chave completa aparece uma única vez. Guarde-a em um gerenciador de segredos ou em uma variável de ambiente do seu servidor.

A chave de teste pode ser criada sem configurar uma gateway de pagamentos. Ela gera cobranças simuladas e não movimenta dinheiro real.

Faça sua primeira chamada

cURL · GET /v1
curl https://api.masterwallet.app/v1 \
  -H "Authorization: Bearer $MASTER_WALLET_API_KEY"

A resposta informa a versão da API e as rotas disponíveis para a chave autenticada.

02 / CONFIGURAÇÃO

Ambientes

A Master Wallet separa testes e operações reais em chaves diferentes. Não use uma chave de produção durante o desenvolvimento.

AmbientePrefixo da chaveComportamento
Testemw_test_Cria cobranças simuladas. Não gera Pix real nem credita saldo.
Produçãomw_live_Cria cobranças Pix reais usando a gateway ativa e as taxas configuradas para a carteira.

Uma chave de produção exige conta ativa, e-mail confirmado, perfil completo, CPF e titular maior de 18 anos. A gateway de pagamentos também precisa estar configurada e as operações não podem estar pausadas.

O limite é de 10 chaves ativas por conta. Revogue as chaves que não utiliza mais.

03 / AUTENTICAÇÃO

Autenticação

Envie sua chave no cabeçalho HTTP Authorization em todas as chamadas protegidas:

HTTP Header
Authorization: Bearer mw_test_SUA_CHAVE_COMPLETA

As chaves são armazenadas como hash no servidor. Não é possível recuperar o segredo depois da criação; gere outra chave se perder a original.

04 / COBRANÇAS

Criar cobrança Pix

POST/v1/chargesCria uma cobrança

Cria uma cobrança com valor em centavos de real. O cabeçalho de idempotência é obrigatório e deve ser único para cada intenção de cobrança.

Cabeçalhos

HTTP Headers
Authorization: Bearer SUA_API_KEY
Content-Type: application/json
Idempotency-Key: pedido-2026-000123

Corpo da requisição

JSON · Request
{
  "amount": 2590,
  "external_reference": "pedido-2026-000123",
  "description": "Pedido #123"
}

amount é obrigatório, inteiro em centavos, mínimo de 50 (R$ 0,50) e máximo de 100000000 (R$ 1.000.000,00). external_reference aceita até 100 caracteres; description, até 120.

Exemplo de resposta

JSON · Response 201
{
  "data": {
    "id": "UUID-DA-COBRANCA",
    "object": "charge",
    "amount": { "value": 2590, "currency": "BRL" },
    "fee_cents": 0,
    "net_amount_cents": 2590,
    "status": "pending",
    "external_reference": "pedido-2026-000123",
    "description": "Pedido #123",
    "pix": {
      "copy_paste": "000201...",
      "qr_code_base64": "..."
    },
    "created_at": "2026-11-13T20:00:00.000Z",
    "expires_at": null,
    "paid_at": null,
    "sandbox": false
  }
}

A tarifa da plataforma é calculada no servidor conforme as taxas ativas. fee_cents e net_amount_cents são retornados em centavos. No ambiente de teste, pix é null.

Idempotência

Se a mesma Idempotency-Key for enviada novamente com os mesmos dados, a API devolve a resposta previamente salva e inclui Idempotent-Replay: true. Se a chave for reutilizada com dados diferentes, retorna HTTP 409.

Em caso de timeout ou resposta HTTP 202, a criação pode estar em conciliação. Consulte a cobrança antes de tentar criar outro pedido com uma nova chave.
05 / COBRANÇAS

Consultar cobranças

GET/v1/chargesLista cobranças

Lista as cobranças da conta e do ambiente da chave autenticada. Aceita limit de 1 a 100 (padrão 25).

cURL · Listar
curl "https://api.masterwallet.app/v1/charges?limit=25" \
  -H "Authorization: Bearer $MASTER_WALLET_API_KEY"

Para continuar a paginação, envie juntos before e before_id retornados na página anterior. O cursor composto evita pular cobranças com a mesma data.

GET/v1/charges/{id}Consulta uma cobrança
cURL · Consultar por ID
curl "https://api.masterwallet.app/v1/charges/UUID-DA-COBRANCA" \
  -H "Authorization: Bearer $MASTER_WALLET_API_KEY"

A API só retorna cobranças vinculadas à conta e ao ambiente da chave usada.

Status possíveis

StatusSignificado
creatingSolicitação sendo preparada.
pendingAguardando pagamento ou confirmação.
unknownResposta externa incerta; aguarde conciliação.
paidPagamento confirmado e processado.
failedPagamento não concluído.
reviewOperação requer análise ou conciliação.
06 / CARTEIRA

Consultar saldo

GET/v1/balanceConsulta o saldo real

Disponível somente com chave de produção. Os valores são apresentados em centavos e separam saldo disponível, saldo retido e pendências MED.

cURL
curl https://api.masterwallet.app/v1/balance \
  -H "Authorization: Bearer $MASTER_WALLET_API_KEY"

Campos retornados

  • balance_cents: saldo disponível na carteira.
  • locked_balance_cents: valores retidos.
  • med_fee_debt_cents: tarifas MED pendentes.
  • med_amount_debt_cents: valores descobertos de ocorrências MED abertas.
07 / TESTES

Testar uma integração

POST/v1/sandbox/charges/{id}/approveSimula pagamento

Simula a aprovação de uma cobrança de teste e enfileira um evento charge.paid para o webhook, se configurado.

cURL
curl -X POST "https://api.masterwallet.app/v1/sandbox/charges/UUID-DA-COBRANCA/approve" \
  -H "Authorization: Bearer $MASTER_WALLET_API_KEY"
Este endpoint exige uma chave mw_test_. Não movimenta dinheiro real, não cria Pix e não credita qualquer carteira.
08 / EVENTOS

Webhooks

No painel, abra API para desenvolvedores, selecione a chave e configure uma URL pública HTTPS. O segredo de assinatura aparece apenas uma vez. É possível trocar o segredo, consultar tentativas recentes ou desativar o webhook.

Eventos disponíveis

EventoQuando é enviado
charge.paidCobrança confirmada como paga.
charge.failedCobrança não concluída.

Cabeçalhos enviados

HTTP Headers
X-Master-Wallet-Event: charge.paid
X-Master-Wallet-Delivery: UUID-DO-EVENTO
X-Master-Wallet-Signature: t=1730000000,v1=ASSINATURA_HEX
Content-Type: application/json

A assinatura é HMAC-SHA256 do texto timestamp + "." + corpo JSON bruto, usando o segredo do webhook. Valide o corpo bruto antes de interpretar o JSON e aplique tolerância de 5 minutos. Deduplique usando X-Master-Wallet-Delivery.

Verificação em Node.js

Node.js
import crypto from "node:crypto";

export function verifyMasterWalletWebhook(rawBody, signatureHeader, secret) {
  const match = /^t=(\d+),v1=([a-f0-9]{64})$/.exec(signatureHeader || "");
  if (!match) return false;

  const timestamp = Number(match[1]);
  if (!Number.isSafeInteger(timestamp) ||
      Math.abs(Date.now() / 1000 - timestamp) > 300) return false;

  const expected = crypto
    .createHmac("sha256", secret)
    .update(String(timestamp) + ".")
    .update(rawBody)
    .digest();

  const received = Buffer.from(match[2], "hex");
  return received.length === expected.length &&
    crypto.timingSafeEqual(received, expected);
}

O servidor tenta reenviar entregas que falham com atrasos progressivos, até 8 tentativas. Responda com HTTP 2xx depois de validar e registrar o evento. O envio é assíncrono; não use a chegada do webhook como única fonte de verdade: consulte o status da cobrança antes de liberar o pedido.

09 / REFERÊNCIA

Erros e limites

HTTPQuando ocorre
400Valor, corpo ou parâmetro inválido.
401Chave ausente, inválida ou revogada.
403Ambiente ou conta sem permissão para a operação.
404Cobrança ou carteira não encontrada para aquela chave.
409Conflito de idempotência ou solicitação já em andamento.
429Limite de 60 requisições por minuto excedido.
502 / 503Falha de integração ou serviço temporariamente indisponível.

Erros usam o formato { "error": { "code": "...", "message": "..." } }. Respeite o cabeçalho Retry-After quando fornecido.

10 / BOAS PRÁTICAS

Segurança e escopo

  • Mantenha as chaves somente no backend. Nunca as inclua em JavaScript público, aplicativos móveis distribuídos ou repositórios.
  • Use HTTPS para todas as chamadas e para receber webhooks.
  • Valide assinatura, timestamp e duplicidade dos webhooks.
  • Não libere produtos apenas porque a API retornou HTTP 201: confirme o status paid.
  • Revogue imediatamente chaves vazadas ou não utilizadas.
A API v1 permite criar e consultar cobranças Pix e consultar o saldo. Ela não oferece saques, transferências, ajustes de saldo, alteração de tarifas ou administração de contas por API.

Consulte a especificação formal OpenAPI 3.1 (YAML) para importar as rotas em ferramentas de desenvolvimento.