create_price
Create a new price in Paddle Billing to define how to charge for products, including setting base prices, country-specific overrides, billing cycles, and tax calculations.
Instructions
This tool will create a new price in Paddle.
Prices describe how to charge for products. Always include a productId in the request to relate the price to a product.
If the quantity object is omitted, Paddle automatically sets a minimum of 1 and a maximum of 100. This means the most units that a customer can buy is 100. Set a quantity to offer a different amount.
When selecting type, choose the one that best describes the use case:
custom: Non-catalog item. Typically created for a specific transaction or subscription. Not returned when listing or shown in the Paddle dashboard.
standard: Standard item. Can be considered part of the catalog and reused across transactions and subscriptions easily.
When selecting taxMode, choose the one that best describes how the tax should be calculated for the price:
account_setting: Price uses the setting from the account. Default.
external: Price is exclusive of tax. Common in European countries.
internal: Price is inclusive of tax. Common in countries like the United States and Canada.
When using unitPriceOverrides:
Group countries based on purchasing power parity (PPP), not just currency zones
Create separate overrides for countries with different economic conditions even if they share the same currency (e.g., Greece and Ireland should have different price points)
Adjust prices relative to local economic conditions - higher in wealthy markets, lower in developing economies
For optimal conversion rates, set prices using local market research and willingness-to-pay data
Use local currencies where preferred by the customer
Example unitPriceOverrides structure: [ { "countryCodes": ["GB"], "unitPrice": { "amount": "8500", "currencyCode": "GBP" } }, { "countryCodes": ["IE"], "unitPrice": { "amount": "9500", "currencyCode": "EUR" } }, { "countryCodes": ["GR"], "unitPrice": { "amount": "6500", "currencyCode": "EUR" } }, { "countryCodes": ["IN"], "unitPrice": { "amount": "30000", "currencyCode": "INR" } }, { "countryCodes": ["CN"], "unitPrice": { "amount": "20000", "currencyCode": "CNY" } } ]
Ensure you have all the information needed before making the call. Don't fabricate, imagine, or infer details and parameter values unless explicitly asked to. If anything is ambiguous, unknown, or unclear, ask the user for clarification or details before you proceed.
If successful, the response includes a copy of the new price entity.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Internal description for this price, not shown to customers. | |
| type | No | Type of item. Standard items are considered part of the listed catalog and are shown in the Paddle dashboard. | |
| name | No | Name of this price, shown to customers at checkout and on invoices. Typically describes how often the related product bills. | |
| productId | Yes | Paddle ID for the product that this price is for, prefixed with `pro_`. | |
| billingCycle | No | How often this price should be charged. `null` if price is non-recurring (one-time). If omitted, defaults to `null`. | |
| trialPeriod | No | Trial period for the product related to this price. The billing cycle begins once the trial period is over. `null` for no trial period. Requires `billingCycle`. If omitted, defaults to `null`. | |
| taxMode | No | How tax is calculated for this price. | |
| unitPrice | Yes | Base price. This price applies to all customers, except for customers located in countries where `unitPriceOverrides` are set. | |
| unitPriceOverrides | No | List of unit price overrides. Use to override the base price with a custom price and currency for a country or group of countries. | |
| quantity | No | Limits on how many times the related product can be purchased at this price. Useful for discount campaigns. If omitted, defaults to 1-100. | |
| customData | No | Any structured custom key-value data needed outside of Paddle's standard fields. Occasionally used by third-parties. |
Implementation Reference
- src/functions.ts:91-98 (handler)The handler function that implements the core logic of the 'create_price' tool by invoking the Paddle SDK's prices.create method with the provided parameters.export const createPrice = async (paddle: Paddle, params: z.infer<typeof Parameters.createPriceParameters>) => { try { const price = await paddle.prices.create(params); return price; } catch (error) { return error; } };
- src/tools.ts:82-93 (registration)Tool specification registration in the tools array, defining method name, description, schema (parameters), and required actions for the create_price tool.{ method: "create_price", name: "Create a price", description: prompts.createPricePrompt, parameters: params.createPriceParameters, actions: { prices: { write: true, create: true, }, }, },
- src/api.ts:15-15 (registration)Maps the CREATE_PRICE constant to the createPrice handler function in the toolMap used by PaddleAPI.run.[TOOL_METHODS.CREATE_PRICE]: funcs.createPrice,
- src/constants.ts:7-7 (helper)Constant definition for the 'create_price' tool method string.CREATE_PRICE: "create_price",
- src/toolkit.ts:69-85 (registration)Dynamic MCP tool registration in PaddleMCPServer, registering each tool (including create_price) with the MCP server using the method name, description, parameters schema, and handler that delegates to PaddleAPI.this.tool( tool.method, tool.description, tool.parameters.shape, annotations, async (arg: unknown, _extra: unknown) => { const result = await this._paddle.run(tool.method, arg); return { content: [ { type: "text" as const, text: String(result), }, ], }; }, );