MCP tools reference
Payhip MCP tools
15 tools for Payhip on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Payhip seller account
- Integration page
- Payhip
| Endpoint | Access | Description |
|---|---|---|
| payhip_list_orders | read | Orders from the Customers page with buyer email, items, amounts, status and date. |
| payhip_get_order | read | One order: items, gross and net amount, fees, coupon, checkout answers and your private order notes. |
| payhip_list_products | read | Your products with type, price, visibility and link. |
| payhip_get_sales_stats | read | Daily views, daily sales and sales by product from the Analytics page. |
| payhip_get_sales_report | read | The monthly report from the Sales Report tab: VAT, fees, taxes, products sold and affiliate payouts. |
| payhip_list_subscribers | read | Subscribers to your subscription, course, coaching and membership plans with status and start date. |
| payhip_list_coupons | read | Coupon codes with discount, scope, uses, usage limit and expiry date. |
| payhip_create_coupon | write | Coupon code for the whole order, one product or one collection. |
| payhip_create_product | write | New digital product from a file URL, with title, price, description and visibility. |
| payhip_update_product | write | Change the title, price, description or visibility of a product. |
| payhip_add_order_note | write | Private note on an order. Only you see it. |
| payhip_reset_download_credits | write | Reset a buyer's download attempts to your store's download limit. |
| payhip_resend_receipt | write | Email the receipt and download link to the buyer again. |
| payhip_cancel_subscription | write | Cancel a subscriber's plan. Billing stops and access ends. |
| payhip_block_customer | write | Add an order's buyer to your Blocked List so they cannot buy again. |
List orders
readMCP tool payhip_list_orders
Returns the same filters as the Filter Orders button on the Customers page: email, product, order date, order ID, status and shipping. Orders come newest first and every date is in UTC. Pass the cursor to read the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| string | Buyer email. | |
| order_id | string | Find one order by ID. |
| product_id | string | Only orders that include this product. |
| status | enum | completed, refunded or partially_refunded. |
| shipping | enum | unshipped (orders with unshipped items) or shipped (fully shipped), for physical products. |
| from | date | Orders on or after this date (UTC). |
| to | date | Orders on or before this date (UTC). |
| limit | integer | 1 to 100. Default: 25. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_list_orders",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"orders": [
{
"order_id": "ord_7K2mQx",
"email": "client@example.com",
"items": [
{
"product_id": "RGsF",
"name": "Notion Budget Template",
"quantity": 1
}
],
"amount_gross": "12.00",
"currency": "USD",
"status": "completed",
"coupon_code": null,
"date": "2026-10-09T14:22:00Z"
}
],
"next_cursor": null
},
"isError": false
} Get order
readMCP tool payhip_get_order
Returns the amounts Payhip exports for an order: gross, net after tax and transaction fees, the Stripe or PayPal fee, the Payhip fee, the coupon applied and the buyer's answers to your checkout questions. It also returns your order notes, which only you can see.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_orders. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_get_order",
"arguments": {
"order_id": "order_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"order_id": "ord_7K2mQx",
"email": "client@example.com",
"status": "completed",
"payment_type": "stripe",
"currency": "USD",
"items": [
{
"product_id": "RGsF",
"name": "Notion Budget Template",
"quantity": 1
}
],
"amount_gross": "12.00",
"processor_fee": "0.65",
"payhip_fee": "0.60",
"amount_net": "10.75",
"coupon_code": null,
"checkout_responses": [],
"notes": [],
"date": "2026-10-09T14:22:00Z"
},
"isError": false
} List products
readMCP tool payhip_list_products
Returns the product IDs the other tools take. Visible products are listed on your store; invisible ones only you can see while logged in; unlisted ones only open from a direct link. Prices are shown as on the product page.
Parameters
| Name | Type | Description |
|---|---|---|
| type | enum | digital, course, coaching, membership or physical. Default: all. |
| visibility | enum | visible, invisible or unlisted. Default: all. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_list_products",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"products": [
{
"product_id": "RGsF",
"name": "Notion Budget Template",
"type": "digital",
"price": "12.00",
"visibility": "visible",
"url": "https://payhip.com/b/RGsF"
},
{
"product_id": "mVT0",
"name": "Freelancer Contract Pack",
"type": "digital",
"price": "24.00",
"visibility": "unlisted",
"url": "https://payhip.com/b/mVT0"
}
]
},
"isError": false
} Get sales stats
readMCP tool payhip_get_sales_stats
Returns the 3 graphs of the Analytics page as numbers. Visits from logged-in users are not counted in views, and all dates are in UTC. Only the sales breakdown is split by product.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | Start date (UTC). |
| to required | date | End date (UTC). |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_get_sales_stats",
"arguments": {
"from": "2026-10-05",
"to": "2026-10-11"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"daily_views": [
{
"date": "2026-10-05",
"views": 142
},
{
"date": "2026-10-06",
"views": 98
},
{
"date": "2026-10-07",
"views": 176
},
{
"date": "2026-10-08",
"views": 120
},
{
"date": "2026-10-09",
"views": 87
},
{
"date": "2026-10-10",
"views": 64
},
{
"date": "2026-10-11",
"views": 203
}
],
"daily_sales": [
{
"date": "2026-10-05",
"amount": "24.00"
},
{
"date": "2026-10-06",
"amount": "0.00"
},
{
"date": "2026-10-07",
"amount": "36.00"
},
{
"date": "2026-10-08",
"amount": "12.00"
},
{
"date": "2026-10-09",
"amount": "0.00"
},
{
"date": "2026-10-10",
"amount": "0.00"
},
{
"date": "2026-10-11",
"amount": "48.00"
}
],
"sales_by_product": [
{
"product_id": "RGsF",
"name": "Notion Budget Template",
"amount": "72.00"
},
{
"product_id": "mVT0",
"name": "Freelancer Contract Pack",
"amount": "48.00"
}
]
},
"isError": false
} MCP tool payhip_get_sales_report
Returns the 7 items of a Payhip monthly report: EU and UK VAT, Stripe and PayPal fees, Payhip fees, custom taxes, products sold, affiliate commission and affiliate sales. Reports are monthly, so a month that has not ended yet is incomplete.
Parameters
| Name | Type | Description |
|---|---|---|
| month required | string | Month as YYYY-MM. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_get_sales_report",
"arguments": {
"month": "month"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"month": "2026-09",
"eu_uk_vat": "4.20",
"processor_fees": "31.80",
"payhip_fees": "25.00",
"custom_taxes": "0.00",
"products_sold": [
{
"name": "Notion Budget Template",
"items": 38
},
{
"name": "Freelancer Contract Pack",
"items": 12
}
],
"affiliate_commission": "12.00",
"affiliate_sales": 3
},
"isError": false
} List subscribers
readMCP tool payhip_list_subscribers
Returns the Subscribers tab of the Customers page. Buyers keep access while past_due and lose it on cancelled, incomplete and incomplete_expired. Payhip moves a subscription to cancelled on its own after a 20-day grace period of failed payments.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | active, trialing, cancelled, paused, unpaid, past_due, incomplete or incomplete_expired. |
| string | Find one subscriber by email. | |
| limit | integer | 1 to 100. Default: 25. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_list_subscribers",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"subscribers": [
{
"subscription_id": "sub_3Hf9aD",
"email": "client@example.com",
"product_name": "Design Club",
"plan_name": "Monthly",
"status": "active",
"started": "2026-08-14"
}
],
"next_cursor": null
},
"isError": false
} List coupons
readMCP tool payhip_list_coupons
Returns the coupons from Marketing > Coupons with how often each was used. Expiry dates are in UTC. Notes are your private notes and buyers never see them.
Parameters
| Name | Type | Description |
|---|---|---|
| limit | integer | 1 to 100. Default: 25. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_list_coupons",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"coupons": [
{
"coupon_id": "cpn_9d2e41",
"code": "LAUNCH25",
"discount_type": "percentage",
"amount": "25",
"applies_to": "product",
"product_id": "RGsF",
"uses": 0,
"usage_limit": 50,
"expires_on": "2026-11-01",
"notes": "Newsletter launch"
}
],
"next_cursor": null
},
"isError": false
} MCP tool payhip_create_coupon
A percentage applies to the original price and a fixed amount is deducted from it. Payhip has no per-buyer limit, so use a product-specific code or single-use codes for that. The coupon works at checkout right away. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| code | string | Code buyers type at checkout. Omit to let Payhip generate one. |
| discount_type required | enum | percentage or fixed. |
| amount required | string | Percent off or amount off. |
| applies_to required | enum | total_order, product or collection. |
| product_id | string | Required when applies_to is product. |
| collection_id | string | Required when applies_to is collection. |
| usage_limit | integer | Total uses across all buyers, not per buyer. |
| expires_on | date | Expires at 00:00 UTC on this date. |
| notes | string | Private note. Buyers never see it. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_create_coupon",
"arguments": {
"code": "LAUNCH25",
"discount_type": "percentage",
"amount": "25",
"applies_to": "product",
"product_id": "RGsF",
"usage_limit": 50,
"expires_on": "2026-11-01",
"notes": "Newsletter launch"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"coupon_id": "cpn_9d2e41",
"code": "LAUNCH25",
"discount_type": "percentage",
"amount": "25",
"applies_to": "product",
"product_id": "RGsF",
"usage_limit": 50,
"uses": 0,
"expires_on": "2026-11-01",
"expires_at": "2026-11-01T00:00:00Z",
"notes": "Newsletter launch"
},
"isError": false
} MCP tool payhip_create_product
Creates a digital product only; courses, coaching, memberships and physical products are not created by this tool. Each file can be up to 5 GB. The default is invisible, so nothing goes on your store until you set visible or unlisted. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| title required | string | Product title. |
| price required | string | Price, e.g. 12. Add + for pay what you want: 5+ means at least 5, 0+ means any amount including free. |
| file_url required | string | Public URL of the file to sell, up to 5 GB. |
| description | string | Product description. |
| cover_image_url | string | Cover image shown on the product page. |
| visibility | enum | visible, invisible or unlisted. Default: invisible. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_create_product",
"arguments": {
"title": "title",
"price": "price",
"file_url": "https://example.com"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"product_id": "Qx7B",
"name": "Notion Budget Template",
"type": "digital",
"price": "12.00",
"visibility": "invisible",
"url": "https://payhip.com/b/Qx7B"
},
"isError": false
} MCP tool payhip_update_product
Returns the product after the change. A price change applies to new orders at once, and products with variants are not covered by this tool. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| product_id required | string | Product ID from list_products. |
| fields required | object | Any of title, price, description, visibility (visible, invisible or unlisted). |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_update_product",
"arguments": {
"product_id": "product_8c41d2",
"fields": "fields"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"product_id": "RGsF",
"name": "Notion Budget Template",
"type": "digital",
"price": "9.00",
"visibility": "visible",
"url": "https://payhip.com/b/RGsF"
},
"isError": false
} Add order note
writeMCP tool payhip_add_order_note
Order notes are only visible to you and appear in the Order Notes column of your orders export. The note reaches no customer, so this tool runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_orders. |
| note required | string | Note text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_add_order_note",
"arguments": {
"order_id": "order_8c41d2",
"note": "note"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"order_id": "ord_7K2mQx",
"notes": [
"Refunded in Stripe on request, emailed buyer"
]
},
"isError": false
} Reset download credits
writeMCP tool payhip_reset_download_credits
Sets the credits back to the Download Limit in your Advanced Settings, which is 5 unless you changed it. It changes only the count and does not email the buyer; call resend_receipt for that. The call reaches no one, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_orders. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_reset_download_credits",
"arguments": {
"order_id": "ord_7K2mQx"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"order_id": "ord_7K2mQx",
"email": "client@example.com",
"download_limit": 5,
"download_credits": 5,
"status": "reset"
},
"isError": false
} MCP tool payhip_resend_receipt
Does the same as Resend Receipt in the Customers menu: the buyer gets the receipt again. If the buyer ran out of download attempts, call reset_download_credits first. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_orders. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_resend_receipt",
"arguments": {
"order_id": "order_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"order_id": "ord_7K2mQx",
"email": "client@example.com",
"status": "sent"
},
"isError": false
} MCP tool payhip_cancel_subscription
Does the same as Cancel Subscription on the Subscribers tab: it prevents future charges and unenrolls the customer, who immediately loses access to the product. It does not refund past payments. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| subscription_id required | string | Subscription ID from list_subscribers. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_cancel_subscription",
"arguments": {
"subscription_id": "subscription_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"subscription_id": "sub_3Hf9aD",
"email": "client@example.com",
"product_name": "Design Club",
"status": "cancelled",
"access": "ended"
},
"isError": false
} MCP tool payhip_block_customer
Payhip stores the PayPal payer ID or card payer ID of the order on your Blocked List, and that buyer cannot make future purchases from your store. There is no unblock tool; remove a buyer on the Blocked List page. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| order_id required | string | Order ID from list_orders. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "payhip_block_customer",
"arguments": {
"order_id": "order_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"order_id": "ord_7K2mQx",
"email": "client@example.com",
"blocked": true,
"payer_type": "card"
},
"isError": false
}