# BTCPay Server

BTCPay Server is a free, open-source, self-hosted Bitcoin payment processor that enables merchants to accept Bitcoin payments without intermediaries.

- **Category:** payment processing
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 17
- **Triggers:** 0
- **Slug:** `BTCPAY_SERVER`
- **Version:** 20260227_00

## Tools

### Create Payment Request

**Slug:** `BTCPAY_SERVER_CREATE_PAYMENT_REQUEST`

Creates a new payment request in a BTCPay Server store. Payment requests are shareable pages where customers can create invoices to pay the requested amount. Unlike direct invoices, payment requests can be reused and allow customers to initiate payments themselves. Use this after obtaining a valid store ID from the create_store or get_store actions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | Customer email address used in invoices generated by this payment request |
| `title` | string | Yes | Title of the payment request displayed to the customer |
| `amount` | string | Yes | Requested amount in the specified currency. Must be non-negative. |
| `storeId` | string | Yes | BTCPay Server store ID where the payment request will be created |
| `currency` | string | No | ISO 4217 currency code (e.g., USD, EUR, BTC). If not specified, uses the store's default currency. |
| `expiryDate` | string | No | When the payment request expires. Pass as ISO 8601 datetime; will be converted to Unix timestamp for the API. |
| `description` | string | No | HTML description or memo shown to the customer on the payment request page |
| `embeddedCSS` | string | No | Custom CSS to embed directly in the payment request page (max 500 bytes) |
| `customCSSLink` | string | No | URL to an external CSS file for styling the payment request page |
| `allowCustomPaymentAmounts` | boolean | No | If true, allows the customer to enter a custom payment amount when creating invoices from this request |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Store

**Slug:** `BTCPAY_SERVER_CREATE_STORE`

Tool to create a new store in BTCPay Server. Use when you need to provision a new store before processing transactions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the store to be created. This will be displayed in the BTCPay Server UI and on invoices. |
| `website` | string | No | The public website URL of the store. Should be a valid URL starting with http:// or https://. |
| `speedPolicy` | string ("HighSpeed" | "MediumSpeed" | "LowMediumSpeed" | "LowSpeed") | No | Confirmation speed policy for on-chain payments. 'HighSpeed' = 0 confirmations (instant), 'MediumSpeed' = 1 confirmation, 'LowMediumSpeed' = 2 confirmations, 'LowSpeed' = 6 confirmations. |
| `defaultCurrency` | string | No | ISO 4217 currency code (e.g., 'USD', 'EUR') or cryptocurrency code (e.g., 'BTC', 'SATS') to use as default for invoices. Defaults to 'USD' if not specified. |
| `invoiceExpiration` | integer | No | Invoice expiration time in seconds. Minimum is 60 seconds. Default is 900 (15 minutes). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create BTCPay Server User

**Slug:** `BTCPAY_SERVER_CREATE_USER`

Tool to create a new BTCPay Server user. Use when you need to register a new user programmatically as an administrator.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | The email address of the new user |
| `password` | string | Yes | Password for the new user. Must be at least 8 characters long |
| `isAdministrator` | boolean | No | If true, grants the new user server administrator privileges. Defaults to false. Requires admin API key to set to true |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Register a Webhook

**Slug:** `BTCPAY_SERVER_CREATE_WEBHOOK`

Registers a new webhook for a BTCPay store to receive real-time notifications when store events occur (e.g., invoice created, payment received, invoice settled). The webhook endpoint receives POST requests with event payloads signed using an HMAC secret for verification.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | The HTTPS callback URL that will receive webhook POST payloads when events occur |
| `secret` | string | No | Optional HMAC secret used to sign webhook payloads for verification. If not provided, the server auto-generates one. |
| `enabled` | boolean | No | Whether the webhook is active and should receive notifications. Default is true. |
| `storeId` | string | Yes | The unique identifier of the BTCPay store to register the webhook for |
| `authorizedEvents` | object | Yes | Specifies which store events should trigger this webhook. Set 'everything' to true for all events, or provide a list of specific event types. |
| `automaticRedelivery` | boolean | No | If true, automatically retry delivery when the webhook endpoint fails to respond. Default is true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete API Key

**Slug:** `BTCPAY_SERVER_DELETE_API_KEY`

Revoke a specific API key to immediately prevent its use for authentication. Use this tool when you need to disable an API key, such as when rotating credentials or when a key may have been compromised. The revocation takes effect immediately. Note: This action requires authentication with an API key that has user management permissions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `apikey` | string | Yes | The API key string to revoke. This is the actual key value, not an ID. Once revoked, the API key can no longer be used for authentication. You can find API keys using the Get API Keys action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Payment Request

**Slug:** `BTCPAY_SERVER_DELETE_PAYMENT_REQUEST`

Deletes (archives) a specific payment request from a BTCPay Server store. Use this tool when you need to remove or archive an existing payment request. The payment request will be marked as archived and will no longer be active. This operation requires the 'btcpay.store.canmodifypaymentrequests' API permission. Note: This is a destructive operation - once deleted, the payment request cannot be restored.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `storeId` | string | Yes | The unique identifier of the BTCPay Server store that contains the payment request to delete. |
| `paymentRequestId` | string | Yes | The unique identifier of the payment request to delete/archive. This ID is returned when creating a payment request. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Store Payout

