Skip to main content
Glama
payment-requests.ts11.3 kB
import { BaseService, ServiceInfo } from './base-service.js'; export class PaymentRequestsService extends BaseService { getServiceInfo(): ServiceInfo { return { name: 'payment-requests', description: 'Manage BTCPayServer payment requests - create, retrieve, list, update, delete payment requests, and pay payment requests (creates invoices)', category: 'payments', methods: [ { name: 'create', description: 'Create a new payment request for a store', parameters: { storeId: { type: 'string', description: 'The store ID to create the payment request for', required: true }, amount: { type: 'string', description: 'Payment amount (optional for custom amount requests)', required: false }, currency: { type: 'string', description: 'Currency code', required: false, default: 'USD' }, title: { type: 'string', description: 'Payment request title', required: false }, description: { type: 'string', description: 'Payment request description', required: false }, expiryDate: { type: 'string', description: 'Expiry date in ISO format (e.g., "2025-09-04T00:00:00Z" or "2025-09-04 00:00:00")', required: false }, email: { type: 'string', description: 'Email for payment notifications', required: false }, allowCustomPaymentAmounts: { type: 'boolean', description: 'Allow custom payment amounts', required: false, default: false }, referenceId: { type: 'string', description: 'Reference ID for the payment request', required: false } }, examples: [ { name: 'Fixed amount payment request', description: 'Create a payment request for a specific amount', parameters: { storeId: 'store123', amount: '100.00', currency: 'USD', title: 'Product Payment', description: 'Payment for premium product' } }, { name: 'Custom amount payment request', description: 'Create a payment request allowing custom amounts', parameters: { storeId: 'store123', currency: 'USD', title: 'Donation', description: 'Support our cause', allowCustomPaymentAmounts: true } } ] }, { name: 'get', description: 'Get a specific payment request by ID', parameters: { storeId: { type: 'string', description: 'Store ID', required: true }, paymentRequestId: { type: 'string', description: 'Payment request ID to retrieve', required: true } }, examples: [ { name: 'Get payment request', description: 'Retrieve details of a specific payment request', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123' } } ] }, { name: 'list', description: 'List all payment requests for a store', parameters: { storeId: { type: 'string', description: 'Store ID to list payment requests for', required: true } }, examples: [ { name: 'List all payment requests', description: 'Get all payment requests for a store', parameters: { storeId: 'store123' } } ] }, { name: 'update', description: 'Update an existing payment request', parameters: { storeId: { type: 'string', description: 'Store ID', required: true }, paymentRequestId: { type: 'string', description: 'Payment request ID to update', required: true }, amount: { type: 'string', description: 'Payment amount', required: false }, currency: { type: 'string', description: 'Currency code', required: false }, title: { type: 'string', description: 'Payment request title', required: false }, description: { type: 'string', description: 'Payment request description', required: false }, expiryDate: { type: 'string', description: 'Expiry date in ISO format', required: false }, email: { type: 'string', description: 'Email for payment notifications', required: false }, allowCustomPaymentAmounts: { type: 'boolean', description: 'Allow custom payment amounts', required: false }, referenceId: { type: 'string', description: 'Reference ID for the payment request', required: false }, formId: { type: 'string', description: 'Form ID to request customer data', required: false }, formResponse: { type: 'object', description: 'Form data response', required: false } }, examples: [ { name: 'Update payment request title', description: 'Update the title of an existing payment request', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123', title: 'Updated Product Payment' } }, { name: 'Update payment request amount', description: 'Update the amount and currency of a payment request', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123', amount: '150.00', currency: 'EUR' } } ] }, { name: 'pay', description: 'Pay a payment request (creates an invoice for payment)', parameters: { storeId: { type: 'string', description: 'Store ID', required: true }, paymentRequestId: { type: 'string', description: 'Payment request ID to pay', required: true }, amount: { type: 'string', description: 'Invoice amount (if different from payment request amount)', required: false }, allowPendingInvoiceReuse: { type: 'boolean', description: 'Whether to reuse pending invoices for this payment request', required: false, default: false } }, examples: [ { name: 'Pay payment request', description: 'Pay a payment request for the full amount (creates invoice)', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123' } }, { name: 'Pay partial amount', description: 'Pay a partial amount (requires allowCustomPaymentAmounts)', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123', amount: '50.00' } }, { name: 'Pay with invoice reuse', description: 'Pay a payment request allowing reuse of pending invoices', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123', allowPendingInvoiceReuse: true } } ] }, { name: 'delete', description: 'Delete a payment request', parameters: { storeId: { type: 'string', description: 'Store ID', required: true }, paymentRequestId: { type: 'string', description: 'Payment request ID to delete', required: true } }, examples: [ { name: 'Delete payment request', description: 'Remove a payment request', parameters: { storeId: 'store123', paymentRequestId: 'pr_abc123' } } ] } ] }; } protected async handleMethod(methodName: string, parameters: Record<string, any>): Promise<any> { switch (methodName) { case 'create': return await this.client.createPaymentRequest( parameters.storeId, parameters.amount, parameters.currency || 'USD', parameters.title, parameters.description, parameters.expiryDate, parameters.email, parameters.allowCustomPaymentAmounts || false, parameters.referenceId ); case 'get': return await this.client.getPaymentRequest(parameters.storeId, parameters.paymentRequestId); case 'list': return await this.client.getPaymentRequests(parameters.storeId); case 'update': return await this.client.updatePaymentRequest( parameters.storeId, parameters.paymentRequestId, parameters.amount, parameters.currency, parameters.title, parameters.description, parameters.expiryDate, parameters.email, parameters.allowCustomPaymentAmounts, parameters.referenceId, parameters.formId, parameters.formResponse ); case 'pay': return await this.client.payPaymentRequest( parameters.storeId, parameters.paymentRequestId, parameters.amount, parameters.allowPendingInvoiceReuse || false ); case 'delete': return await this.client.deletePaymentRequest(parameters.storeId, parameters.paymentRequestId); default: throw new Error(`Method ${methodName} not implemented`); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Abhijay007/btcpayserver-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server