All further request examples do not include the "sign" parameter, nevertheless your real requests must include it in the request body where required.
Signature line is generated according to the following algorithm: all request parameters involved in signature generation are ordered in the alphabetical order of keys, the values are concatenated with a colon (":") and the account secret key is added at the end (without the: sign), a sha256 hash is generated from the resulting line and its hex representation is passed in the sign request parameter.
Example of signature generation for a method invoice/create:
Determining the list of parameters. It looks as follows for the method in consideration:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation","colors":{"primary":"#0D9373"},"favicon":"https://mintcdn.com/avanor-tech/L7OBFBxXlL3y_VD5/images/favicon.png?fit=max\u0026auto=format\u0026n=L7OBFBxXlL3y_VD5\u0026q=85\u0026s=8ffca6aefd774f65174011774689c0ed","interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"avanor-tech","hasAudioNarration":false,"actualSubdomain":"avanor-tech","customDomains":["docs.avanor.tech"],"gitSource":{"type":"github","owner":"avanor-tech","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aba6150bb3b2f06f45f50f2","collectionId":"1335115b-cee5-4c69-811d-3708ff158903","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aba6150bb3b2f06f45f50f2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aba6150bb3b2f06f45f50f2","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Payments","count":10},{"language":"default","tag":"Withdraws","count":7},{"language":"default","tag":"Invoice issue (payment creation)","count":7},{"language":"default","tag":"Payout creation","count":6},{"language":"default","tag":"Directories and other methods","count":2},{"language":"default","tag":"Callbacks","count":2},{"language":"default","tag":"Interaction format","count":2},{"language":"default","tag":"Refunds","count":2},{"language":"default","tag":"List of possible errors","count":1},{"language":"default","tag":"Invoice statuses","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/invoice-create/cancellation-of-funds-holding","slug":"/api-reference/invoice-create/cancellation-of-funds-holding","pageMetadata":{"title":"Cancellation of funds holding","description":"### Cancellation of funds hold.\n\nExecuted **only** after the method [invoice/hold](/api-reference/invoice-create/funds-hold-two-stage-payments)\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `invoice_id`\n* `now`\n* `shop_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/unhold","href":"/api-reference/invoice-create/cancellation-of-funds-holding","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h3: \"h3\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h3, {\n children: \"Cancellation of funds hold.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Executed \", _jsx(_components.strong, {\n children: \"only\"\n }), \" after the method \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/funds-hold-two-stage-payments\",\n children: \"invoice/hold\"\n })]\n }), \"\\n\", _jsxs(\"div\", {\n class: \"success\",\n children: [_jsx(\"p\", {\n children: \"Fields involved in request signature generation:\"\n }), _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"invoice_id\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"now\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"shop_id\"\n })\n }), \"\\n\"]\n })]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Cancellation of funds holding","description":"### Cancellation of funds hold.\n\nExecuted **only** after the method [invoice/hold](/api-reference/invoice-create/funds-hold-two-stage-payments)\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `invoice_id`\n* `now`\n* `shop_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/unhold","href":"/api-reference/invoice-create/cancellation-of-funds-holding","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Cancellation of funds holding","operationId":"post-invoice-unhold","responses":{"200":"316acde3-52ec-4838-a372-cd1f1d61305a"},"security":["b0aa65e9-53f4-4471-a82c-8a4590eec9c6"],"requestBody":"2c74a9b8-1d06-42be-9f46-74d617c9060f","tags":["invoice-create"],"description":"### Cancellation of funds hold.\n\nExecuted **only** after the method [invoice/hold](/api-reference/invoice-create/funds-hold-two-stage-payments)\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `invoice_id`\n* `now`\n* `shop_id`\n\u003c/div>\n","method":"post","type":"path","servers":["be4b38d3-8104-4d09-bdb9-2486472e433f","dc28d4e7-45f1-4d25-896f-c8c416ae9060"],"path":"/invoice/unhold","baseUrlOptions":["https://api.avanor.tech/gateway/v1","https://api.test.avanor.tech/gateway/v1"],"title":"Cancellation of funds holding","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payment cancellation parameters","required":["invoice_id","now","shop_id"],"properties":{"shop_id":{"type":"integer","example":202203,"description":"Unique shop identifier in the Avanor system.","isRequired":true,"uniqueKey":"shop_id","typeLabel":"integer"},"now":{"type":"string","format":"date-time","example":"2020-04-21T20:07:02","description":"Request date and time.","isRequired":true,"uniqueKey":"now","typeLabel":"string\u003cdate-time>"},"invoice_id":{"type":"number","description":"Invoice ID in the Avanor system.","format":"integer","example":27401,"isRequired":true,"uniqueKey":"invoice_id","typeLabel":"number\u003cinteger>"}},"uniqueKey":"","typeLabel":"Payment cancellation parameters · object"},"examples":{"Example":{"title":"Example","value":{"shop_id":202203,"now":"2020-04-21T20:07:02","invoice_id":27401}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"responses":{"316acde3-52ec-4838-a372-cd1f1d61305a":{"description":"","x-summary":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Funds have been unhold successfully","description":"","required":["data","error_code","message","result"],"properties":{"result":{"type":"boolean","description":"Boolean value, in case of successful response it will be `true`, in case of error – `false`","example":true,"isRequired":true,"uniqueKey":"oneOf.0.result","typeLabel":"boolean"},"message":{"type":"string","description":"A textual description of the error, in case of success - simply `Ok`","example":"Ok","isRequired":true,"uniqueKey":"oneOf.0.message","typeLabel":"string"},"error_code":{"type":"number","description":"If this value is greater than `0`, then the request ended with an error. [Description of error codes](/errors-list)","example":0,"isRequired":true,"uniqueKey":"oneOf.0.error_code","typeLabel":"number"},"data":{"type":"object","title":"Cancellation of holding","required":["settlement_rate","settlement_currency","shop_refund","status","payment_id","ps_data","ps_currency","payway","description","created","updated","processed","shop_currency","shop_amount","client_price","error_code","shop_id","shop_order_id"],"properties":{"shop_order_id":{"type":"string","example":"389d4f2c-46b9-4164-bcc4-fbd51e00d445","description":"Order ID in your system. *Must be unique for each new invoice.*","maxLength":255,"isRequired":true,"uniqueKey":"oneOf.0.data.shop_order_id","typeLabel":"string"},"shop_id":{"type":"integer","example":202203,"description":"Unique shop identifier in the Avanor system.","isRequired":true,"uniqueKey":"oneOf.0.data.shop_id","typeLabel":"integer"},"status":{"type":"integer","description":"A more detailed description of the statuses can be found [below](/invoice-statuses)","enum":[1,2,3,4,5,6,8],"example":2,"isRequired":true,"uniqueKey":"oneOf.0.data.status","typeLabel":"enum\u003cinteger>"},"payment_id":{"type":"integer","description":"Unique identifier of the issued invoice in Avanor system","example":12,"isRequired":true,"uniqueKey":"oneOf.0.data.payment_id","typeLabel":"integer"},"ps_data":{"type":"string","description":"Additional information from the payment system in the JSON Lines format.\nMandatory field - payer's account `ps_payer_account`.\nOther fields depend on the payment system.\n\nIn case of payment tokens, the `payment_token` parameter will also be represented in this field.","example":"{\"ps_payer_account\": \"411111XXXXXX1111\", \"bill_id\": \"7766\", \"amount\": \"190.99\", \"status\": \"success\"}","isRequired":true,"uniqueKey":"oneOf.0.data.ps_data","typeLabel":"string"},"ps_currency":{"type":"number","title":"Currency identifier","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\nExample: `840`\n","example":840,"isRequired":true,"uniqueKey":"oneOf.0.data.ps_currency","typeLabel":"number"},"payway":{"type":"string","description":"Payway in Avanor system used by the user for payment","maxLength":150,"pattern":"^[A-Za-z_,\\[\\]]+$","isRequired":true,"uniqueKey":"oneOf.0.data.payway","typeLabel":"string"},"description":{"type":"string","title":"Payment description","description":"Payment description","example":"Invoice for user_id=7766","isRequired":true,"uniqueKey":"oneOf.0.data.description","typeLabel":"string"},"created":{"type":"string","description":"Invoice creation date and time","format":"date-time","example":"2020-04-21T20:07:02","isRequired":true,"uniqueKey":"oneOf.0.data.created","typeLabel":"string\u003cdate-time>"},"updated":{"type":"string","description":"Invoice status change date and time (payment or rejection)","format":"date-time","example":"2020-04-21T20:09:02","isRequired":true,"uniqueKey":"oneOf.0.data.updated","typeLabel":"string\u003cdate-time>"},"processed":{"oneOf":[{"type":"string","description":"Date and time of invoice transfer to the final status","format":"date-time","example":"2020-04-21T20:09:03","isRequired":true,"uniqueKey":"oneOf.0.data.processed.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"Date and time of invoice transfer to the final status","format":"date-time","example":"2020-04-21T20:09:03","isRequired":true,"uniqueKey":"oneOf.0.data.processed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.processed","typeLabel":"string\u003cdate-time> | null"},"shop_currency":{"type":"number","title":"Currency identifier","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\nExample: `840`\n","example":840,"isRequired":true,"uniqueKey":"oneOf.0.data.shop_currency","typeLabel":"number"},"shop_amount":{"type":"number","format":"float","description":"Invoice amount, in the invoice currency","example":267,"isRequired":true,"uniqueKey":"oneOf.0.data.shop_amount","typeLabel":"number\u003cfloat>"},"client_price":{"type":"number","format":"float","description":"Amount paid by the client, in the payment system currency.","example":272.34,"isRequired":true,"uniqueKey":"oneOf.0.data.client_price","typeLabel":"number\u003cfloat>"},"error_code":{"title":"Avanor API error code","type":"number","format":"integer","example":0,"description":"Avanor API error code. `0` in cases there is no any error. Other codes can be found here: [Description of error codes](/errors-list)","required":["error_code"],"isRequired":true,"uniqueKey":"oneOf.0.data.error_code","typeLabel":"number\u003cinteger>"},"shop_refund":{"type":"number","format":"float","description":"Amount credited to the shop's balance, in currency `settlement_currency`","example":201,"isRequired":true,"uniqueKey":"oneOf.0.data.shop_refund","typeLabel":"number\u003cfloat>"},"settlement_currency":{"type":"number","description":"Shop balance currency","example":840,"isRequired":true,"uniqueKey":"oneOf.0.data.settlement_currency","typeLabel":"number"},"settlement_rate":{"oneOf":[{"type":"number","format":"float","description":"Exchange rate","example":null,"isRequired":true,"uniqueKey":"oneOf.0.data.settlement_rate.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","description":"Exchange rate","example":null,"isRequired":true,"uniqueKey":"oneOf.0.data.settlement_rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.settlement_rate","typeLabel":"number\u003cfloat> | null"}},"isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"Cancellation of holding · object"}},"uniqueKey":"oneOf.0","typeLabel":"Funds have been unhold successfully · object"},{"type":"object","title":"Error response","description":"# Error response\n","required":["data","error_code","message","result"],"properties":{"result":{"type":"boolean","description":"Boolean value, in case of successful response it will be `true`, in case of error – `false`","example":false,"isRequired":true,"uniqueKey":"oneOf.1.result","typeLabel":"boolean"},"message":{"type":"string","description":"A textual description of the error, in case of success - simply `Ok`","example":"Shop (id = 202203) is not active","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"},"error_code":{"type":"number","description":"If this value is greater than `0`, then the request ended with an error. [Description of error codes](/errors-list)","example":12,"isRequired":true,"uniqueKey":"oneOf.1.error_code","typeLabel":"number"},"data":{"oneOf":[{"type":"object","example":null,"isRequired":true,"uniqueKey":"oneOf.1.data.oneOf.0","typeLabel":"object"},{"type":"null","example":null,"isRequired":true,"uniqueKey":"oneOf.1.data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.data","typeLabel":"object | null"}},"uniqueKey":"oneOf.1","typeLabel":"Error response · object"}],"uniqueKey":"","typeLabel":"Funds have been unhold successfully · object | Error response · object"},"examples":{"Example":{"title":"Example","value":{"result":true,"message":"Ok","error_code":0,"data":{"shop_order_id":"389d4f2c-46b9-4164-bcc4-fbd51e00d445","shop_id":202203,"status":2,"payment_id":12,"ps_data":"{\"ps_payer_account\": \"411111XXXXXX1111\", \"bill_id\": \"7766\", \"amount\": \"190.99\", \"status\": \"success\"}","ps_currency":840,"payway":"\u003cstring>","description":"Invoice for user_id=7766","created":"2020-04-21T20:07:02","updated":"2020-04-21T20:09:02","processed":"2020-04-21T20:09:03","shop_currency":840,"shop_amount":267,"client_price":272.34,"error_code":0,"shop_refund":201,"settlement_currency":840,"settlement_rate":null}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"b0aa65e9-53f4-4471-a82c-8a4590eec9c6":{"RequestSignature":{"type":"apiKey","in":"header","name":"sign","description":"Every API request must be signed so that we can identify your account.\n\nThe signature is transferred in the request body through the `sign` parameter, for example:\n\n```json\n{\n \"shop_id\": 202203,\n \"shop_order_id\": \"1994\",\n \"amount\": \"104.04\",\n \"currency\": 840,\n \"payway\": \"payway_usd\",\n \"description\": \"Invoice sign\",\n \"sign\": \"05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2\"\n}\n```\n\u003cdiv class=\"warning\">\nAll further request examples do not include the \u003ccode>\"sign\"\u003c/code> parameter, nevertheless your real requests \u003cstrong>must\u003c/strong> include it in the request body where required.\n\u003c/div>\n\nSignature line is generated according to the following algorithm: all request parameters involved in signature generation are ordered in the alphabetical order of keys, the values are concatenated with a colon (\":\") and the account secret key is added at the end (without the: `sign`), a sha256 hash is generated from the resulting line and its hex representation is passed in the sign request parameter.\n\n### Example of signature generation for a method [invoice/create](/api-reference/invoice-create/invoice-issue):\n\n1. Determining the list of parameters. It looks as follows for the method in consideration:\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `shop_id`\n* `shop_order_id`\n* `amount`\n* `currency`\n* `payway`\n\u003c/div>\n\n2. Let's sort keys in alphabetical sequence:\n\n`\"amount\", \"currency\", \"payway\", \"shop_id\", \"shop_order_id\"`\n\n3. The line for generating the SHA256 hash will be as follows:\n\n`\"104.04:840:payway_usd:202203:1994account-secret-key\"`\n\nWhere `account-secret-key` is the secret identification key for your account. You can request a key from the support service.\n\n4. Let's get a hash expression of the generated line using Python code:\n\n```python\n>>> string_to_sign = '104.04:840:payway_usd:202203:1994account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2'\n```\n\n\u003cdiv class=\"success\">\nYou can check whether you have generated the signature correctly using the service \u003ca href=\"https://www.xorbin.com/tools/sha256-hash-calculator\">https://www.xorbin.com/tools/sha256-hash-calculator\u003c/a>.\n\u003c/div>\n\n","scopes":[]}}},"servers":{"be4b38d3-8104-4d09-bdb9-2486472e433f":{"url":"https://api.avanor.tech/gateway/v1","description":"The production API server"},"dc28d4e7-45f1-4d25-896f-c8c416ae9060":{"url":"https://api.test.avanor.tech/gateway/v1","description":"The test API server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"sign","description":"Every API request must be signed so that we can identify your account.\n\nThe signature is transferred in the request body through the `sign` parameter, for example:\n\n```json\n{\n \"shop_id\": 202203,\n \"shop_order_id\": \"1994\",\n \"amount\": \"104.04\",\n \"currency\": 840,\n \"payway\": \"payway_usd\",\n \"description\": \"Invoice sign\",\n \"sign\": \"05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2\"\n}\n```\n\u003cdiv class=\"warning\">\nAll further request examples do not include the \u003ccode>\"sign\"\u003c/code> parameter, nevertheless your real requests \u003cstrong>must\u003c/strong> include it in the request body where required.\n\u003c/div>\n\nSignature line is generated according to the following algorithm: all request parameters involved in signature generation are ordered in the alphabetical order of keys, the values are concatenated with a colon (\":\") and the account secret key is added at the end (without the: `sign`), a sha256 hash is generated from the resulting line and its hex representation is passed in the sign request parameter.\n\n### Example of signature generation for a method [invoice/create](/api-reference/invoice-create/invoice-issue):\n\n1. Determining the list of parameters. It looks as follows for the method in consideration:\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `shop_id`\n* `shop_order_id`\n* `amount`\n* `currency`\n* `payway`\n\u003c/div>\n\n2. Let's sort keys in alphabetical sequence:\n\n`\"amount\", \"currency\", \"payway\", \"shop_id\", \"shop_order_id\"`\n\n3. The line for generating the SHA256 hash will be as follows:\n\n`\"104.04:840:payway_usd:202203:1994account-secret-key\"`\n\nWhere `account-secret-key` is the secret identification key for your account. You can request a key from the support service.\n\n4. Let's get a hash expression of the generated line using Python code:\n\n```python\n>>> string_to_sign = '104.04:840:payway_usd:202203:1994account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2'\n```\n\n\u003cdiv class=\"success\">\nYou can check whether you have generated the signature correctly using the service \u003ca href=\"https://www.xorbin.com/tools/sha256-hash-calculator\">https://www.xorbin.com/tools/sha256-hash-calculator\u003c/a>.\n\u003c/div>\n\n","scopes":[]},"schema":{"title":"sign","type":"string","description":"Every API request must be signed so that we can identify your account.\n\nThe signature is transferred in the request body through the `sign` parameter, for example:\n\n```json\n{\n \"shop_id\": 202203,\n \"shop_order_id\": \"1994\",\n \"amount\": \"104.04\",\n \"currency\": 840,\n \"payway\": \"payway_usd\",\n \"description\": \"Invoice sign\",\n \"sign\": \"05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2\"\n}\n```\n\u003cdiv class=\"warning\">\nAll further request examples do not include the \u003ccode>\"sign\"\u003c/code> parameter, nevertheless your real requests \u003cstrong>must\u003c/strong> include it in the request body where required.\n\u003c/div>\n\nSignature line is generated according to the following algorithm: all request parameters involved in signature generation are ordered in the alphabetical order of keys, the values are concatenated with a colon (\":\") and the account secret key is added at the end (without the: `sign`), a sha256 hash is generated from the resulting line and its hex representation is passed in the sign request parameter.\n\n### Example of signature generation for a method [invoice/create](/api-reference/invoice-create/invoice-issue):\n\n1. Determining the list of parameters. It looks as follows for the method in consideration:\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `shop_id`\n* `shop_order_id`\n* `amount`\n* `currency`\n* `payway`\n\u003c/div>\n\n2. Let's sort keys in alphabetical sequence:\n\n`\"amount\", \"currency\", \"payway\", \"shop_id\", \"shop_order_id\"`\n\n3. The line for generating the SHA256 hash will be as follows:\n\n`\"104.04:840:payway_usd:202203:1994account-secret-key\"`\n\nWhere `account-secret-key` is the secret identification key for your account. You can request a key from the support service.\n\n4. Let's get a hash expression of the generated line using Python code:\n\n```python\n>>> string_to_sign = '104.04:840:payway_usd:202203:1994account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'05f6d3712417f62af6cbf66ca81c2f0b249f7dc1b4cbe3a50e3f8d67a1fb35a2'\n```\n\n\u003cdiv class=\"success\">\nYou can check whether you have generated the signature correctly using the service \u003ca href=\"https://www.xorbin.com/tools/sha256-hash-calculator\">https://www.xorbin.com/tools/sha256-hash-calculator\u003c/a>.\n\u003c/div>\n\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"RequestSignature","name":"sign"}],"title":"RequestSignature"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"avanor-tech","siteName":"Documentation","title":"Cancellation of funds holding - Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T12:45:08.498Z","originalFileLocation":"api-reference/invoice-create/cancellation-of-funds-holding.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"### Cancellation of funds hold. Executed only after the method invoice/hold Fields involved in request signature generation: invoice_id now * shop_id\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cancellation of funds holding - Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"### Cancellation of funds hold. Executed only after the method invoice/hold Fields involved in request signature generation: invoice_id now * shop_id\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://avanor-tech.mintlify.app/_mintlify/api/og/v2?division=Invoice+issue+%28payment+creation%29\u0026amp;title=Cancellation+of+funds+holding\u0026amp;description=%23%23%23+Cancellation+of+funds+hold.%0A%0AExecuted+**only**+after+the+method+%5Binvoice%2Fhold%5D%28%2Fapi-reference%2Finvoice-create%2Ffunds-hold-two-stage-payments%29%0A%0A%3Cdiv+class%3D%22suc\u0026amp;theme=57be3255082b8f94f24487af\u0026amp;signature=36a73dc178b257fdb329f6df42e1403de97f9c7f91d44b4191af82c58fc63647\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Cancellation of funds holding - Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"### Cancellation of funds hold. Executed only after the method invoice/hold Fields involved in request signature generation: invoice_id now * shop_id\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://avanor-tech.mintlify.app/_mintlify/api/og/v2?division=Invoice+issue+%28payment+creation%29\u0026amp;title=Cancellation+of+funds+holding\u0026amp;description=%23%23%23+Cancellation+of+funds+hold.%0A%0AExecuted+**only**+after+the+method+%5Binvoice%2Fhold%5D%28%2Fapi-reference%2Finvoice-create%2Ffunds-hold-two-stage-payments%29%0A%0A%3Cdiv+class%3D%22suc\u0026amp;theme=57be3255082b8f94f24487af\u0026amp;signature=36a73dc178b257fdb329f6df42e1403de97f9c7f91d44b4191af82c58fc63647\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/avanor-tech/VhF2OLMug6-uCTm-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/invoice-create/cancellation-of-funds-holding.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.avanor.tech/#organization\",\"name\":\"Documentation\",\"url\":\"https://docs.avanor.tech\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.avanor.tech#website\",\"name\":\"Documentation\",\"url\":\"https://docs.avanor.tech\",\"publisher\":{\"@id\":\"https://docs.avanor.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding#webpage\",\"url\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding\",\"name\":\"Cancellation of funds holding\",\"description\":\"### Cancellation of funds hold. Executed only after the method invoice/hold Fields involved in request signature generation: invoice_id now * shop_id\",\"dateModified\":\"2026-09-28T12:45:08.498Z\",\"isPartOf\":{\"@id\":\"https://docs.avanor.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Payments\",\"item\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-preliminary-calculation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Invoice issue (payment creation)\",\"item\":\"https://docs.avanor.tech/invoice-create\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cancellation of funds holding\",\"item\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding#apireference\",\"headline\":\"Cancellation of funds holding\",\"name\":\"Cancellation of funds holding\",\"description\":\"### Cancellation of funds hold. Executed only after the method invoice/hold Fields involved in request signature generation: invoice_id now * shop_id\",\"url\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding\",\"mainEntityOfPage\":{\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/cancellation-of-funds-holding#webpage\"},\"dateModified\":\"2026-09-28T12:45:08.498Z\",\"publisher\":{\"@id\":\"https://docs.avanor.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.avanor.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentation","nav":{"global":null,"groups":[{"group":"Overview","pages":[{"title":"Avanor Payment Gateway API (1.0.0)","href":"/overview"}]},{"group":"Payments","pages":[{"group":"Invoice issue (payment creation)","root":{"title":"Invoice issue (payment creation)","href":"/invoice-create"},"expanded":false,"pages":[{"title":"Invoice preliminary calculation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/try","href":"/api-reference/invoice-create/invoice-preliminary-calculation"},{"title":"Invoice issue","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/create","href":"/api-reference/invoice-create/invoice-issue"},{"title":"Issued invoice status request","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/check","href":"/api-reference/invoice-create/issued-invoice-status-request"},{"title":"Funds hold (two-stage payments)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/hold","href":"/api-reference/invoice-create/funds-hold-two-stage-payments"},{"title":"Confirmation of funds withdrawal (charge)","description":"### Withdrawal confirmation.\n\nPerformed **only** after [invoice/hold](/api-reference/invoice-create/funds-hold-two-stage-payments) method (second step of two-stage payment)\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `invoice_id`\n* `now`\n* `shop_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/charge","href":"/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge"},{"title":"Cancellation of funds holding","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/unhold","href":"/api-reference/invoice-create/cancellation-of-funds-holding"},{"title":"Getting payment methods for input","description":"Provides an up-to-date list of available payment ways and their additional parameters required for invoicing.\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `now`\n* `shop_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /shop_input_config/shop","href":"/api-reference/invoice-create/getting-payment-methods-for-input"}]},{"group":"Refunds","root":{"title":"Refunds","href":"/invoice-refund"},"expanded":false,"pages":[{"title":"Invoice refund","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/create-refund","href":"/api-reference/invoice-refund/invoice-refund"},{"title":"Invoice refund status","deprecated":null,"version":null,"openapi":"/openapi.yaml post /invoice/get-refunds","href":"/api-reference/invoice-refund/invoice-refund-status"}]},{"group":"Recurrent invoice","hidden":true,"pages":[{"title":"Recurrent invoice","href":"/invoice-recurrent"}]},{"group":"Invoice statuses","expanded":false,"pages":[{"title":"Invoice statuses","href":"/invoice-statuses"}]}]},{"group":"Withdraws","pages":[{"group":"Payout creation","root":{"title":"Payout creation","href":"/withdraw-create"},"expanded":false,"pages":[{"title":"Payout preliminary calculation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /withdraw/try","href":"/api-reference/withdraw-create/payout-preliminary-calculation"},{"title":"Checking the account for the possibility of replenishment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /check_account","href":"/api-reference/withdraw-create/checking-the-account-for-the-possibility-of-replenishment"},{"title":"Payout creation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /withdraw/create","href":"/api-reference/withdraw-create/payout-creation"},{"title":"Payout status request by ID of the payout created in Avanor system","deprecated":null,"version":null,"openapi":"/openapi.yaml post /withdraw/status","href":"/api-reference/withdraw-create/payout-status-request-by-id-of-the-payout-created-in-avanor-system"},{"title":"Payout status request by the shop payout number","deprecated":null,"version":null,"openapi":"/openapi.yaml post /withdraw/shop_payment_status","href":"/api-reference/withdraw-create/payout-status-request-by-the-shop-payout-number"},{"title":"Getting possible payout methods","deprecated":null,"version":null,"openapi":"/openapi.yaml post /shop_output_config/shop","href":"/api-reference/withdraw-create/getting-possible-payout-methods"}]},{"group":"Payout statuses","expanded":false,"pages":[{"title":"Payout statuses","href":"/withdraw-statuses"}]}]},{"group":"Callbacks","pages":[{"group":"Interaction format","root":{"title":"Interaction format","href":"/callbacks"},"expanded":false,"pages":[{"title":"Invoice callback schema","href":"/invoice-callback-schema"},{"title":"Refund callback schema","href":"/refund-callback-schema"}]}]},{"group":"Directories and other methods","pages":[{"group":"Other shop methods","root":{"title":"Other shop methods","href":"/other-shop-methods"},"expanded":false,"pages":[{"title":"Receive the shop balance","deprecated":null,"version":null,"openapi":"/openapi.yaml post /shop_balance","href":"/api-reference/other-shop-methods/receive-the-shop-balance"}]},{"group":"List of possible errors","expanded":false,"pages":[{"title":"List of possible errors","href":"/errors-list"}]}]}]},"title":"Cancellation of funds holding - Documentation","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}