Developers & AI agents

Payments your AI assistant can run

MerchantLink is a native MCP server with a matching REST API. Let Claude or your own agents create invoices, send payment links and follow the money, with limits and approvals you control.

MCP server

Connect an assistant in one line

MerchantLink speaks the Model Context Protocol over Streamable HTTP. Any MCP client can discover its tools, and each key only sees the tools its scopes allow.

Claude Code
claude mcp add --transport http merchantlink https://www.merchantlink.ai/api/mcp \
  --header "Authorization: Bearer ml_sk_…"
Any MCP client (JSON config)
{
  "mcpServers": {
    "merchantlink": {
      "type": "http",
      "url": "https://www.merchantlink.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ml_sk_…"
      }
    }
  }
}

REST API

The same operations over plain HTTP

Integer cents, predictable JSON, Stripe-style idempotency keys, and pay links and QR codes in every response.

Create an invoice
curl https://www.merchantlink.ai/api/v1/invoices \
  -H "Authorization: Bearer ml_sk_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7f3c9a" \
  -d '{
    "customer": { "name": "Jane Smith", "email": "jane@example.com" },
    "items": [{ "description": "Logo design", "unit_amount_cents": 45000 }],
    "due_date": "2026-10-07"
  }'
200 OK
{
  "id": "inv_…",
  "object": "invoice",
  "number": "INV-1012",
  "status": "open",
  "total_cents": 45000,
  "amount_due_cents": 45000,
  "pay_url": "https://www.merchantlink.ai/pay/v7nkneh7ts",
  "qr_code_url": "https://www.merchantlink.ai/api/qr/v7nkneh7ts"
}
202 Accepted: over a limit or needs approval
{
  "status": "pending_approval",
  "approval_id": "ai_…",
  "message": "This API key requires approval before contacting customers…"
}

Guardrails for autonomous agents

Give agents real power, safely

Every API key is a policy. Decide what an agent may do, how much it may bill, and when it must ask you first.

Scoped keys

Ten scopes, from links:read to refunds:write. Read-only and full-access presets included.

Amount limits

Invoices or links above a key’s ceiling become approval requests instead of executing.

Approval before contact

Optionally require your OK before an agent emails or texts a customer. Agent refunds always need approval.

Audit trail

Every agent action is recorded with the key that made it, alongside human and AI actions.

Idempotency

Retry any POST safely with an Idempotency-Key; the original response is replayed.

Event feed

Poll list_events with a cursor to react to payments, views and customer replies.

OpenAPI 3.1

Generated from the same schemas that validate every request, so it never drifts.

llms.txt

A plain-text guide at /llms.txt teaches any model how to use MerchantLink.

Reference

20 tools, one catalogue

Identical over MCP and REST. Money is always integer cents.

ToolWhat it does
create_payment_linkCreate a shareable payment link with a QR code. type "fixed" = one-time payment of amount_cents; "donation" = payer picks from suggested_amounts or enters any amount; "open" = payer enters any amount. Returns the pay url and qr_code_url.
list_payment_linksList standalone payment links (fixed, donation, open) with amounts collected.
get_payment_linkGet a payment link by id.
set_payment_link_statusDeactivate a payment link so it can no longer be paid, or re-activate it.
create_invoiceCreate an itemized invoice. Pass customer_id, or customer {name, email, phone} to match/create one. Amounts are integer cents. Every invoice gets a pay_url and qr_code_url. Use send_payment_request afterwards to email/text it.
list_invoicesList invoices, optionally filtered by status (draft, open, partially_paid, paid, void, overdue) or customer_id.
get_invoiceGet an invoice with line items, balance due, pay_url and payments.
finalize_invoiceFinalize a draft invoice so it becomes payable.
void_invoiceVoid an unpaid invoice. Its payment link stops accepting payments.
send_payment_requestEmail and/or text the pay link for an invoice or payment link to the customer. Texts only go to customers who opted in themselves on the payment page or the merchant's text sign-up page; otherwise use email. If the API key requires approval, the send is queued for the merchant to approve.
create_customerCreate a customer. Phone numbers in E.164 (+15551234567).
list_customersList or search customers by name, email, company or phone.
get_customerGet a customer by id.
list_paymentsList payments (most recent first), optionally by status or invoice.
get_paymentGet a payment by id.
refund_paymentRequest a full or partial refund (amount_cents). Refunds requested by agents always require merchant approval.
get_account_summaryRevenue collected in the last N days, outstanding and overdue balances, and the probability-weighted collections forecast for the coming weeks.
list_eventsPoll the account event log (payment.succeeded, invoice.paid, invoice.viewed, message.received, ...). Pass after_seq from the previous call to get only new events.
get_approvalCheck whether the merchant approved an action this agent requested (status: proposed, executed, rejected, failed).
list_pending_approvalsActions waiting for the merchant to approve (AI-drafted reminders, agent requests...).

Full schemas in the OpenAPI spec and llms.txt.

Send your first payment link today

Every account starts with a built-in sandbox, so you can create invoices, send links and take test payments before you connect a processor.