vexorpayDocs
vexorpayDocs
APIDocumentación de vexorpayPrimeros pasosVenta de producto digitalImpuestos y Merchant of Record

Core API

Referencia de APICrear link de pago únicoCrear link de pago recurrenteListar y obtener linksSuscripcionesCheckout por compraVentas de PolarClientesDisputasSaldoRetirosEventos de reconciliaciónCuentas conectadas (marketplace)Webhooks salientesAutenticación

Recursos

vexorpay MCPEspecificación OpenAPIMigrar desde el SDK `vexor`PostmanComunidadModo sandbox

vexorpay MCP

Remote vexorpay MCP server to connect your account from Claude Code, Cursor, VS Code and other MCP clients, with OAuth.

The vexorpay MCP server exposes the v1 API operations as MCP tools (Model Context Protocol). You can connect it to Claude Code, Cursor, VS Code or any MCP client to create payment links, query sales, manage subscriptions and disputes and more in natural language.

The connection uses OAuth: you authorize access from the browser (login + consent) and the MCP client obtains an access token to call the tools.

Connect

Choose your client and follow the steps. The server URL is always the same, https://mcp.vexorpay.com, and the connection uses OAuth: the first time you use the server the browser opens so you can sign in, authorize the app, choose the mode (test or production) and the permissions (scopes) you grant it.

Add the server to your opencode.json:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vexorpay": {
      "type": "remote",
      "url": "https://mcp.vexorpay.com",
      "enabled": true,
      "oauth": {}
    }
  }
}

Then authenticate with OAuth from the terminal:

Terminal
opencode mcp auth vexorpay

Edit ~/.cursor/mcp.json (or .cursor/mcp.json in your project):

mcp.json
{
  "mcpServers": {
    "vexorpay": {
      "url": "https://mcp.vexorpay.com"
    }
  }
}

Cursor opens the browser to sign in and authorize the first time you use the server.

Add the server with the Claude Code CLI:

Terminal
claude mcp add --transport http vexorpay https://mcp.vexorpay.com

Start Claude Code and run /mcp to authenticate with OAuth.

Open Settings → Connectors → Add custom connector and use this URL:

https://mcp.vexorpay.com

You sign in and authorize access in the browser.

Add the server with the Codex CLI:

Terminal
codex mcp add vexorpay --url https://mcp.vexorpay.com

Authenticate with OAuth when the client asks for it.

Open Settings → Connectors → Add connector (developer mode) and use this URL:

https://mcp.vexorpay.com

You authorize access with OAuth in the browser.

Add the server to your workspace .vscode/mcp.json:

mcp.json
{
  "servers": {
    "vexorpay": {
      "type": "http",
      "url": "https://mcp.vexorpay.com"
    }
  }
}

VS Code prompts you to authorize with OAuth when the server starts.

Any MCP client that supports Streamable HTTP and OAuth connects to:

https://mcp.vexorpay.com

If your client uses the classic mcpServers configuration:

mcp.json
{
  "mcpServers": {
    "vexorpay": {
      "type": "http",
      "url": "https://mcp.vexorpay.com"
    }
  }
}

Using a client that is not on the list? Connect it to https://mcp.vexorpay.com (Streamable HTTP + OAuth).

Mode: test or production

There is a single URL for all clients; the mode is chosen on the authorization screen:

ModeWhat it does
Test (sandbox)Operates with test data (Polar sandbox). Ideal for development; never moves real money.
ProductionOperates with your real account: real money and data.

The connection is locked to the mode chosen at authorization: it cannot be switched per call. To change the mode, reconnect the app choosing the other mode.

Tools

There are 27 tools covering the v1 API operations (all except GET /health and the order refund POST /orders/{id}/refund).

Read (scope read)

Toolv1 API
get_balanceGET /balance
list_payment_linksGET /payment-links
get_payment_linkGET /payment-links/{id}
get_payment_link_statsGET /payment-links/{id}/stats
list_ordersGET /orders (filters status, payment_link_id)
get_orderGET /orders/{id}
list_subscriptionsGET /subscriptions
get_subscriptionGET /subscriptions/{id}
list_disputesGET /disputes (filters status, order_id)
get_disputeGET /disputes/{id}
list_eventsGET /events
list_payoutsGET /payouts
get_payout_estimateGET /payouts/estimate
list_customersGET /customers
get_customerGET /customers/{id}

Write

Toolv1 APIScope
create_payment_linkPOST /payment-linkslinks:write
update_payment_linkPATCH /payment-links/{id}links:write
delete_payment_linkDELETE /payment-links/{id} (archives the link and its Polar product)links:write
create_checkoutPOST /payment-links/{id}/checkout (Polar checkout session)charges:write
update_subscription_seatsPATCH /subscriptions/{id}subscriptions:write
cancel_subscriptionPOST /subscriptions/{id}/cancelsubscriptions:write
open_subscription_portalPOST /subscriptions/{id}/portalsubscriptions:write
accept_disputePOST /disputes/{id}/acceptdisputes:write
create_payoutPOST /payoutspayouts:write

Connected accounts (scope account:operate)

Toolv1 APIScope
list_connected_accountsGET /connected-accountsaccount:operate
get_connected_accountGET /connected-accounts/{id}account:operate
revoke_connected_accountDELETE /connected-accounts/{id}account:operate

The create_payment_link and create_checkout tools also accept connected_account (operate on behalf of a connected account; the proxy translates it to the Vexor-Account header). See connected accounts.

Destructive tools (delete_payment_link, cancel_subscription, accept_dispute, create_payout, revoke_connected_account) are flagged as destructive so the client asks for explicit confirmation before they run. create_payout moves money: the tool also tells the assistant to show get_payout_estimate first.

Scopes

When you authorize the app you choose which permissions to grant. You can grant read-only access or add the write permissions you need:

ScopeWhat it allowsEndpoints
readRead-onlyAll the GET endpoints above.
links:writeCreate, update and delete payment linksPOST/PATCH/DELETE /payment-links.
charges:writeCreate checkouts and refund salesPOST /payment-links/{id}/checkout, POST /orders/{id}/refund.
subscriptions:writeModify and cancel subscriptions, open the portalPATCH /subscriptions/{id}, POST /subscriptions/{id}/cancel, POST /subscriptions/{id}/portal.
disputes:writeAccept disputes (Polar defends them; accepting is the only action)POST /disputes/{id}/accept.
payouts:writeWithdraw the full available Polar balance to the payout account (moves money)POST /payouts.
account:operateOperate connected accounts (marketplace)GET /connected-accounts, GET / DELETE /connected-accounts/{id}, and create links/checkouts with connected_account.
offline_accessIssue a refresh token so the app stays authorized—

A connection without the scope a tool requires receives 403 insufficient_scope (from the v1 API, with detail.required_scope indicating which one is missing).

Security and revocation

  • Access tokens are opaque (vxo_at_…), live for 1 hour and are stored only hashed on the server.
  • offline_access issues a refresh token (30 days) to re-issue access without re-authorizing.
  • You can view all your connected apps and revoke their access from Desarrolladores → Apps conectadas in the dashboard; when revoked, that app's tokens stop working.

See also

  • v1 API reference — the operations the tools invoke.
  • Sandbox mode — how to test without moving real money.
  • OpenAPI specification — the spec with the scopes per operation.

Autenticación

Cómo autenticarte en la API de vexorpay con tu clave.

Especificación OpenAPI

La API v1 publica su contrato en OpenAPI 3.0.3, descargable en /openapi.json.

On this page

ConnectMode: test or productionToolsRead (scope read)WriteConnected accounts (scope account:operate)ScopesSecurity and revocationSee also