{ "paths": { "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet overview", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "description": "View information about the specified wallet", "operationId": "StoreOnChainWallets_ShowOnChainWalletOverview", "responses": { "200": { "description": "specified wallet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainWalletOverviewData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/histogram": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet balance histogram", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "description": "View the balance histogram of the specified wallet", "operationId": "StoreOnChainWallets_ShowOnChainWalletHistogram", "responses": { "200": { "description": "specified wallet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HistogramData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/feerate": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet fee rate", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "blockTarget", "in": "query", "required": false, "description": "The number of blocks away you are willing to target for confirmation. Defaults to the wallet's configured `RecommendedFeeBlockTarget`", "schema": { "type": "number", "minimum": 1 } } ], "description": "Get wallet onchain fee rate", "operationId": "StoreOnChainWallets_GetOnChainFeeRate", "responses": { "200": { "description": "fee rate", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainWalletFeeRateData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canviewstoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/address": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet address", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "forceGenerate", "in": "query", "required": false, "description": "Whether to generate a new address for this request even if the previous one was not used", "schema": { "type": "boolean", "default": false } } ], "description": "Get or generate address for wallet", "operationId": "StoreOnChainWallets_GetOnChainWalletReceiveAddress", "responses": { "200": { "description": "reserved address", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainWalletAddressData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] }, "delete": { "tags": [ "Store Wallet (On Chain)" ], "summary": "UnReserve last store on-chain wallet address", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "description": "UnReserve address", "operationId": "StoreOnChainWallets_UnReserveOnChainWalletReceiveAddress", "responses": { "200": { "description": "address unreserved" }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet or there was no address reserved" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/transactions": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet transactions", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "statusFilter", "in": "query", "required": false, "description": "Statuses to filter the transactions with", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionStatus" } } }, { "name": "labelFilter", "in": "query", "required": false, "description": "Transaction label to filter by", "schema": { "type": "string" }, "example": "invoice" }, { "name": "skip", "in": "query", "required": false, "description": "Number of transactions to skip from the start", "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "required": false, "description": "Maximum number of transactions to return", "schema": { "type": "integer" } } ], "description": "Get store on-chain wallet transactions", "operationId": "StoreOnChainWallets_ShowOnChainWalletTransactions", "responses": { "200": { "description": "transactions list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OnChainWalletTransactionData" } } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" }, "503": { "description": "You need to allow non-admins to use hotwallets for their stores (in /server/policies)" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] }, "post": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Create store on-chain wallet transaction", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOnChainTransactionRequest" } } } }, "description": "Create store on-chain wallet transaction", "operationId": "StoreOnChainWallets_CreateOnChainTransaction", "responses": { "200": { "description": "the tx", "content": { "application/json": { "schema": { "oneOf": [ { "description": "The unbroadcasted transaction in hex format", "type": "string" }, { "$ref": "#/components/schemas/OnChainWalletTransactionData" } ] } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/transactions/{transactionId}": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet transaction", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "transactionId", "in": "path", "required": true, "description": "The transaction id to fetch", "schema": { "type": "string" } } ], "description": "Get store on-chain wallet transaction", "operationId": "StoreOnChainWallets_GetOnChainWalletTransaction", "responses": { "200": { "description": "transaction", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainWalletTransactionData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] }, "patch": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Patch store on-chain wallet transaction info", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "transactionId", "in": "path", "required": true, "description": "The transaction id to fetch", "schema": { "type": "string" } }, { "name": "force", "in": "query", "required": false, "description": "Whether to update the label/comments even if the transaction does not yet exist", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchOnChainTransactionRequest" } } } }, "description": "Patch store on-chain wallet transaction info", "operationId": "StoreOnChainWallets_PatchOnChainWalletTransaction", "responses": { "200": { "description": "transaction", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainWalletTransactionData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/utxos": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Get store on-chain wallet UTXOS", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "description": "Get store on-chain wallet utxos", "operationId": "StoreOnChainWallets_GetOnChainWalletUTXOs", "responses": { "200": { "description": "utxo list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OnChainWalletUTXOData" } } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/wallet" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/generate": { "post": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Generate store on-chain wallet", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" } ], "description": "Generate a wallet and update the specified store's payment method to it", "requestBody": { "x-name": "request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateOnChainWalletRequest" } } }, "required": true, "x-position": 1 }, "operationId": "StoreOnChainPaymentMethods_GenerateOnChainWallet", "responses": { "200": { "description": "updated specified payment method with the generated wallet", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/GenericPaymentMethodData" }, { "type": "object", "properties": { "mnemonic": { "$ref": "#/components/schemas/Mnemonic" }, "config": { "$ref": "#/components/schemas/OnChainPaymentMethodBaseData" } } } ] } } } }, "400": { "description": "A list of errors that occurred when updating the store payment method", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationProblemDetails" } } } }, "403": { "description": "If you are authenticated but forbidden to update the specified store" }, "404": { "description": "The key is not found for this store" } }, "security": [ { "API_Key": [ "btcpay.store.canmodifystoresettings" ], "Basic": [] } ] } }, "/api/v1/stores/{storeId}/payment-methods/{paymentMethodId}/wallet/preview": { "get": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Preview store on-chain payment method addresses", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "name": "paymentMethodId", "in": "path", "required": true, "description": "The payment method id of the payment method to update", "schema": { "type": "string" }, "example": "BTC-CHAIN" }, { "name": "offset", "in": "query", "required": false, "description": "From which index to fetch the addresses", "schema": { "type": "number" } }, { "name": "count", "in": "query", "required": false, "description": "Number of addresses to preview", "schema": { "type": "number" } } ], "description": "View addresses of the current payment method of the store", "operationId": "StoreOnChainPaymentMethods_GetOnChainPaymentMethodPreview", "responses": { "200": { "description": "specified payment method addresses", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainPaymentMethodPreviewResultData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store/payment method" } }, "security": [ { "API_Key": [ "btcpay.store.canviewstoresettings" ], "Basic": [] } ] }, "post": { "tags": [ "Store Wallet (On Chain)" ], "summary": "Preview proposed store on-chain payment method addresses", "parameters": [ { "name": "storeId", "in": "path", "required": true, "description": "The store to fetch", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/PaymentMethodId" }, { "name": "offset", "in": "query", "required": false, "description": "From which index to fetch the addresses", "schema": { "type": "number" } }, { "name": "count", "in": "query", "required": false, "description": "Number of addresses to preview", "schema": { "type": "number" } } ], "description": "View addresses of a proposed payment method of the store", "operationId": "StoreOnChainPaymentMethods_POSTOnChainPaymentMethodPreview", "requestBody": { "x-name": "request", "content": { "application/json": { "schema": { "type": "object", "properties": { "derivationScheme": { "type": "string", "description": "The derivation scheme", "example": "xpub..." } } } } }, "required": true, "x-position": 1 }, "responses": { "200": { "description": "specified payment method addresses", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnChainPaymentMethodPreviewResultData" } } } }, "403": { "description": "If you are authenticated but forbidden to view the specified store" }, "404": { "description": "The key is not found for this store" } }, "security": [ { "API_Key": [ "btcpay.store.canviewstoresettings" ], "Basic": [] } ] } } }, "components": { "schemas": { "Mnemonic": { "type": "string", "description": "A BIP39 mnemonic", "example": "quality warfare scatter zone report forest potato local swing solve upon candy garment boost lab" }, "OnChainPaymentMethodBaseData": { "type": "object", "additionalProperties": false, "properties": { "derivationScheme": { "type": "string", "description": "The derivation scheme", "example": "xpub..." }, "label": { "type": "string", "description": "A label that will be shown in the UI" }, "accountKeyPath": { "type": "string", "description": "The wallet fingerprint followed by the keypath to derive the account key used for signing operation or creating PSBTs", "example": "abcd82a1/84'/0'/0'" } } }, "OnChainPaymentMethodPreviewResultData": { "type": "object", "additionalProperties": false, "properties": { "addresses": { "type": "array", "description": "a list of addresses generated by the derivation scheme", "items": { "$ref": "#/components/schemas/OnChainPaymentMethodPreviewResultAddressItem" } } } }, "OnChainPaymentMethodPreviewResultAddressItem": { "type": "object", "additionalProperties": false, "properties": { "keyPath": { "type": "string", "description": "The key path relative to the account key path." }, "address": { "type": "string", "description": "The address generated at the key path" } } }, "GenerateOnChainWalletRequest": { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string", "description": "A label that will be shown in the UI" }, "existingMnemonic": { "$ref": "#/components/schemas/Mnemonic" }, "passphrase": { "type": "string", "description": "A passphrase for the BIP39 mnemonic seed" }, "accountNumber": { "type": "number", "default": 0, "description": "The account to derive from the BIP39 mnemonic seed" }, "savePrivateKeys": { "type": "boolean", "default": false, "description": "Whether to store the seed inside BTCPay Server to enable some additional services. IF `false` AND `existingMnemonic` IS NOT SPECIFIED, BE SURE TO SECURELY STORE THE SEED IN THE RESPONSE!" }, "importKeysToRPC": { "type": "boolean", "default": false, "description": "Whether to import all addresses generated via BTCPay Server into the underlying node wallet. (Private keys will also be imported if `savePrivateKeys` is set to true." }, "wordList": { "type": "string", "description": "If `existingMnemonic` is not set, a mnemonic is generated using the specified wordList.", "default": "English", "x-enumNames": [ "English", "Japanese", "Spanish", "ChineseSimplified", "ChineseTraditional", "French", "PortugueseBrazil", "Czech" ], "enum": [ "English", "Japanese", "Spanish", "ChineseSimplified", "ChineseTraditional", "French", "PortugueseBrazil", "Czech" ] }, "wordCount": { "type": "number", "description": "If `existingMnemonic` is not set, a mnemonic is generated using the specified wordCount.", "default": 12, "x-enumNames": [ 12, 15, 18, 21, 24 ], "enum": [ 12, 15, 18, 21, 24 ] }, "scriptPubKeyType": { "type": "string", "description": "the type of wallet to generate", "default": "Segwit", "x-enumNames": [ "Legacy", "Segwit", "SegwitP2SH", "TaprootBIP86" ], "enum": [ "Legacy", "Segwit", "SegwitP2SH", "TaprootBIP86" ] } } }, "OnChainWalletOverviewData": { "type": "object", "additionalProperties": false, "properties": { "balance": { "type": "string", "format": "decimal", "description": "The total current balance of the wallet" }, "unconfirmedBalance": { "type": "string", "format": "decimal", "description": "The current unconfirmed balance of the wallet" }, "confirmedBalance": { "type": "string", "format": "decimal", "description": "The current confirmed balance of the wallet" } } }, "OnChainWalletFeeRateData": { "type": "object", "additionalProperties": false, "properties": { "feerate": { "type": "number", "format": "decimal", "description": "The fee rate (sats per byte) based on the wallet's configured recommended block confirmation target" } } }, "OnChainWalletAddressData": { "type": "object", "additionalProperties": false, "properties": { "address": { "type": "string", "description": "The bitcoin address" }, "keyPath": { "type": "string", "format": "keypath", "description": "the derivation path in relation to the HD account" }, "paymentLink": { "type": "string", "format": "BIP21", "description": "a bip21 payment link" } } }, "TransactionStatus": { "type": "string", "x-enumNames": [ "Unconfirmed", "Confirmed" ], "enum": [ "Unconfirmed", "Confirmed" ] }, "LabelData": { "type": "object", "additionalProperties": true, "deprecated": true, "properties": { "type": { "type": "string", "description": "The type of label" }, "text": { "type": "string", "description": "Information about this label" } } }, "OnChainWalletTransactionData": { "type": "object", "additionalProperties": false, "properties": { "transactionHash": { "type": "string", "nullable": true, "description": "The transaction id" }, "comment": { "type": "string", "description": "A comment linked to the transaction" }, "amount": { "type": "string", "format": "decimal", "description": "The amount the wallet balance changed with this transaction" }, "blockHash": { "type": "string", "nullable": true, "description": "The hash of the block that confirmed this transaction. Null if still unconfirmed." }, "blockHeight": { "type": "string", "nullable": true, "description": "The height of the block that confirmed this transaction. Null if still unconfirmed." }, "confirmations": { "type": "string", "nullable": true, "description": "The number of confirmations for this transaction" }, "timestamp": { "description": "The time of the transaction", "allOf": [ { "$ref": "#/components/schemas/UnixTimestamp" } ] }, "status": { "allOf": [ { "$ref": "#/components/schemas/TransactionStatus" } ], "description": "The status of this transaction" }, "labels": { "description": "Labels linked to this transaction", "deprecated": true, "type": "array", "items": { "$ref": "#/components/schemas/LabelData" } } } }, "OnChainWalletUTXOData": { "type": "object", "additionalProperties": false, "properties": { "comment": { "type": "string", "description": "A comment linked to this utxo" }, "amount": { "type": "string", "description": "the value of this utxo" }, "link": { "type": "string", "format": "url", "description": "a link to the configured blockchain explorer to view the utxo" }, "outpoint": { "type": "string", "format": "{txid}:{outputIndex}", "description": "outpoint of this utxo" }, "timestamp": { "description": "The time of the utxo", "allOf": [ { "$ref": "#/components/schemas/UnixTimestamp" } ] }, "keyPath": { "type": "string", "format": "keypath", "description": "the derivation path in relation to the HD account" }, "address": { "type": "string", "description": "The wallet address of this utxo" }, "confirmations": { "type": "number", "description": "The number of confirmations of this utxo" }, "labels": { "description": "Labels linked to this transaction", "deprecated": true, "type": "array", "items": { "$ref": "#/components/schemas/LabelData" } } } }, "CreateOnChainTransactionRequestDestination": { "type": "object", "additionalProperties": false, "properties": { "destination": { "type": "string", "description": "A wallet address or a BIP21 payment link" }, "amount": { "type": "string", "format": "decimal", "nullable": true, "description": "The amount to send. If `destination` is a BIP21 link, the amount must be the same or null." }, "subtractFromAmount": { "type": "boolean", "description": "Whether to subtract the transaction fee from the provided amount. This makes the receiver receive less, or in other words: he or she pays the transaction fee. Also useful if you want to clear out your wallet. Must be false if `destination` is a BIP21 link" } } }, "CreateOnChainTransactionRequest": { "type": "object", "additionalProperties": false, "properties": { "destinations": { "nullable": false, "description": "What and where to send money", "type": "array", "items": { "$ref": "#/components/schemas/CreateOnChainTransactionRequestDestination" } }, "feerate": { "type": "number", "format": "decimal or long (sats/byte)", "description": "Transaction fee." }, "proceedWithPayjoin": { "type": "boolean", "default": true, "nullable": true, "description": "Whether to attempt to do a BIP78 payjoin if one of the destinations is a BIP21 with payjoin enabled" }, "proceedWithBroadcast": { "type": "boolean", "default": true, "nullable": true, "description": "Whether to broadcast the transaction after creating it or to simply return the transaction in hex format." }, "noChange": { "type": "boolean", "default": false, "nullable": true, "description": "Whether to send all the spent coins to the destinations (THIS CAN COST YOU SIGNIFICANT AMOUNTS OF MONEY, LEAVE FALSE UNLESS YOU KNOW WHAT YOU ARE DOING)." }, "rbf": { "type": "boolean", "nullable": true, "description": "Whether to enable RBF for the transaction. Leave blank to have it random (beneficial to privacy)" }, "excludeUnconfirmed": { "type": "boolean", "default": false, "nullable": true, "description": "Whether to exclude unconfirmed UTXOs from the transaction." }, "selectedInputs": { "nullable": true, "description": "Restrict the creation of the transactions from the outpoints provided ONLY (coin selection)", "type": "array", "items": { "type": "string" } } } }, "PatchOnChainTransactionRequest": { "type": "object", "additionalProperties": false, "properties": { "comment": { "nullable": true, "type": "string", "description": "Transaction comment" }, "labels": { "nullable": true, "deprecated": true, "description": "Transaction labels", "type": "array", "items": { "type": "string" } } } } } }, "tags": [ { "name": "Store Wallet (On Chain)", "description": "Store Wallet (On Chain) operations" } ] }