**Slug:** `BTCPAY_SERVER_DELETE_PAYOUT`

Cancels (deletes) a specific payout from a BTCPay Server store. Use this tool when you need to cancel a pending payout that is no longer needed. Only payouts in 'AwaitingApproval' or 'AwaitingPayment' state can be canceled. Payouts that have already been processed or completed cannot be canceled. Requires the 'btcpay.store.canmanagepayouts' permission on the API key.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `storeId` | string | Yes | The unique identifier of the BTCPay Server store containing the payout to cancel |
| `payoutId` | string | Yes | The unique identifier of the payout to cancel. Payouts can only be canceled if they are in 'AwaitingApproval' or 'AwaitingPayment' state |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Current API Key

**Slug:** `BTCPAY_SERVER_GET_API_KEYS`

Retrieve information about the current API key. Returns details including the API key string, its label, and the permissions it has been granted. Use this to verify authentication is working and to check what permissions the current API key has. Note: BTCPay Server only provides access to the current API key, not all API keys associated with the user account. This tool is read-only; it cannot create, modify, or delete API keys.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Payment Requests

**Slug:** `BTCPAY_SERVER_GET_PAYMENT_REQUESTS`

Tool to list all payment requests for a specific store. Use after confirming you have the store ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `store_id` | string | Yes | Identifier of the store whose payment requests will be listed. |
| `includeArchived` | boolean | No | When true, includes archived payment requests in the response. Defaults to false (only active payment requests). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get BTCPay Server Info

**Slug:** `BTCPAY_SERVER_GET_SERVER_INFO`

Tool to retrieve information about the BTCPay Server instance. Use when needing server version, tor address, supported payment methods, and synchronization states.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Store

**Slug:** `BTCPAY_SERVER_GET_STORE`

Retrieves complete configuration and settings for a specific BTCPay Server store by its ID. Use this tool when you need to: - Get current store settings and configuration - Check store properties like payment methods, currency, invoice expiration, etc. - Verify store exists and is accessible - Retrieve branding/display settings (logo, colors, checkout page settings) Returns comprehensive store data including payment settings, checkout configuration, and branding. Results are scoped to the authenticated user's permissions; insufficient permissions may return restricted or empty data rather than an explicit error.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `store_id` | string | Yes | The unique identifier (ID) of the store to retrieve. This is a string value that can be obtained from creating a store or listing stores. Example format: alphanumeric string like '9CiNzKoANXxmk5ayZngSXrHTiVvvgCrwrpFQd4m2K776'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get BTCPay Server User

**Slug:** `BTCPAY_SERVER_GET_USER`

Retrieve information about a BTCPay Server user by ID or email. Use 'me' as the id_or_email parameter to get the currently authenticated user's profile. Alternatively, provide a specific user ID (UUID) or email address to retrieve another user's information. Requires API key with 'btcpay.user.canviewprofile' permission scope. Note: Viewing other users' profiles requires server administrator privileges.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id_or_email` | string | Yes | The ID or email of the user to retrieve. Use 'me' to get the current authenticated user's information. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Store Webhook

**Slug:** `BTCPAY_SERVER_GET_WEBHOOK`

Retrieves detailed configuration of a specific webhook registered for a BTCPay store, including its callback URL, subscribed events, enabled status, and automatic redelivery settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `storeId` | string | Yes | The BTCPay store ID that owns the webhook |
| `webhookId` | string | Yes | The unique identifier of the webhook to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Store Webhooks

**Slug:** `BTCPAY_SERVER_GET_WEBHOOKS`

Lists all webhooks registered for a BTCPay Server store. Use this to retrieve webhook configurations for management, auditing, or to find webhook IDs for update/delete operations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `storeId` | string | Yes | The unique identifier of the BTCPay Server store to list webhooks for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Apps

**Slug:** `BTCPAY_SERVER_LIST_APPS`

Retrieve all apps (Point of Sale, Crowdfund, etc.) associated with a specific BTCPay Server store. Returns basic metadata for each app including its ID, name, type, creation timestamp, and archived status. Use this tool when you need to enumerate or discover apps configured within a store.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `storeId` | string | Yes | The unique identifier of the store to list apps for. This is typically a 52-character alphanumeric string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update BTCPay Server User

**Slug:** `BTCPAY_SERVER_UPDATE_USER`

Update the profile of the currently authenticated BTCPay Server user. Use this tool to modify user profile settings like display name, email, profile picture, or password. All fields are optional - only provide fields you want to change. Requires API key with 'btcpay.user.canmodifyprofile' permission scope. Note: Password changes require both currentPassword and newPassword to be provided. Email changes may require re-verification depending on server configuration.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Display name shown in the BTCPay Server UI |
| `email` | string | No | New email address. Changing email may require re-verification depending on server settings. |
| `imageUrl` | string | No | URL to profile picture/avatar image. Must be a valid HTTP/HTTPS URL. |
| `newPassword` | string | No | New password to set. Minimum 8 characters. Requires currentPassword to be provided. |
| `currentPassword` | string | No | Current password - required only when changing to a new password. Must be provided together with newPassword. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
