PayZuPayZu Docs

MCP server

MCP is the open protocol that lets AI assistants call external tools via JSON-RPC. payzu-mcp-pix exposes 29 curated tools from the Pix Processamento API, with readable names (pix.create, account.balance, etc), type validation and consistent error handling.

When to use MCP vs SKILL.md vs SDK

ScenarioUse
AI executes real calls on your PayZu account (create Pix, check balance, etc)MCP
AI generates code that you paste into your appSKILL.md
Your production app talks to PayZuSDK (npm install payzu-pix)

Installation

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "payzu-pix": {
      "command": "npx",
      "args": ["-y", "payzu-mcp-pix"],
      "env": {
        "PAYZU_TOKEN": "<your-token-from-dashboard>"
      }
    }
  }
}

Restart Claude Desktop. Test by asking "what's my PayZu balance?", Claude will call account.balance on its own.

Cursor

.cursor/mcp.json in the project (or ~/.cursor/mcp.json globally):

{
  "mcpServers": {
    "payzu-pix": {
      "command": "npx",
      "args": ["-y", "payzu-mcp-pix"],
      "env": { "PAYZU_TOKEN": "..." }
    }
  }
}

Continue, Codeium, others

Same config (all follow the MCP standard). See the package README for details.

Configuration

Env varRequiredDefaultDescription
PAYZU_TOKENyes,Bearer token from abrirconta.payzu.com.br
PAYZU_API_URLnohttps://api.payzu.processamento.com/v1Override for whitelabel

Tool list (29)

All names in snake_case with namespace per domain. Each tool has a description with a direct link to the endpoint page in the docs.

Pix charges (4)

ToolHTTP
pix.createPOST /pix
pix.getGET /pix
pix.qr_codeGET /pix/qr-code/{id}
pix.proofGET /proof/{id}

Withdrawals (6)

ToolHTTP
withdraw.createPOST /withdraw
withdraw.getGET /withdraw
withdraw.by_qrPOST /withdraw/qrcode
withdraw.read_qrPOST /pix/qrcode/read
withdraw.dictGET /pix-key/{key}
withdraw.proofGET /withdraw/proof/{id}

Internal transfer (2)

ToolHTTP
internal_transfer.createPOST /internal-transfer
internal_transfer.getGET /internal-transfer

Account (2)

ToolHTTP
account.profileGET /user
account.balanceGET /user/balance

Reports (6)

ToolHTTP
reports.list_transactionsGET /user/transactions
reports.get_transactionGET /user/transactions/{id}
reports.create_csvPOST /user/report
reports.list_jobsGET /user/reports
reports.get_jobGET /user/report/{id}
reports.downloadGET /user/report/{id}/download

Callbacks (4)

ToolHTTP
callbacks.listGET /user/callbacks
callbacks.getGET /user/callback/{id}
callbacks.resendPOST /user/callback/{id}/resend
callbacks.resend_bulkPOST /user/callbacks/resend

MED infractions (5)

ToolHTTP
infractions.listGET /infractions
infractions.getGET /infractions/{id}
infractions.create_defensePOST /infractions/{id}/defense
infractions.list_defensesGET /infractions/{id}/defenses
infractions.get_defenseGET /infractions/{id}/defense/{defenseId}

Applied conventions

  • Values in decimal BRL, tool rejects cents (9990 becomes a validation error; it has to be 99.90).
  • clientReference required on creations (idempotência).
  • callbackUrl required on creations (without it nobody tells you the status).
  • Auto-retry on 5xx/429 with exponential backoff + jitter (max 3 attempts).
  • Errors include requestId, copy and paste to support if needed.
  • Zero admin endpoints, only public/client surface.

Usage example (Claude Desktop)

After configuring, conversations like:

"Create a PayZu charge for R$ 50 with reference order-abc"

Claude will pick pix.create, validate the arguments and call the API. Shows you the id, qrCodeText and qrCodeUrl in the chat.

"How much balance do I have?"

Claude calls account.balance and responds with the number.

"List the last 10 canceled transactions"

Claude calls reports.list_transactions with status: CANCELED, limit: 10.

Support

On this page