When funds are held, merchants are required to confirm or cancel the payment within 5 days.
M4 service does not automatically confirm or cancel held payments after this period.
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:
URL where the payer will be redirected after unsuccessful invoice payment.
Example:
"https://your-domain.com/status/failed/"
success_url
string<uri>
URL where the payer will be redirected after successful invoice payment.
Example:
"https://your-domain.com/status/success/"
callback_url
string<uri>
URL where the notification about successful payment will be sent.
Example:
"https://your-domain.com/status/callback/"
callback_rejected_url
string<uri>
URL where the notification about unsuccessful payment will be sent.
Example:
"https://your-domain.com/status/rejected/"
expires_at
string<date-time>
Invoice expiration date in ISO 8601 format.
If invoice is not paid until this date, subsequent invoice payment will not be possible.
Example:
"2026-06-01T00:00:00Z"
card
object
Bank card details should be sent when:
You have a PCI DSS certificate
You do not need a page on the M4 side to get card details from the buyer
In case the payment way to the cards is used and the card data is not transmitted, the response to the request will contain a link to redirect the buyer to enter the card details.
Also, method, url and data will be filled in if the user needs to be redirected to pass the 3DSecure check.
Show child attributes
issue_payment_token
boolean
This parameter is used to generate a payment token. More details invoice/recurrent
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation","colors":{"primary":"#0D9373"},"favicon":"https://mintcdn.com/m4-2ec76035/BifHyYq41eYcQ-Qt/images/favicon.png?fit=max\u0026auto=format\u0026n=BifHyYq41eYcQ-Qt\u0026q=85\u0026s=5fe5c484eb0401d1c25ff4c201a85de0","api":{},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"m4-2ec76035","hasAudioNarration":false,"actualSubdomain":"m4-2ec76035","customDomains":["docs.m4psp.com"],"gitSource":{"type":"github","owner":"stereohead87","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adb530a935ad58d7118762e","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"Payments","count":10},{"language":"default","tag":"Withdraws","count":8},{"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":"Disbursement bank codes","count":1},{"language":"default","tag":"List of possible errors","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/invoice-create/funds-hold-two-stage-payments","slug":"/api-reference/invoice-create/funds-hold-two-stage-payments","pageMetadata":{"title":"Funds hold (two-stage payments)","description":"\u003cdiv class=\"attention\">This feature is available only after approval by the manager.\u003c/div>\n\n*First step of two-step payment.*\n\nFirst step is performed according to the scheme [invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAfter successful creation and payment of the invoice, [status](/invoice-statuses) will be equal to **8 (Invoice funds are on hold in the payment system)**.\n\nTo complete the funds receipt operation, execute [invoice/charge](/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge) or to cancel,\nexecute [invoice/unhold](/api-reference/invoice-create/cancellation-of-funds-holding).\n\n\u003cdiv class=\"warning\">\nWhen funds are held, merchants are required to confirm or cancel the payment within 5 days.\nM4 service does not automatically confirm or cancel held payments after this period.\n\nThe funds holding period cannot exceed 5 days.\n\u003c/div>\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `amount`\n* `currency`\n* `payway`\n* `shop_id`\n* `shop_order_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /invoice/hold","href":"/api-reference/invoice-create/funds-hold-two-stage-payments","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 em: \"em\",\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(\"div\", {\n class: \"attention\",\n children: \"This feature is available only after approval by the manager.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.em, {\n children: \"First step of two-step payment.\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"First step is performed according to the scheme \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/invoice-issue\",\n children: \"invoice/create\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"After successful creation and payment of the invoice, \", _jsx(_components.a, {\n href: \"/invoice-statuses\",\n children: \"status\"\n }), \" will be equal to \", _jsx(_components.strong, {\n children: \"8 (Invoice funds are on hold in the payment system)\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To complete the funds receipt operation, execute \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge\",\n children: \"invoice/charge\"\n }), \" or to cancel,\\nexecute \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/cancellation-of-funds-holding\",\n children: \"invoice/unhold\"\n }), \".\"]\n }), \"\\n\", _jsxs(\"div\", {\n class: \"warning\",\n children: [_jsx(_components.p, {\n children: \"When funds are held, merchants are required to confirm or cancel the payment within 5 days.\\nM4 service does not automatically confirm or cancel held payments after this period.\"\n }), _jsx(_components.p, {\n children: \"The funds holding period cannot exceed 5 days.\"\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: \"amount\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"currency\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"payway\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"shop_id\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"shop_order_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":"Funds hold (two-stage payments)","description":"\u003cdiv class=\"attention\">This feature is available only after approval by the manager.\u003c/div>\n\n*First step of two-step payment.*\n\nFirst step is performed according to the scheme [invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAfter successful creation and payment of the invoice, [status](/invoice-statuses) will be equal to **8 (Invoice funds are on hold in the payment system)**.\n\nTo complete the funds receipt operation, execute [invoice/charge](/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge) or to cancel,\nexecute [invoice/unhold](/api-reference/invoice-create/cancellation-of-funds-holding).\n\n\u003cdiv class=\"warning\">\nWhen funds are held, merchants are required to confirm or cancel the payment within 5 days.\nM4 service does not automatically confirm or cancel held payments after this period.\n\nThe funds holding period cannot exceed 5 days.\n\u003c/div>\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `amount`\n* `currency`\n* `payway`\n* `shop_id`\n* `shop_order_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /invoice/hold","href":"/api-reference/invoice-create/funds-hold-two-stage-payments","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Funds hold (two-stage payments)","operationId":"post-invoice-hold","responses":{"200":"8a3d546b-4eff-47ac-9950-dd12bb695ad3"},"security":["c21568a4-e62b-4d22-94e5-00ced2cf58f0"],"requestBody":"b06b4ec9-3e2c-4a07-bff5-c239fb2ca047","tags":["invoice-create"],"description":"\u003cdiv class=\"attention\">This feature is available only after approval by the manager.\u003c/div>\n\n*First step of two-step payment.*\n\nFirst step is performed according to the scheme [invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAfter successful creation and payment of the invoice, [status](/invoice-statuses) will be equal to **8 (Invoice funds are on hold in the payment system)**.\n\nTo complete the funds receipt operation, execute [invoice/charge](/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge) or to cancel,\nexecute [invoice/unhold](/api-reference/invoice-create/cancellation-of-funds-holding).\n\n\u003cdiv class=\"warning\">\nWhen funds are held, merchants are required to confirm or cancel the payment within 5 days.\nM4 service does not automatically confirm or cancel held payments after this period.\n\nThe funds holding period cannot exceed 5 days.\n\u003c/div>\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `amount`\n* `currency`\n* `payway`\n* `shop_id`\n* `shop_order_id`\n\u003c/div>\n","method":"post","type":"path","servers":["63ad5b0c-7576-40ed-8094-41432ebbc9b3","a6342d42-bd22-47b5-9453-b694f62f1b9b"],"path":"/invoice/hold","baseUrlOptions":["https://api.m4psp.com/gateway/v1/","https://api.test.cplus-int.tech/gateway/v1/"],"title":"Funds hold (two-stage payments)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Bank card payment","required":["client_ip","shop_id","amount","currency","payway","shop_order_id","sign"],"properties":{"shop_id":{"type":"integer","example":1520,"description":"Unique shop identifier in the M4 system.","isRequired":true,"uniqueKey":"shop_id","typeLabel":"integer"},"shop_order_id":{"type":"string","example":"5b0efa8a-153b-4421-abac-2aba4d772a86","description":"Order ID in your system. *Must be unique for each new invoice.*","maxLength":255,"isRequired":true,"uniqueKey":"shop_order_id","typeLabel":"string"},"amount":{"type":"string","title":"Amount received or withdrawn.","description":"Amount received or withdrawn.\n","minimum":0,"example":"6320.91","exclusiveMinimum":true,"isRequired":true,"uniqueKey":"amount","typeLabel":"string"},"currency":{"type":"number","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\n","title":"Currency identifier","example":840,"isRequired":true,"uniqueKey":"currency","typeLabel":"number"},"payway":{"type":"string","title":"Payment way","description":"Payment way for payment.\nInvoice currency depends on the specified payment way.\n\nThere are two ways to get a list of all payment directions available to the shop:\n* Execute API request \"Receiving payment methods for input\" [shop_input_config/shop](/api-reference/invoice-create/getting-payment-methods-for-input).\n* Request register from the support service.\n","maxLength":150,"pattern":"^[A-Za-z_,\\[\\]]+$","example":"card_payway_usd","isRequired":true,"uniqueKey":"payway","typeLabel":"string"},"client_ip":{"type":"string","format":"IPv4","example":"192.168.1.1","description":"Payer IP address","isRequired":true,"uniqueKey":"client_ip","typeLabel":"string\u003cIPv4>"},"description":{"type":"string","description":"Optional payment description.","example":"Payment for shop_id=1520","maxLength":255,"uniqueKey":"description","typeLabel":"string"},"failed_url":{"type":"string","description":"URL where the payer will be redirected after unsuccessful invoice payment.","format":"uri","example":"https://your-domain.com/status/failed/","uniqueKey":"failed_url","typeLabel":"string\u003curi>"},"success_url":{"type":"string","format":"uri","example":"https://your-domain.com/status/success/","description":"URL where the payer will be redirected after successful invoice payment.","uniqueKey":"success_url","typeLabel":"string\u003curi>"},"callback_url":{"type":"string","description":"URL where the notification about successful payment will be sent.","format":"uri","example":"https://your-domain.com/status/callback/","uniqueKey":"callback_url","typeLabel":"string\u003curi>"},"callback_rejected_url":{"type":"string","description":"URL where the notification about unsuccessful payment will be sent.","format":"uri","example":"https://your-domain.com/status/rejected/","uniqueKey":"callback_rejected_url","typeLabel":"string\u003curi>"},"expires_at":{"title":"\u003cISO 8601>","type":"string","format":"date-time","example":"2026-06-01T00:00:00Z","description":"Invoice expiration date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.\nIf invoice is not paid until this date, subsequent invoice payment will not be possible.\n","uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"card":{"type":"object","description":"Bank card details should be sent when:\n- You have a PCI DSS certificate\n- You do not need a page on the M4 side to get card details from the buyer\n\nIn case the payment way to the cards is used and the card data is not transmitted, the response to the request will contain a link to redirect the buyer to enter the card details.\nAlso, `method`, `url` and `data` will be filled in if the user needs to be redirected to pass the 3DSecure check.","properties":{"number":{"type":"string","description":"Bank Card number","example":"5395455214142417","isRequired":true,"uniqueKey":"card.number","typeLabel":"string"},"expiry_month":{"type":"string","pattern":"(^0?[1-9]{1}$)|(^1[012]{1}$)","description":"Bank card expiration month","example":"08","isRequired":true,"uniqueKey":"card.expiry_month","typeLabel":"string"},"expiry_year":{"type":"string","description":"Bank card expiration year","pattern":"^\\d{2}$","example":"30","isRequired":true,"uniqueKey":"card.expiry_year","typeLabel":"string"},"cvv":{"type":"string","description":"Secure code","example":"184","minLength":3,"maxLength":4,"isRequired":true,"uniqueKey":"card.cvv","typeLabel":"string"},"cardholder":{"type":"string","pattern":"^[0-9A-Z-/ _.']{1,26}$","description":"Cardholder name. If name is not provided default value «Card Holder» will be used","example":"ADAM SMITH","uniqueKey":"card.cardholder","typeLabel":"string"}},"required":["number","expiry_month","expiry_year","cvv"],"uniqueKey":"card","typeLabel":"object"},"issue_payment_token":{"type":"boolean","example":false,"description":"This parameter is used to generate a payment token. More details [invoice/recurrent](/invoice-recurrent)","uniqueKey":"issue_payment_token","typeLabel":"boolean"},"client_info":{"type":"object","description":"Payer browser information.\n\nSee [Payer Browser Authentication for 3D Secure](#payer-browser-authentication-for-3d-secure) for the details of the data gathering.\n","properties":{"browser_accept_header":{"type":"string","description":"Exact HTTP Accept header content as sent by the Payer's browser to Merchant's site.\\\n","example":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8","uniqueKey":"client_info.browser_accept_header","typeLabel":"string"},"browser_java_enabled":{"type":"boolean","description":"The ability to execute Java in a browser.\\\nIt is recommended to obtain browser values from the global object `navigator`: `navigator.javaEnabled`.\n","example":false,"uniqueKey":"client_info.browser_java_enabled","typeLabel":"boolean"},"browser_javascript_enabled":{"type":"boolean","description":"The ability to execute JavaScript in a browser.\\\nIf the value is not provided, the default value is `true` is set.\n","example":true,"uniqueKey":"client_info.browser_javascript_enabled","typeLabel":"boolean"},"browser_language":{"type":"string","description":"Browser language according to the [IETF BCP47](https://en.wikipedia.org/wiki/IETF_language_tag) format.\\\nIt is recommended to obtain browser values from the global object `navigator`: `navigator.language`.\\\nExample: `\"en\"`\n","example":"en","uniqueKey":"client_info.browser_language","typeLabel":"string"},"browser_color_depth":{"type":"string","description":"The value of the device color depth.\\\nIt is recommended to obtain browser values from the global object `screen`: `screen.colorDepth`.\\\n","example":"24","uniqueKey":"client_info.browser_color_depth","typeLabel":"string"},"browser_screen_height":{"type":"string","description":"Screen height in pixels.\\\nIt is recommended to obtain browser values from the global object `screen`: `screen.height`.\\\n","example":"800","uniqueKey":"client_info.browser_screen_height","typeLabel":"string"},"browser_screen_width":{"type":"string","description":"Screen width in pixels.\\\nIt is recommended to obtain browser values from the global object `screen`: `screen.width`.\\\n","example":"480","uniqueKey":"client_info.browser_screen_width","typeLabel":"string"},"browser_tz":{"type":"string","description":"Browser time zone in minutes from UTC.\\\nRecommendation to obtain browser TZ values: call the `getTimezoneOffset()` method. For UTC+2 use -120, for UTC-4 use 240.\\\n","example":"-120","uniqueKey":"client_info.browser_tz","typeLabel":"string"},"browser_user_agent":{"type":"string","description":"Browser User Agent.\\\nIt is recommended to obtain browser values from the global object `navigator`: `navigator.userAgent`.\\\n","example":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15","uniqueKey":"client_info.browser_user_agent","typeLabel":"string"},"challenge_window_size":{"type":"string","description":"Enum: `\"01\"`, `\"02\"`, `\"03\"`, `\"04\"`, `\"05\"`.\\\nThe accepted values of the window size for the 3DSecure check:\n* 250 x 400 = `\"01\"`\n* 390 x 400 = `\"02\"`\n* 500 x 600 = `\"03\"`\n* 600 x 400 = `\"04\"`\n* Full screen = `\"05\"`\n\nIf the value is not provided, the default value `\"05\"` is set. \n","example":"05","uniqueKey":"client_info.challenge_window_size","typeLabel":"string"}},"uniqueKey":"client_info","typeLabel":"object"}},"uniqueKey":"","typeLabel":"Bank card payment · object"},"examples":{"Example":{"title":"Example","value":{"shop_id":1520,"shop_order_id":"5b0efa8a-153b-4421-abac-2aba4d772a86","amount":"6320.91","currency":840,"payway":"card_payway_usd","client_ip":"192.168.1.1","description":"Payment for shop_id=1520","failed_url":"https://your-domain.com/status/failed/","success_url":"https://your-domain.com/status/success/","callback_url":"https://your-domain.com/status/callback/","callback_rejected_url":"https://your-domain.com/status/rejected/","expires_at":"2026-06-01T00:00:00Z","issue_payment_token":false,"client_info":{"browser_accept_header":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8","browser_java_enabled":false,"browser_javascript_enabled":true,"browser_language":"en","browser_color_depth":"24","browser_screen_height":"800","browser_screen_width":"480","browser_tz":"-120","browser_user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15","challenge_window_size":"05"}}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"responses":{"8a3d546b-4eff-47ac-9950-dd12bb695ad3":{"description":"","x-summary":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Successful response","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":{"title":"Invoice payment form","type":"object","description":"","properties":{"data":{"oneOf":[{"example":{"MD":"4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c","PaReq":"7xR2wM9qL1vK5bN4pZ8cC3fG6hJ0oO1iI3sD5aA7eE9tT2yY4uU6rR8wW0qQ2mM4nN6bB8vV0cC2xX4zZ6lL8kK0jJ2hH4gG6fF8dD0sS2aA4pP6oO8iI0uU2yY4tT6rR8eE0wW2qQ4mM6nN8bB0vV2cC4xX6zZ8lL0kK2jJ4hH6gG8fF0dD2sS4aA6pP8oO0iI2uU4yY6tT8rR0eE2wW4qQ6mM8nN0bB2vV4cC6xX8zZ0lL2kK4jJ6hH8gG0fF2dD4sS6aA8pP0oO2iI4uU6yY8tT0rR2eE4wW6qQ8mM0nN2bB4vV6cC8xX0zZ2lL4kK6jJ8hH0gG2fF4dD6sS8aA0pP2oO4iI6uU8yY0tT2rR4eE6wW8qQ0mM2nN4bB6vV8cC0xX2zZ4lL6kK8jJ0hH2gG4fF6dD8sS0aA2pP4oO6iI8uU0yY2tT4rR6eE8wW0qQ2mM4nN6bB8vV0cC2xX","TermUrl":"https://test-api.domain.com/v1/invoice/finish3ds/4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c"},"type":"object","description":"Data to be sent using the `method` method to `url`. The fields below are indicated for example,\nthe real names of the fields and their number will differ depending on the payment system.\n","properties":{"key1":{"type":"string","uniqueKey":"oneOf.0.data.data.oneOf.0.key1","typeLabel":"string"},"key2":{"type":"string","uniqueKey":"oneOf.0.data.data.oneOf.0.key2","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.data.data.oneOf.0","typeLabel":"object"},{"example":{"MD":"4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c","PaReq":"7xR2wM9qL1vK5bN4pZ8cC3fG6hJ0oO1iI3sD5aA7eE9tT2yY4uU6rR8wW0qQ2mM4nN6bB8vV0cC2xX4zZ6lL8kK0jJ2hH4gG6fF8dD0sS2aA4pP6oO8iI0uU2yY4tT6rR8eE0wW2qQ4mM6nN8bB0vV2cC4xX6zZ8lL0kK2jJ4hH6gG8fF0dD2sS4aA6pP8oO0iI2uU4yY6tT8rR0eE2wW4qQ6mM8nN0bB2vV4cC6xX8zZ0lL2kK4jJ6hH8gG0fF2dD4sS6aA8pP0oO2iI4uU6yY8tT0rR2eE4wW6qQ8mM0nN2bB4vV6cC8xX0zZ2lL4kK6jJ8hH0gG2fF4dD6sS8aA0pP2oO4iI6uU8yY0tT2rR4eE6wW8qQ0mM2nN4bB6vV8cC0xX2zZ4lL6kK8jJ0hH2gG4fF6dD8sS0aA2pP4oO6iI8uU0yY2tT4rR6eE8wW0qQ2mM4nN6bB8vV0cC2xX","TermUrl":"https://test-api.domain.com/v1/invoice/finish3ds/4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c"},"type":"null","description":"Data to be sent using the `method` method to `url`. The fields below are indicated for example,\nthe real names of the fields and their number will differ depending on the payment system.\n","properties":{"key1":{"type":"string"},"key2":{"type":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.data.data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.data","typeLabel":"object | null"},"id":{"type":"number","example":340198,"description":"Unique invoice identifier in M4 system","isRequired":true,"uniqueKey":"oneOf.0.data.id","typeLabel":"number"},"method":{"oneOf":[{"type":"string","description":"Method of sending `data` to `url`. If you received `null`, then you do not need to redirect to the payment form.","enum":["GET","POST"],"example":"POST","isRequired":true,"uniqueKey":"oneOf.0.data.method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Method of sending `data` to `url`. If you received `null`, then you do not need to redirect to the payment form.","enum":["GET","POST"],"example":"POST","isRequired":true,"uniqueKey":"oneOf.0.data.method.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.method","typeLabel":"enum\u003cstring> | null"},"url":{"oneOf":[{"type":"string","format":"uri","example":"https://test-checkout.domain.com/form/","description":"URL subject to which the contents of the `data` field should be sent by the `method`. If `null` is received, then you do not need to send it.","isRequired":true,"uniqueKey":"oneOf.0.data.url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","example":"https://test-checkout.domain.com/form/","description":"URL subject to which the contents of the `data` field should be sent by the `method`. If `null` is received, then you do not need to send it.","isRequired":true,"uniqueKey":"oneOf.0.data.url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.url","typeLabel":"string\u003curi> | null"}},"required":["data","id","method","url"],"isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"Invoice payment form · object"}},"uniqueKey":"oneOf.0","typeLabel":"Successful response · 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 = 1520) is not found","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":"Successful response · object | Error response · object"},"examples":{"Example":{"title":"Example","value":{"result":true,"message":"Ok","error_code":0,"data":{"data":{"MD":"4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c","PaReq":"7xR2wM9qL1vK5bN4pZ8cC3fG6hJ0oO1iI3sD5aA7eE9tT2yY4uU6rR8wW0qQ2mM4nN6bB8vV0cC2xX4zZ6lL8kK0jJ2hH4gG6fF8dD0sS2aA4pP6oO8iI0uU2yY4tT6rR8eE0wW2qQ4mM6nN8bB0vV2cC4xX6zZ8lL0kK2jJ4hH6gG8fF0dD2sS4aA6pP8oO0iI2uU4yY6tT8rR0eE2wW4qQ6mM8nN0bB2vV4cC6xX8zZ0lL2kK4jJ6hH8gG0fF2dD4sS6aA8pP0oO2iI4uU6yY8tT0rR2eE4wW6qQ8mM0nN2bB4vV6cC8xX0zZ2lL4kK6jJ8hH0gG2fF4dD6sS8aA0pP2oO4iI6uU8yY0tT2rR4eE6wW8qQ0mM2nN4bB6vV8cC0xX2zZ4lL6kK8jJ0hH2gG4fF6dD8sS0aA2pP4oO6iI8uU0yY2tT4rR6eE8wW0qQ2mM4nN6bB8vV0cC2xX","TermUrl":"https://test-api.domain.com/v1/invoice/finish3ds/4a9f8b2c6d1e0f7a3b5c8d2e9f0a1b3c"},"id":340198,"method":"POST","url":"https://test-checkout.domain.com/form/"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c21568a4-e62b-4d22-94e5-00ced2cf58f0":{"Request signature":{"type":"apiKey","in":"requestBody","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\": 1520,\n \"shop_order_id\" : \"5b0efa8a-153b-4421-abac-2aba4d772a86\",\n \"amount\": \"6320.91\",\n \"currency\": 840,\n \"payway\": \"card_invoice_usd\",\n \"description\": \"Payment for shop_id=1520\",\n \"sign\": \"77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6\"\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`\"6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-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 = '6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6'\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":[],"schemeName":"Request signature"}}},"servers":{"63ad5b0c-7576-40ed-8094-41432ebbc9b3":{"url":"https://api.m4psp.com/gateway/v1/","description":"The production API server"},"a6342d42-bd22-47b5-9453-b694f62f1b9b":{"url":"https://api.test.cplus-int.tech/gateway/v1/","description":"The test API server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"requestBody","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\": 1520,\n \"shop_order_id\" : \"5b0efa8a-153b-4421-abac-2aba4d772a86\",\n \"amount\": \"6320.91\",\n \"currency\": 840,\n \"payway\": \"card_invoice_usd\",\n \"description\": \"Payment for shop_id=1520\",\n \"sign\": \"77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6\"\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`\"6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-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 = '6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6'\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":[],"schemeName":"Request signature"},"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\": 1520,\n \"shop_order_id\" : \"5b0efa8a-153b-4421-abac-2aba4d772a86\",\n \"amount\": \"6320.91\",\n \"currency\": 840,\n \"payway\": \"card_invoice_usd\",\n \"description\": \"Payment for shop_id=1520\",\n \"sign\": \"77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6\"\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`\"6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-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 = '6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-secret-key'\n>>> import hashlib\n>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()\n>>> print(sign)\n'77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6'\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":"Request signature","name":"sign"}],"title":"Request signature"}]},"originalFileLocation":"openapiv2.yaml"},"subdomain":"m4-2ec76035","siteName":"Documentation","title":"Funds hold (two-stage payments) - Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T12:29:11.281Z","originalFileLocation":"api-reference/invoice-create/funds-hold-two-stage-payments.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=\"This feature is available only after approval by the manager. First step of two-step payment. First step is performed according to the scheme invoice/create. After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system). To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold. When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period. The funds holding period cannot exceed 5 days. Fields involved in request signature generation: amount currency payway shop_id * shop_order_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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/m4-2ec76035/Un2SLYgPAIeM5a2K/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Funds hold (two-stage payments) - Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"This feature is available only after approval by the manager. First step of two-step payment. First step is performed according to the scheme invoice/create. After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system). To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold. When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period. The funds holding period cannot exceed 5 days. Fields involved in request signature generation: amount currency payway shop_id * shop_order_id\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://m4-2ec76035.mintlify.site/_mintlify/api/og/v2?division=Invoice+issue+%28payment+creation%29\u0026amp;title=Funds+hold+%28two-stage+payments%29\u0026amp;description=%3Cdiv+class%3D%22attention%22%3EThis+feature+is+available+only+after+approval+by+the+manager.%3C%2Fdiv%3E%0A%0A*First+step+of+two-step+payment.*%0A%0AFirst+step+is+performed+according\u0026amp;theme=3fa94f698222e7871f530c6c\u0026amp;signature=1ba0742bfe0ada00abed20c96c2e827660234c20e669bac19e716f071233a6de\">\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=\"Funds hold (two-stage payments) - Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This feature is available only after approval by the manager. First step of two-step payment. First step is performed according to the scheme invoice/create. After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system). To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold. When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period. The funds holding period cannot exceed 5 days. Fields involved in request signature generation: amount currency payway shop_id * shop_order_id\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://m4-2ec76035.mintlify.site/_mintlify/api/og/v2?division=Invoice+issue+%28payment+creation%29\u0026amp;title=Funds+hold+%28two-stage+payments%29\u0026amp;description=%3Cdiv+class%3D%22attention%22%3EThis+feature+is+available+only+after+approval+by+the+manager.%3C%2Fdiv%3E%0A%0A*First+step+of+two-step+payment.*%0A%0AFirst+step+is+performed+according\u0026amp;theme=3fa94f698222e7871f530c6c\u0026amp;signature=1ba0742bfe0ada00abed20c96c2e827660234c20e669bac19e716f071233a6de\">\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/m4-2ec76035/Un2SLYgPAIeM5a2K/_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.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments\">\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/funds-hold-two-stage-payments.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.m4psp.com/#organization\",\"name\":\"Documentation\",\"url\":\"https://docs.m4psp.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.m4psp.com#website\",\"name\":\"Documentation\",\"url\":\"https://docs.m4psp.com\",\"publisher\":{\"@id\":\"https://docs.m4psp.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments#webpage\",\"url\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments\",\"name\":\"Funds hold (two-stage payments)\",\"description\":\"This feature is available only after approval by the manager. First step of two-step payment. First step is performed according to the scheme invoice/create. After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system). To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold. When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period. The funds holding period cannot exceed 5 days. Fields involved in request signature generation: amount currency payway shop_id * shop_order_id\",\"dateModified\":\"2026-10-23T12:29:11.281Z\",\"isPartOf\":{\"@id\":\"https://docs.m4psp.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Payments\",\"item\":\"https://docs.m4psp.com/api-reference/invoice-create/invoice-preliminary-calculation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Invoice issue (payment creation)\",\"item\":\"https://docs.m4psp.com/invoice-create\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Funds hold (two-stage payments)\",\"item\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments#apireference\",\"headline\":\"Funds hold (two-stage payments)\",\"name\":\"Funds hold (two-stage payments)\",\"description\":\"This feature is available only after approval by the manager. First step of two-step payment. First step is performed according to the scheme invoice/create. After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system). To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold. When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period. The funds holding period cannot exceed 5 days. Fields involved in request signature generation: amount currency payway shop_id * shop_order_id\",\"url\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments\",\"mainEntityOfPage\":{\"@id\":\"https://docs.m4psp.com/api-reference/invoice-create/funds-hold-two-stage-payments#webpage\"},\"dateModified\":\"2026-10-23T12:29:11.281Z\",\"publisher\":{\"@id\":\"https://docs.m4psp.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.m4psp.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/invoice-create/funds-hold-two-stage-payments.md","siteName":"Documentation","nav":{"global":null,"groups":[{"group":"Overview","pages":[{"title":"M4 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":"/openapiv2.yaml post /invoice/try","href":"/api-reference/invoice-create/invoice-preliminary-calculation"},{"title":"Invoice issue","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /invoice/create","href":"/api-reference/invoice-create/invoice-issue"},{"title":"Issued invoice status request","description":"To get the status and up-to-date information regarding issued invoice.\n\n\u003cdiv class=\"success\">\n\u003cp>Fields involved in request signature generation:\u003c/p>\n\n* `now`\n* `shop_id`\n* `shop_order_id`\n\u003c/div>\n","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /invoice/check","href":"/api-reference/invoice-create/issued-invoice-status-request"},{"title":"Funds hold (two-stage payments)","deprecated":null,"version":null,"openapi":"/openapiv2.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":"/openapiv2.yaml post /invoice/charge","href":"/api-reference/invoice-create/confirmation-of-funds-withdrawal-charge"},{"title":"Cancellation of funds holding","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /invoice/unhold","href":"/api-reference/invoice-create/cancellation-of-funds-holding"},{"title":"Getting payment methods for input","deprecated":null,"version":null,"openapi":"/openapiv2.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":"/openapiv2.yaml post /invoice/create-refund","href":"/api-reference/invoice-refund/invoice-refund"},{"title":"Invoice refund status","deprecated":null,"version":null,"openapi":"/openapiv2.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":"/openapiv2.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":"/openapiv2.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":"/openapiv2.yaml post /withdraw/create","href":"/api-reference/withdraw-create/payout-creation"},{"title":"Payout status request by ID of the payout created in M4 system","deprecated":null,"version":null,"openapi":"/openapiv2.yaml post /withdraw/status","href":"/api-reference/withdraw-create/payout-status-request-by-id-of-the-payout-created-in-m4-system"},{"title":"Payout status request by the shop payout number","deprecated":null,"version":null,"openapi":"/openapiv2.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":"/openapiv2.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":"Disbursement bank codes","expanded":false,"pages":[{"title":"Disbursement Bank Codes","href":"/disbursement-bank-codes"}]}]},{"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":"/openapiv2.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"}]}]}]},"basePath":"","title":"Funds hold (two-stage payments) - Documentation","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-NXj-Rqjv.js","utils-m0thOP-_.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D13EKcfm.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema--XTdfsEb.js","snippetPresets-D3s4lmAH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-ChURybxL.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DL8CiXq2.js","shallow-DI2-YB2E.js","getApiPlaygroundDisplay-DxbW7b_y.js","CodeSnippet-CiNYS0pP.js","CodeSnippets-BT87bThu.js","Page-DSpdRuhM.js","getPastedJson-F_g_IrFQ.js","icon-CCIG5BAs.js","MethodPill-DY3E0jwx.js","DuplicateIcon-BN88xnEg.js","createIcon-VCCc5HO5.js","DynamicMarkdown-CaSwclgK.js","SectionHeading-DXV8nWhc.js","axios-vUo_bRtp.js","Markdown-CV32Re6G.js","clsx-5ydLOnhV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-pFDdfjRe.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BUGO5bPJ.js"]}