Additional parameters can be transferred in the request, for example:
description – invoice description,
phone – phone number linked to the wallet;
account – card number;
The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request “Getting payment methods for input” shop_input_config/shop in the add_ons_config response field.
Redirecting to invoice payment forms
If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters).
The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field.
For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems).
An example of forming an HTML form using the jinja2 template language:
<form method="POST" action="{{ data['url'] }}"> {% for param, value in data['data'].items() %} <input name="{{ param }}" value="{{ value }}" /> {% endfor %}</form>
For the data specified in the example response below, the following HTML form will be obtained:
In case of "method": "GET" it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field.
The URL is generated according to the following algorithm:
An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd&payment_type=card&fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail&success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess
Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it.
Payer Browser Authentication for 3D Secure
For 3ds 2.0 payments with card data to be successful, the payer’s browser information must be collected.
You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create.
As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header.
If the payer’s browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect.
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:
You do not need a page on the Avanor 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.
{"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":[{"name":"kill-isr","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":"editor-v7-file-tree","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/invoice-create/invoice-issue","slug":"/api-reference/invoice-create/invoice-issue","pageMetadata":{"title":"Invoice issue","description":"Additional parameters can be transferred in the request, for example:\n\n* `description` – invoice description,\n* `phone` – phone number linked to the wallet;\n* `account` – card number;\n\nThe list of these parameters depends on the payway (`payway`). The required additional parameters for the payway can be found in the request \"Getting payment methods for input\" [shop_input_config/shop](/api-reference/invoice-create/getting-payment-methods-for-input) in the `add_ons_config` response field.\n\n### Redirecting to invoice payment forms\n\nIf the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the `data` field of the response. The `data.data` field contains the parameters to be transferred during redirection (in the form of `GET` or `POST` request parameters).\n\nThe redirection method depends on the `method` parameter. The generated request must be sent to the URL specified in the `url` field of the `data` field.\n\nFor example, if you receive a `POST` in the `method` parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems).\n\nAn example of forming an HTML form using the `jinja2` template language:\n\n```jinja2\n\u003cform method=\"POST\" action=\"{{ data['url'] }}\">\n {% for param, value in data['data'].items() %}\n \u003cinput name=\"{{ param }}\" value=\"{{ value }}\" />\n {% endfor %}\n\u003c/form>\n```\n\nFor the data specified in the example response below, the following HTML form will be obtained:\n\n```html\n\u003cform method=\"POST\" action=\"https://checkout.domain.com/form/\">\n \u003cinput name=\"transaction_id\" value=\"1047\" />\n \u003cinput name=\"payment_type\" value=\"card\" />\n \u003cinput name=\"fail_url\" value=\"https://example.com/payment/?status=fail\" />\n \u003cinput name=\"success_url\" value=\"https://example.com/payment/?status=success\" />\n \u003cinput type=\"submit\" />\n\u003c/form>\n```\n\nIn case of `\"method\": \"GET\"` it is required to perform HTTP redirect to the URL with the parameters (using [percent‐encoding](https://en.wikipedia.org/wiki/Percent-encoding)), received in the `data.data` response field.\n\nThe URL is generated according to the following algorithm:\n\n```python\nimport urllib.parse\nredirect_url = '{url}?{parameters}'.format(url=data['url'], parameters=urllib.parse.urlencode(data['data']))\n```\n\nAn example of the formed URL: `https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess`\n\n\u003cdiv class=\"attention\">\nPlease note that the parameters \u003ccode>failed_url\u003c/code>, \u003ccode>success_url\u003c/code>, \u003ccode>callback_url\u003c/code>, \u003ccode>callback_rejected_url\u003c/code> specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it.\n\u003c/div>\n\n### Payer Browser Authentication for 3D Secure\n\nFor 3ds 2.0 payments with card data to be successful, the payer's browser information must be collected.\n\nYou can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request [/invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAs an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the `client_info` fields provided below do not include `browser_accept_header`.\n\n```js\nlet client_info = {\n \"browser_java_enabled\": window.navigator.javaEnabled(),\n \"browser_javascript_enabled\": true,\n \"browser_language\": window.navigator.language,\n \"browser_color_depth\": window.screen.colorDepth.toString(),\n \"browser_screen_height\": window.screen.height.toString(),\n \"browser_screen_width\": window.screen.width.toString(),\n \"browser_tz\": (new Date()).getTimezoneOffset().toString(),\n \"browser_user_agent\": window.navigator.userAgent,\n \"challenge_window_size\": \"05\"\n}\n```\n\nIf the payer's browser data is not provided in the [/invoice/create](/api-reference/invoice-create/invoice-issue) request, it will be necessary to redirect the payer to our service as an intermediate step using a `data` object, so that our service can collect the necessary browser data. See [Redirecting to invoice payment forms](/api-reference/invoice-create/invoice-issue#redirecting-to-invoice-payment-forms) for the details on redirect.\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":"/openapi.yaml post /invoice/create","href":"/api-reference/invoice-create/invoice-issue","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 pre: \"pre\",\n span: \"span\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Additional parameters can be transferred in the request, for example:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"description\"\n }), \" – invoice description,\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"phone\"\n }), \" – phone number linked to the wallet;\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"account\"\n }), \" – card number;\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The list of these parameters depends on the payway (\", _jsx(_components.code, {\n children: \"payway\"\n }), \"). The required additional parameters for the payway can be found in the request “Getting payment methods for input” \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/getting-payment-methods-for-input\",\n children: \"shop_input_config/shop\"\n }), \" in the \", _jsx(_components.code, {\n children: \"add_ons_config\"\n }), \" response field.\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Redirecting to invoice payment forms\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the \", _jsx(_components.code, {\n children: \"data\"\n }), \" field of the response. The \", _jsx(_components.code, {\n children: \"data.data\"\n }), \" field contains the parameters to be transferred during redirection (in the form of \", _jsx(_components.code, {\n children: \"GET\"\n }), \" or \", _jsx(_components.code, {\n children: \"POST\"\n }), \" request parameters).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The redirection method depends on the \", _jsx(_components.code, {\n children: \"method\"\n }), \" parameter. The generated request must be sent to the URL specified in the \", _jsx(_components.code, {\n children: \"url\"\n }), \" field of the \", _jsx(_components.code, {\n children: \"data\"\n }), \" field.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"For example, if you receive a \", _jsx(_components.code, {\n children: \"POST\"\n }), \" in the \", _jsx(_components.code, {\n children: \"method\"\n }), \" parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"An example of forming an HTML form using the \", _jsx(_components.code, {\n children: \"jinja2\"\n }), \" template language:\"]\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"6\",\n language: \"text\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"text\",\n children: _jsxs(_components.code, {\n language: \"text\",\n numberOfLines: \"6\",\n children: [_jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n children: \"\u003cform method=\\\"POST\\\" action=\\\"{{ data['url'] }}\\\">\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n children: \" {% for param, value in data['data'].items() %}\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n children: \" \u003cinput name=\\\"{{ param }}\\\" value=\\\"{{ value }}\\\" />\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n children: \" {% endfor %}\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n children: \"\u003c/form>\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {})\n })]\n })\n })\n }), \"\\n\", _jsx(_components.p, {\n children: \"For the data specified in the example response below, the following HTML form will be obtained:\"\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"7\",\n language: \"html\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"html\",\n children: _jsxs(_components.code, {\n language: \"html\",\n numberOfLines: \"7\",\n children: [_jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \"\u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"form\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" method\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"POST\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" action\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"https://checkout.domain.com/form/\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \">\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" \u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"input\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" name\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"transaction_id\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" value\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"1047\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" />\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" \u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"input\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" name\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"payment_type\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" value\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"card\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" />\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" \u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"input\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" name\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"fail_url\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" value\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"https://example.com/payment/?status=fail\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" />\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" \u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"input\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" name\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"success_url\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" value\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"https://example.com/payment/?status=success\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" />\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" \u003c\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"input\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" type\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"submit\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \" />\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \"\u003c/\"\n }), _jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"form\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#808080\"\n },\n children: \">\"\n })]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"In case of \", _jsx(_components.code, {\n children: \"\\\"method\\\": \\\"GET\\\"\"\n }), \" it is required to perform HTTP redirect to the URL with the parameters (using \", _jsx(_components.a, {\n href: \"https://en.wikipedia.org/wiki/Percent-encoding\",\n children: \"percent‐encoding\"\n }), \"), received in the \", _jsx(_components.code, {\n children: \"data.data\"\n }), \" response field.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"The URL is generated according to the following algorithm:\"\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"2\",\n language: \"python\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"python\",\n children: _jsxs(_components.code, {\n language: \"python\",\n numberOfLines: \"2\",\n children: [_jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#C586C0\"\n },\n children: \"import\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" urllib.parse\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"redirect_url \"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" '\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"{url}\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"?\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"{parameters}\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"'\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".format(\"\n }), _jsx(_components.span, {\n style: {\n color: \"#953800\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"url\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"data[\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"'url'\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"], \"\n }), _jsx(_components.span, {\n style: {\n color: \"#953800\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"parameters\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"=\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"urllib.parse.urlencode(data[\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"'data'\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"]))\"\n })]\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"An example of the formed URL: \", _jsx(_components.code, {\n children: \"https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess\"\n })]\n }), \"\\n\", _jsx(\"div\", {\n class: \"attention\",\n children: _jsxs(_components.p, {\n children: [\"Please note that the parameters \", _jsx(\"code\", {\n children: \"failed_url\"\n }), \", \", _jsx(\"code\", {\n children: \"success_url\"\n }), \", \", _jsx(\"code\", {\n children: \"callback_url\"\n }), \", \", _jsx(\"code\", {\n children: \"callback_rejected_url\"\n }), \" specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it.\"]\n })\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Payer Browser Authentication for 3D Secure\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"For 3ds 2.0 payments with card data to be successful, the payer’s browser information must be collected.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/invoice-issue\",\n children: \"/invoice/create\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the \", _jsx(_components.code, {\n children: \"client_info\"\n }), \" fields provided below do not include \", _jsx(_components.code, {\n children: \"browser_accept_header\"\n }), \".\"]\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"11\",\n language: \"javascript\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"javascript\",\n children: _jsxs(_components.code, {\n language: \"javascript\",\n numberOfLines: \"11\",\n children: [_jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"let\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" client_info\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" =\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" {\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_java_enabled\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"navigator\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"javaEnabled\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"(),\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_javascript_enabled\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \" true\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_language\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"navigator\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"language\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_color_depth\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"screen\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"colorDepth\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"toString\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"(),\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_screen_height\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"screen\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"height\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"toString\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"(),\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_screen_width\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"screen\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"width\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"toString\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"(),\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_tz\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" (\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"new\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \" Date\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"()).\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"getTimezoneOffset\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"().\"\n }), _jsx(_components.span, {\n style: {\n color: \"#8250DF\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"toString\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"(),\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"browser_user_agent\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" window\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"navigator\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \".\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \"userAgent\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"challenge_window_size\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \":\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"05\\\"\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If the payer’s browser data is not provided in the \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/invoice-issue\",\n children: \"/invoice/create\"\n }), \" request, it will be necessary to redirect the payer to our service as an intermediate step using a \", _jsx(_components.code, {\n children: \"data\"\n }), \" object, so that our service can collect the necessary browser data. See \", _jsx(_components.a, {\n href: \"/api-reference/invoice-create/invoice-issue#redirecting-to-invoice-payment-forms\",\n children: \"Redirecting to invoice payment forms\"\n }), \" for the details on redirect.\"]\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\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":"Invoice issue","description":"Additional parameters can be transferred in the request, for example:\n\n* `description` – invoice description,\n* `phone` – phone number linked to the wallet;\n* `account` – card number;\n\nThe list of these parameters depends on the payway (`payway`). The required additional parameters for the payway can be found in the request \"Getting payment methods for input\" [shop_input_config/shop](/api-reference/invoice-create/getting-payment-methods-for-input) in the `add_ons_config` response field.\n\n### Redirecting to invoice payment forms\n\nIf the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the `data` field of the response. The `data.data` field contains the parameters to be transferred during redirection (in the form of `GET` or `POST` request parameters).\n\nThe redirection method depends on the `method` parameter. The generated request must be sent to the URL specified in the `url` field of the `data` field.\n\nFor example, if you receive a `POST` in the `method` parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems).\n\nAn example of forming an HTML form using the `jinja2` template language:\n\n```jinja2\n\u003cform method=\"POST\" action=\"{{ data['url'] }}\">\n {% for param, value in data['data'].items() %}\n \u003cinput name=\"{{ param }}\" value=\"{{ value }}\" />\n {% endfor %}\n\u003c/form>\n```\n\nFor the data specified in the example response below, the following HTML form will be obtained:\n\n```html\n\u003cform method=\"POST\" action=\"https://checkout.domain.com/form/\">\n \u003cinput name=\"transaction_id\" value=\"1047\" />\n \u003cinput name=\"payment_type\" value=\"card\" />\n \u003cinput name=\"fail_url\" value=\"https://example.com/payment/?status=fail\" />\n \u003cinput name=\"success_url\" value=\"https://example.com/payment/?status=success\" />\n \u003cinput type=\"submit\" />\n\u003c/form>\n```\n\nIn case of `\"method\": \"GET\"` it is required to perform HTTP redirect to the URL with the parameters (using [percent‐encoding](https://en.wikipedia.org/wiki/Percent-encoding)), received in the `data.data` response field.\n\nThe URL is generated according to the following algorithm:\n\n```python\nimport urllib.parse\nredirect_url = '{url}?{parameters}'.format(url=data['url'], parameters=urllib.parse.urlencode(data['data']))\n```\n\nAn example of the formed URL: `https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess`\n\n\u003cdiv class=\"attention\">\nPlease note that the parameters \u003ccode>failed_url\u003c/code>, \u003ccode>success_url\u003c/code>, \u003ccode>callback_url\u003c/code>, \u003ccode>callback_rejected_url\u003c/code> specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it.\n\u003c/div>\n\n### Payer Browser Authentication for 3D Secure\n\nFor 3ds 2.0 payments with card data to be successful, the payer's browser information must be collected.\n\nYou can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request [/invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAs an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the `client_info` fields provided below do not include `browser_accept_header`.\n\n```js\nlet client_info = {\n \"browser_java_enabled\": window.navigator.javaEnabled(),\n \"browser_javascript_enabled\": true,\n \"browser_language\": window.navigator.language,\n \"browser_color_depth\": window.screen.colorDepth.toString(),\n \"browser_screen_height\": window.screen.height.toString(),\n \"browser_screen_width\": window.screen.width.toString(),\n \"browser_tz\": (new Date()).getTimezoneOffset().toString(),\n \"browser_user_agent\": window.navigator.userAgent,\n \"challenge_window_size\": \"05\"\n}\n```\n\nIf the payer's browser data is not provided in the [/invoice/create](/api-reference/invoice-create/invoice-issue) request, it will be necessary to redirect the payer to our service as an intermediate step using a `data` object, so that our service can collect the necessary browser data. See [Redirecting to invoice payment forms](/api-reference/invoice-create/invoice-issue#redirecting-to-invoice-payment-forms) for the details on redirect.\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":"/openapi.yaml post /invoice/create","href":"/api-reference/invoice-create/invoice-issue","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Invoice issue","operationId":"post-invoice-create","responses":{"200":"9b8d88d1-8a06-4c71-9374-43274042c0e9"},"security":["452921db-f536-4503-8f10-e01e1729fe60"],"requestBody":"45ff48f8-f091-4e7c-bded-b9e988b86c5f","tags":["invoice-create"],"description":"Additional parameters can be transferred in the request, for example:\n\n* `description` – invoice description,\n* `phone` – phone number linked to the wallet;\n* `account` – card number;\n\nThe list of these parameters depends on the payway (`payway`). The required additional parameters for the payway can be found in the request \"Getting payment methods for input\" [shop_input_config/shop](/api-reference/invoice-create/getting-payment-methods-for-input) in the `add_ons_config` response field.\n\n### Redirecting to invoice payment forms\n\nIf the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the `data` field of the response. The `data.data` field contains the parameters to be transferred during redirection (in the form of `GET` or `POST` request parameters).\n\nThe redirection method depends on the `method` parameter. The generated request must be sent to the URL specified in the `url` field of the `data` field.\n\nFor example, if you receive a `POST` in the `method` parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems).\n\nAn example of forming an HTML form using the `jinja2` template language:\n\n```jinja2\n\u003cform method=\"POST\" action=\"{{ data['url'] }}\">\n {% for param, value in data['data'].items() %}\n \u003cinput name=\"{{ param }}\" value=\"{{ value }}\" />\n {% endfor %}\n\u003c/form>\n```\n\nFor the data specified in the example response below, the following HTML form will be obtained:\n\n```html\n\u003cform method=\"POST\" action=\"https://checkout.domain.com/form/\">\n \u003cinput name=\"transaction_id\" value=\"1047\" />\n \u003cinput name=\"payment_type\" value=\"card\" />\n \u003cinput name=\"fail_url\" value=\"https://example.com/payment/?status=fail\" />\n \u003cinput name=\"success_url\" value=\"https://example.com/payment/?status=success\" />\n \u003cinput type=\"submit\" />\n\u003c/form>\n```\n\nIn case of `\"method\": \"GET\"` it is required to perform HTTP redirect to the URL with the parameters (using [percent‐encoding](https://en.wikipedia.org/wiki/Percent-encoding)), received in the `data.data` response field.\n\nThe URL is generated according to the following algorithm:\n\n```python\nimport urllib.parse\nredirect_url = '{url}?{parameters}'.format(url=data['url'], parameters=urllib.parse.urlencode(data['data']))\n```\n\nAn example of the formed URL: `https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess`\n\n\u003cdiv class=\"attention\">\nPlease note that the parameters \u003ccode>failed_url\u003c/code>, \u003ccode>success_url\u003c/code>, \u003ccode>callback_url\u003c/code>, \u003ccode>callback_rejected_url\u003c/code> specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it.\n\u003c/div>\n\n### Payer Browser Authentication for 3D Secure\n\nFor 3ds 2.0 payments with card data to be successful, the payer's browser information must be collected.\n\nYou can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request [/invoice/create](/api-reference/invoice-create/invoice-issue).\n\nAs an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the `client_info` fields provided below do not include `browser_accept_header`.\n\n```js\nlet client_info = {\n \"browser_java_enabled\": window.navigator.javaEnabled(),\n \"browser_javascript_enabled\": true,\n \"browser_language\": window.navigator.language,\n \"browser_color_depth\": window.screen.colorDepth.toString(),\n \"browser_screen_height\": window.screen.height.toString(),\n \"browser_screen_width\": window.screen.width.toString(),\n \"browser_tz\": (new Date()).getTimezoneOffset().toString(),\n \"browser_user_agent\": window.navigator.userAgent,\n \"challenge_window_size\": \"05\"\n}\n```\n\nIf the payer's browser data is not provided in the [/invoice/create](/api-reference/invoice-create/invoice-issue) request, it will be necessary to redirect the payer to our service as an intermediate step using a `data` object, so that our service can collect the necessary browser data. See [Redirecting to invoice payment forms](/api-reference/invoice-create/invoice-issue#redirecting-to-invoice-payment-forms) for the details on redirect.\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":["be4b38d3-8104-4d09-bdb9-2486472e433f","dc28d4e7-45f1-4d25-896f-c8c416ae9060"],"path":"/invoice/create","baseUrlOptions":["https://api.avanor.tech/gateway/v1","https://api.test.avanor.tech/gateway/v1"],"title":"Invoice issue","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Bank card payment","required":["client_ip","shop_id","amount","currency","payway","shop_order_id","sign"],"example":{"shop_id":202203,"shop_order_id":"389d4f2c-46b9-4164-bcc4-fbd51e00d445","amount":"105.45","currency":840,"payway":"payway_usd","client_ip":"192.168.0.1","description":"Description of example invoice","failed_url":"https://example.com/status/failed/","success_url":"https://example.com/status/success/","callback_url":"https://example.com/status/callback/","callback_rejected_url":"https://example.com/status/rejected/","expires_at":"2026-12-30T00:00:00Z","card":{"number":"4814651800997171","cardholder":"ELIZABETH JONES","expiry_month":"11","expiry_year":"34","cvv":"518"},"issue_payment_token":true,"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"}},"properties":{"shop_id":{"type":"integer","example":202203,"description":"Unique shop identifier in the Avanor system.","isRequired":true,"uniqueKey":"oneOf.0.shop_id","typeLabel":"integer"},"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.shop_order_id","typeLabel":"string"},"amount":{"type":"string","title":"Amount received or withdrawn.","description":"Amount received or withdrawn.\nExample: `\"105.45\"`\n","minimum":0,"example":"105.45","exclusiveMinimum":true,"isRequired":true,"uniqueKey":"oneOf.0.amount","typeLabel":"string"},"currency":{"type":"number","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\nExample: `840`\n","title":"Currency identifier","example":840,"isRequired":true,"uniqueKey":"oneOf.0.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":"payway_usd","isRequired":true,"uniqueKey":"oneOf.0.payway","typeLabel":"string"},"client_ip":{"type":"string","format":"IPv4","example":"192.168.0.1","description":"Payer IP address","isRequired":true,"uniqueKey":"oneOf.0.client_ip","typeLabel":"string\u003cIPv4>"},"description":{"type":"string","description":"Optional payment description.","example":"Description of example invoice","maxLength":255,"uniqueKey":"oneOf.0.description","typeLabel":"string"},"failed_url":{"type":"string","description":"URL where the payer will be redirected after unsuccessful invoice payment.","format":"uri","example":"https://example.com/status/failed/","uniqueKey":"oneOf.0.failed_url","typeLabel":"string\u003curi>"},"success_url":{"type":"string","format":"uri","example":"https://example.com/status/success/","description":"URL where the payer will be redirected after successful invoice payment.","uniqueKey":"oneOf.0.success_url","typeLabel":"string\u003curi>"},"callback_url":{"type":"string","description":"URL where the notification about successful payment will be sent.","format":"uri","example":"https://example.com/status/callback/","uniqueKey":"oneOf.0.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://example.com/status/rejected/","uniqueKey":"oneOf.0.callback_rejected_url","typeLabel":"string\u003curi>"},"expires_at":{"title":"\u003cISO 8601>","type":"string","format":"date-time","example":"2026-12-30T00: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":"oneOf.0.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 Avanor 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.","example":{"number":"4814651800997171","cardholder":"ELIZABETH JONES","expiry_month":"11","expiry_year":"34","cvv":"518"},"properties":{"number":{"type":"string","description":"Bank Card number","example":"4814651800997171","isRequired":true,"uniqueKey":"oneOf.0.card.number","typeLabel":"string"},"expiry_month":{"type":"string","pattern":"(^0?[1-9]{1}$)|(^1[012]{1}$)","description":"Bank card expiration month","example":"11","isRequired":true,"uniqueKey":"oneOf.0.card.expiry_month","typeLabel":"string"},"expiry_year":{"type":"string","description":"Bank card expiration year","pattern":"^\\d{2}$","example":"34","isRequired":true,"uniqueKey":"oneOf.0.card.expiry_year","typeLabel":"string"},"cvv":{"type":"string","description":"Secure code","example":"518","minLength":3,"maxLength":4,"isRequired":true,"uniqueKey":"oneOf.0.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":"ELIZABETH JONES","uniqueKey":"oneOf.0.card.cardholder","typeLabel":"string"}},"required":["number","expiry_month","expiry_year","cvv"],"uniqueKey":"oneOf.0.card","typeLabel":"object"},"issue_payment_token":{"type":"boolean","example":true,"description":"This parameter is used to generate a payment token. More details [invoice/recurrent](/invoice-recurrent)","uniqueKey":"oneOf.0.issue_payment_token","typeLabel":"boolean"},"client_info":{"type":"object","description":"Payer browser information.\n\nSee [Payer Browser Authentication for 3D Secure](/api-reference/invoice-create/invoice-issue#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.\\\nExample: `\"text/html\"`\n","example":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8","uniqueKey":"oneOf.0.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":"oneOf.0.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":"oneOf.0.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":"oneOf.0.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`.\\\nExample: `\"24\"`\n","example":"24","uniqueKey":"oneOf.0.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`.\\\nExample: `\"800\"`\n","example":"800","uniqueKey":"oneOf.0.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`.\\\nExample: `\"480\"`\n","example":"480","uniqueKey":"oneOf.0.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.\\\nExample: `\"-120\"` for UTC+2, `\"240\"` for UTC-4\n","example":"-120","uniqueKey":"oneOf.0.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`.\\\nExample: `\"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\"`\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":"oneOf.0.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":"oneOf.0.client_info.challenge_window_size","typeLabel":"string"}},"uniqueKey":"oneOf.0.client_info","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"Bank card payment · object"},{"type":"object","title":"Invoice issue by payment token","required":["payment_token","shop_id","amount","currency","payway","shop_order_id","sign"],"properties":{"shop_id":{"type":"integer","example":202203,"description":"Unique shop identifier in the Avanor system.","isRequired":true,"uniqueKey":"oneOf.1.shop_id","typeLabel":"integer"},"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.1.shop_order_id","typeLabel":"string"},"amount":{"type":"string","title":"Amount received or withdrawn.","description":"Amount received or withdrawn.\nExample: `\"105.45\"`\n","minimum":0,"example":"105.45","exclusiveMinimum":true,"isRequired":true,"uniqueKey":"oneOf.1.amount","typeLabel":"string"},"currency":{"type":"number","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\nExample: `840`\n","title":"Currency identifier","example":840,"isRequired":true,"uniqueKey":"oneOf.1.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":"payway_usd","isRequired":true,"uniqueKey":"oneOf.1.payway","typeLabel":"string"},"payment_token":{"type":"string","format":"uuid","description":"Payment token from a previous successful payment with `issue_payment_token`","example":"4f6cf35x-2c4y-483z-a0a9-158621f77a21","isRequired":true,"uniqueKey":"oneOf.1.payment_token","typeLabel":"string\u003cuuid>"},"description":{"type":"string","description":"Optional payment description.","example":"Description of example invoice","maxLength":255,"uniqueKey":"oneOf.1.description","typeLabel":"string"},"failed_url":{"type":"string","description":"URL where the payer will be redirected after unsuccessful invoice payment.","format":"uri","example":"https://example.com/status/failed/","uniqueKey":"oneOf.1.failed_url","typeLabel":"string\u003curi>"},"success_url":{"type":"string","format":"uri","example":"https://example.com/status/success/","description":"URL where the payer will be redirected after successful invoice payment.","uniqueKey":"oneOf.1.success_url","typeLabel":"string\u003curi>"},"callback_url":{"type":"string","description":"URL where the notification about successful payment will be sent.","format":"uri","example":"https://example.com/status/callback/","uniqueKey":"oneOf.1.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://example.com/status/rejected/","uniqueKey":"oneOf.1.callback_rejected_url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.1","typeLabel":"Invoice issue by payment token · object"},{"type":"object","title":"Faster payment system","required":["account","shop_id","amount","currency","payway","shop_order_id","sign"],"example":{"shop_id":1520,"shop_order_id":"5b0efa8a-153b-4421-abac-2aba4d772a86","amount":"6320.91","currency":840,"payway":"card_invoice_usd","account":"79102471377","description":"Invoice for payment","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/"},"properties":{"shop_id":{"type":"integer","example":202203,"description":"Unique shop identifier in the Avanor system.","isRequired":true,"uniqueKey":"oneOf.2.shop_id","typeLabel":"integer"},"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.2.shop_order_id","typeLabel":"string"},"amount":{"type":"string","title":"Amount received or withdrawn.","description":"Amount received or withdrawn.\nExample: `\"105.45\"`\n","minimum":0,"example":"105.45","exclusiveMinimum":true,"isRequired":true,"uniqueKey":"oneOf.2.amount","typeLabel":"string"},"currency":{"type":"number","description":"Numeric currency identifier in accordance with [ISO 4217](https://wikipedia.org/wiki/ISO_4217).\nExample: `840`\n","title":"Currency identifier","example":840,"isRequired":true,"uniqueKey":"oneOf.2.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":"payway_usd","isRequired":true,"uniqueKey":"oneOf.2.payway","typeLabel":"string"},"account":{"type":"string","description":"Payer account (phone number)","example":"79102471377","isRequired":true,"uniqueKey":"oneOf.2.account","typeLabel":"string"},"description":{"type":"string","description":"Optional payment description.","example":"Description of example invoice","maxLength":255,"uniqueKey":"oneOf.2.description","typeLabel":"string"},"failed_url":{"type":"string","description":"URL where the payer will be redirected after unsuccessful invoice payment.","format":"uri","example":"https://example.com/status/failed/","uniqueKey":"oneOf.2.failed_url","typeLabel":"string\u003curi>"},"success_url":{"type":"string","format":"uri","example":"https://example.com/status/success/","description":"URL where the payer will be redirected after successful invoice payment.","uniqueKey":"oneOf.2.success_url","typeLabel":"string\u003curi>"},"callback_url":{"type":"string","description":"URL where the notification about successful payment will be sent.","format":"uri","example":"https://example.com/status/callback/","uniqueKey":"oneOf.2.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://example.com/status/rejected/","uniqueKey":"oneOf.2.callback_rejected_url","typeLabel":"string\u003curi>"}},"uniqueKey":"oneOf.2","typeLabel":"Faster payment system · object"}],"uniqueKey":"","typeLabel":"Bank card payment · object | Invoice issue by payment token · object | Faster payment system · object"},"examples":{"Example":{"title":"Example","value":{"shop_id":202203,"shop_order_id":"389d4f2c-46b9-4164-bcc4-fbd51e00d445","amount":"105.45","currency":840,"payway":"payway_usd","client_ip":"192.168.0.1","description":"Description of example invoice","failed_url":"https://example.com/status/failed/","success_url":"https://example.com/status/success/","callback_url":"https://example.com/status/callback/","callback_rejected_url":"https://example.com/status/rejected/","expires_at":"2026-12-30T00:00:00Z","card":{"number":"4814651800997171","cardholder":"ELIZABETH JONES","expiry_month":"11","expiry_year":"34","cvv":"518"},"issue_payment_token":true,"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":{"9b8d88d1-8a06-4c71-9374-43274042c0e9":{"description":"","x-summary":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Invoice has been successfully issued","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":"f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e","PaReq":"m9N2vK4xZ7pQW1rE3tY6uI5oO0pA8sD1fG3hJ2kL4lZ6xC7vB9bN1mQ3wE5rT7yU9iI2oO4pA6sD8fF0gG2hH4jJ6kK8lL1zZ3xX5cV7vB9bN2m4Q6w8E0r2T4y6U8i0I2o4O6p8A0s2D4f6F8g0G2h4Hj6J8kK0lL2zZ4xX6cC8vV0bB2nN4mM6qQ8wW0eE2rR4tT6yY8uU0iI2oO4pP6aA8sS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8qQ0wW2eE4rR6tT8yY0uU2iI4oO6pP8aS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8wW1eE3rR5tT7yY9uU2iI4oO6pP8aA0sS2dD4fF6gG8hH0jJ2kK4lL6zZ8xX0cC2vV4bB6nN8mM0qQ2wW4eE6rR8tT0yY2uU4iI6oO8pP0aA2sS4dD6fF8gG0hH2jJ4kK6lL","TermUrl":"https://card-test.domain.com/v1/invoice/finish3ds/f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e"},"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":"f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e","PaReq":"m9N2vK4xZ7pQW1rE3tY6uI5oO0pA8sD1fG3hJ2kL4lZ6xC7vB9bN1mQ3wE5rT7yU9iI2oO4pA6sD8fF0gG2hH4jJ6kK8lL1zZ3xX5cV7vB9bN2m4Q6w8E0r2T4y6U8i0I2o4O6p8A0s2D4f6F8g0G2h4Hj6J8kK0lL2zZ4xX6cC8vV0bB2nN4mM6qQ8wW0eE2rR4tT6yY8uU0iI2oO4pP6aA8sS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8qQ0wW2eE4rR6tT8yY0uU2iI4oO6pP8aS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8wW1eE3rR5tT7yY9uU2iI4oO6pP8aA0sS2dD4fF6gG8hH0jJ2kK4lL6zZ8xX0cC2vV4bB6nN8mM0qQ2wW4eE6rR8tT0yY2uU4iI6oO8pP0aA2sS4dD6fF8gG0hH2jJ4kK6lL","TermUrl":"https://card-test.domain.com/v1/invoice/finish3ds/f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e"},"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":32105,"description":"Unique invoice identifier in Avanor 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://checkout.avanor.tech/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://checkout.avanor.tech/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":"Invoice has been successfully issued · 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":"Invoice has been successfully issued · object | Error response · object"},"examples":{"Example":{"title":"Example","value":{"result":true,"message":"Ok","error_code":0,"data":{"data":{"MD":"f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e","PaReq":"m9N2vK4xZ7pQW1rE3tY6uI5oO0pA8sD1fG3hJ2kL4lZ6xC7vB9bN1mQ3wE5rT7yU9iI2oO4pA6sD8fF0gG2hH4jJ6kK8lL1zZ3xX5cV7vB9bN2m4Q6w8E0r2T4y6U8i0I2o4O6p8A0s2D4f6F8g0G2h4Hj6J8kK0lL2zZ4xX6cC8vV0bB2nN4mM6qQ8wW0eE2rR4tT6yY8uU0iI2oO4pP6aA8sS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8qQ0wW2eE4rR6tT8yY0uU2iI4oO6pP8aS0dD2fF4gG6hH8jJ0kK2lL4zZ6xX8cC0vV2bB4nN6mM8wW1eE3rR5tT7yY9uU2iI4oO6pP8aA0sS2dD4fF6gG8hH0jJ2kK4lL6zZ8xX0cC2vV4bB6nN8mM0qQ2wW4eE6rR8tT0yY2uU4iI6oO8pP0aA2sS4dD6fF8gG0hH2jJ4kK6lL","TermUrl":"https://card-test.domain.com/v1/invoice/finish3ds/f8a2b5c7e9d14a6b3c0e8f7d6a5b4c3e"},"id":32105,"method":"POST","url":"https://checkout.avanor.tech/form/"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"452921db-f536-4503-8f10-e01e1729fe60":{"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":"Invoice issue - Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T12:45:08.456Z","originalFileLocation":"api-reference/invoice-create/invoice-issue.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=\"Additional parameters can be transferred in the request, for example: description – invoice description, phone – phone number linked to the wallet; account – card number; The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request \u0026quot;Getting payment methods for input\u0026quot; shop_input_config/shop in the add_ons_config response field. ### Redirecting to invoice payment forms If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters). The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field. For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems). An example of forming an HTML form using the jinja2 template language: jinja2 {% for param, value in data[\u0026#x27;data\u0026#x27;].items() %} {% endfor %} For the data specified in the example response below, the following HTML form will be obtained: html In case of \u0026quot;method\u0026quot;: \u0026quot;GET\u0026quot; it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field. The URL is generated according to the following algorithm: python import urllib.parse redirect_url = \u0026#x27;{url}?{parameters}\u0026#x27;.format(url=data[\u0026#x27;url\u0026#x27;], parameters=urllib.parse.urlencode(data[\u0026#x27;data\u0026#x27;])) An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd\u0026amp;payment_type=card\u0026amp;fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026amp;success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it. ### Payer Browser Authentication for 3D Secure For 3ds 2.0 payments with card data to be successful, the payer\u0026#x27;s browser information must be collected. You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create. As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header. js let client_info = { \u0026quot;browser_java_enabled\u0026quot;: window.navigator.javaEnabled(), \u0026quot;browser_javascript_enabled\u0026quot;: true, \u0026quot;browser_language\u0026quot;: window.navigator.language, \u0026quot;browser_color_depth\u0026quot;: window.screen.colorDepth.toString(), \u0026quot;browser_screen_height\u0026quot;: window.screen.height.toString(), \u0026quot;browser_screen_width\u0026quot;: window.screen.width.toString(), \u0026quot;browser_tz\u0026quot;: (new Date()).getTimezoneOffset().toString(), \u0026quot;browser_user_agent\u0026quot;: window.navigator.userAgent, \u0026quot;challenge_window_size\u0026quot;: \u0026quot;05\u0026quot; } If the payer\u0026#x27;s browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect. 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/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=\"Invoice issue - Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Additional parameters can be transferred in the request, for example: description – invoice description, phone – phone number linked to the wallet; account – card number; The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request \u0026quot;Getting payment methods for input\u0026quot; shop_input_config/shop in the add_ons_config response field. ### Redirecting to invoice payment forms If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters). The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field. For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems). An example of forming an HTML form using the jinja2 template language: jinja2 {% for param, value in data[\u0026#x27;data\u0026#x27;].items() %} {% endfor %} For the data specified in the example response below, the following HTML form will be obtained: html In case of \u0026quot;method\u0026quot;: \u0026quot;GET\u0026quot; it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field. The URL is generated according to the following algorithm: python import urllib.parse redirect_url = \u0026#x27;{url}?{parameters}\u0026#x27;.format(url=data[\u0026#x27;url\u0026#x27;], parameters=urllib.parse.urlencode(data[\u0026#x27;data\u0026#x27;])) An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd\u0026amp;payment_type=card\u0026amp;fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026amp;success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it. ### Payer Browser Authentication for 3D Secure For 3ds 2.0 payments with card data to be successful, the payer\u0026#x27;s browser information must be collected. You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create. As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header. js let client_info = { \u0026quot;browser_java_enabled\u0026quot;: window.navigator.javaEnabled(), \u0026quot;browser_javascript_enabled\u0026quot;: true, \u0026quot;browser_language\u0026quot;: window.navigator.language, \u0026quot;browser_color_depth\u0026quot;: window.screen.colorDepth.toString(), \u0026quot;browser_screen_height\u0026quot;: window.screen.height.toString(), \u0026quot;browser_screen_width\u0026quot;: window.screen.width.toString(), \u0026quot;browser_tz\u0026quot;: (new Date()).getTimezoneOffset().toString(), \u0026quot;browser_user_agent\u0026quot;: window.navigator.userAgent, \u0026quot;challenge_window_size\u0026quot;: \u0026quot;05\u0026quot; } If the payer\u0026#x27;s browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect. 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.avanor.tech/api-reference/invoice-create/invoice-issue\">\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=Invoice+issue\u0026amp;description=Additional+parameters+can+be+transferred+in+the+request%2C+for+example%3A%0A%0A*+%60description%60+%E2%80%93+invoice+description%2C%0A*+%60phone%60+%E2%80%93+phone+number+linked+to+the+wallet%3B%0A*+%60\u0026amp;theme=57be3255082b8f94f24487af\u0026amp;signature=d56ceec90f0743e32805aef4e4468f3cff5a873de46645103ce197daa43e59b3\">\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=\"Invoice issue - Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Additional parameters can be transferred in the request, for example: description – invoice description, phone – phone number linked to the wallet; account – card number; The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request \u0026quot;Getting payment methods for input\u0026quot; shop_input_config/shop in the add_ons_config response field. ### Redirecting to invoice payment forms If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters). The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field. For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems). An example of forming an HTML form using the jinja2 template language: jinja2 {% for param, value in data[\u0026#x27;data\u0026#x27;].items() %} {% endfor %} For the data specified in the example response below, the following HTML form will be obtained: html In case of \u0026quot;method\u0026quot;: \u0026quot;GET\u0026quot; it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field. The URL is generated according to the following algorithm: python import urllib.parse redirect_url = \u0026#x27;{url}?{parameters}\u0026#x27;.format(url=data[\u0026#x27;url\u0026#x27;], parameters=urllib.parse.urlencode(data[\u0026#x27;data\u0026#x27;])) An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd\u0026amp;payment_type=card\u0026amp;fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026amp;success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it. ### Payer Browser Authentication for 3D Secure For 3ds 2.0 payments with card data to be successful, the payer\u0026#x27;s browser information must be collected. You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create. As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header. js let client_info = { \u0026quot;browser_java_enabled\u0026quot;: window.navigator.javaEnabled(), \u0026quot;browser_javascript_enabled\u0026quot;: true, \u0026quot;browser_language\u0026quot;: window.navigator.language, \u0026quot;browser_color_depth\u0026quot;: window.screen.colorDepth.toString(), \u0026quot;browser_screen_height\u0026quot;: window.screen.height.toString(), \u0026quot;browser_screen_width\u0026quot;: window.screen.width.toString(), \u0026quot;browser_tz\u0026quot;: (new Date()).getTimezoneOffset().toString(), \u0026quot;browser_user_agent\u0026quot;: window.navigator.userAgent, \u0026quot;challenge_window_size\u0026quot;: \u0026quot;05\u0026quot; } If the payer\u0026#x27;s browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect. Fields involved in request signature generation: amount currency payway shop_id shop_order_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=Invoice+issue\u0026amp;description=Additional+parameters+can+be+transferred+in+the+request%2C+for+example%3A%0A%0A*+%60description%60+%E2%80%93+invoice+description%2C%0A*+%60phone%60+%E2%80%93+phone+number+linked+to+the+wallet%3B%0A*+%60\u0026amp;theme=57be3255082b8f94f24487af\u0026amp;signature=d56ceec90f0743e32805aef4e4468f3cff5a873de46645103ce197daa43e59b3\">\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/invoice-issue\">\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/invoice-issue.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/invoice-issue#webpage\",\"url\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue\",\"name\":\"Invoice issue\",\"description\":\"Additional parameters can be transferred in the request, for example: description – invoice description, phone – phone number linked to the wallet; account – card number; The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request \\\"Getting payment methods for input\\\" shop_input_config/shop in the add_ons_config response field. ### Redirecting to invoice payment forms If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters). The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field. For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems). An example of forming an HTML form using the jinja2 template language: jinja2 {% for param, value in data['data'].items() %} {% endfor %} For the data specified in the example response below, the following HTML form will be obtained: html In case of \\\"method\\\": \\\"GET\\\" it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field. The URL is generated according to the following algorithm: python import urllib.parse redirect_url = '{url}?{parameters}'.format(url=data['url'], parameters=urllib.parse.urlencode(data['data'])) An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it. ### Payer Browser Authentication for 3D Secure For 3ds 2.0 payments with card data to be successful, the payer's browser information must be collected. You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create. As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header. js let client_info = { \\\"browser_java_enabled\\\": window.navigator.javaEnabled(), \\\"browser_javascript_enabled\\\": true, \\\"browser_language\\\": window.navigator.language, \\\"browser_color_depth\\\": window.screen.colorDepth.toString(), \\\"browser_screen_height\\\": window.screen.height.toString(), \\\"browser_screen_width\\\": window.screen.width.toString(), \\\"browser_tz\\\": (new Date()).getTimezoneOffset().toString(), \\\"browser_user_agent\\\": window.navigator.userAgent, \\\"challenge_window_size\\\": \\\"05\\\" } If the payer's browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect. Fields involved in request signature generation: amount currency payway shop_id shop_order_id\",\"dateModified\":\"2026-09-28T12:45:08.456Z\",\"isPartOf\":{\"@id\":\"https://docs.avanor.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue#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\":\"Invoice issue\",\"item\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue#apireference\",\"headline\":\"Invoice issue\",\"name\":\"Invoice issue\",\"description\":\"Additional parameters can be transferred in the request, for example: description – invoice description, phone – phone number linked to the wallet; account – card number; The list of these parameters depends on the payway (payway). The required additional parameters for the payway can be found in the request \\\"Getting payment methods for input\\\" shop_input_config/shop in the add_ons_config response field. ### Redirecting to invoice payment forms If the request is successful, API will return the parameters necessary to redirect the user to the payment system for payment. These parameters will be in the data field of the response. The data.data field contains the parameters to be transferred during redirection (in the form of GET or POST request parameters). The redirection method depends on the method parameter. The generated request must be sent to the URL specified in the url field of the data field. For example, if you receive a POST in the method parameter to redirect a client to pay an invoice, you need to generate an HTML form from the parameters received in the response body (these parameters will differ for different payment systems). An example of forming an HTML form using the jinja2 template language: jinja2 {% for param, value in data['data'].items() %} {% endfor %} For the data specified in the example response below, the following HTML form will be obtained: html In case of \\\"method\\\": \\\"GET\\\" it is required to perform HTTP redirect to the URL with the parameters (using percent‐encoding), received in the data.data response field. The URL is generated according to the following algorithm: python import urllib.parse redirect_url = '{url}?{parameters}'.format(url=data['url'], parameters=urllib.parse.urlencode(data['data'])) An example of the formed URL: https://checkout.domain.com/form/?transaction_id=abcd\u0026payment_type=card\u0026fail_url=https%3A%2F%2Fgoogle.com%2Fpayment%2F%3Fstatus%3Dfail\u0026success_url=https%3A%2F%2Fgogle.com%2Fpayment%2F%3Fstatus%3Dsuccess Please note that the parameters failed_url, success_url, callback_url, callback_rejected_url specified in the shop settings have priority over those specified in request. If you want to use unique url for each request, you need to inform the manager about it. ### Payer Browser Authentication for 3D Secure For 3ds 2.0 payments with card data to be successful, the payer's browser information must be collected. You can collect the data yourself or let our service perform this for you. If you collect the data on your end, please ensure that all the necessary values are included to the payment initiation request /invoice/create. As an example, the provided JavaScript code could be employed to obtain the Payer Browser information. Please be aware that the client_info fields provided below do not include browser_accept_header. js let client_info = { \\\"browser_java_enabled\\\": window.navigator.javaEnabled(), \\\"browser_javascript_enabled\\\": true, \\\"browser_language\\\": window.navigator.language, \\\"browser_color_depth\\\": window.screen.colorDepth.toString(), \\\"browser_screen_height\\\": window.screen.height.toString(), \\\"browser_screen_width\\\": window.screen.width.toString(), \\\"browser_tz\\\": (new Date()).getTimezoneOffset().toString(), \\\"browser_user_agent\\\": window.navigator.userAgent, \\\"challenge_window_size\\\": \\\"05\\\" } If the payer's browser data is not provided in the /invoice/create request, it will be necessary to redirect the payer to our service as an intermediate step using a data object, so that our service can collect the necessary browser data. See Redirecting to invoice payment forms for the details on redirect. Fields involved in request signature generation: amount currency payway shop_id shop_order_id\",\"url\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue\",\"mainEntityOfPage\":{\"@id\":\"https://docs.avanor.tech/api-reference/invoice-create/invoice-issue#webpage\"},\"dateModified\":\"2026-09-28T12:45:08.456Z\",\"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","description":"Retrieves additional information for invoice creation.\n\n\u003cdiv class=\"attention\">\nThis method \u003cstrong> is not mandatory \u003c/strong> for all payment ways.\nFor more information, please contact the technical support service.\n\u003c/div>\n\nIt can be used in the following cases:\n\n* You want to find out the total amount subject to all fees paid by the user,\n before invoice.\n* Payment way requires dynamic set of fields depending on the payment parameters.\n In this case, you need to use the `add_ons_config`, `info`, `manual` and `warning` to\n generate customer form.\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":"/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","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":"/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)","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","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":"Invoice issue - 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"]}