{
  "info": {
    "_postman_id": "efe16b5b-2377-5c08-a936-d217066a2d23",
    "name": "CentaPay S2S CARD API 5.6.4",
    "description": "Generated from the CentaPay OpenAPI 3.1 specification (S2S CARD 5.6.4). One request per `action`, 16 in total.\n\n**Setup.** Fill in `PAYMENT_URL`, `CLIENT_KEY` and `PASSWORD` from onboarding, then the per-transaction variables the operation you are calling needs. `PASSWORD` is only ever used locally to compute the signature — it is never sent.\n\n**Signing.** A collection pre-request script computes `hash` before every request, choosing the formula the specification records for that action. Where an operation picks its formula at request time — a digital wallet or a stored token on SALE, a CREDIT2CARD transaction on a status lookup — the script follows the fields you send and the `TX_IS_CREDIT2CARD` flag.\n\n**Callbacks.** Callback signatures are verified with a different formula from the request that produced them: Formula 2 for most operations, Formula 6 for CREDIT2CARD, and the void signature for VOID. See the guide.\n\nDo not edit this collection by hand — it is regenerated from the specification on every build.\n\nGuide: https://www.centapay.com/docs",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "PAYMENT_URL",
      "value": "",
      "type": "string",
      "description": "Base host issued at onboarding, no scheme and no path (sandbox and production differ)."
    },
    {
      "key": "CLIENT_KEY",
      "value": "",
      "type": "string",
      "description": "Account identifier (UUID). Sent as client_key on every request."
    },
    {
      "key": "PASSWORD",
      "value": "",
      "type": "string",
      "description": "Hash secret. Used only to compute the signature — never sent over the wire."
    },
    {
      "key": "EMAIL",
      "value": "",
      "type": "string",
      "description": "Cardholder email. Hash input for Formulas 1, 2, 7 and 8."
    },
    {
      "key": "CARD_NUMBER",
      "value": "",
      "type": "string",
      "description": "Card PAN. Only its first 6 and last 4 digits enter the hash. For lookups and recurring operations, use the card of the original transaction."
    },
    {
      "key": "CARD_EXP_MONTH",
      "value": "",
      "type": "string",
      "description": "Card expiry month, MM."
    },
    {
      "key": "CARD_EXP_YEAR",
      "value": "",
      "type": "string",
      "description": "Card expiry year, YYYY."
    },
    {
      "key": "CARD_CVV2",
      "value": "",
      "type": "string",
      "description": "Card security code, 3-4 digits."
    },
    {
      "key": "CARD_TOKEN",
      "value": "",
      "type": "string",
      "description": "Stored card token. When set and no card number is sent, it replaces the first6/last4 term in Formulas 1 and 5."
    },
    {
      "key": "TRANS_ID",
      "value": "",
      "type": "string",
      "description": "Transaction ID returned by a previous operation. Hash input for Formulas 2 and 6."
    },
    {
      "key": "ORDER_ID",
      "value": "",
      "type": "string",
      "description": "Your order ID. Must be unique per payment attempt. Hash input for Formula 7."
    },
    {
      "key": "SCHEDULE_ID",
      "value": "",
      "type": "string",
      "description": "Schedule ID. Hash input for Formula 4."
    },
    {
      "key": "RECURRING_TOKEN",
      "value": "",
      "type": "string",
      "description": "Recurring token from the initial transaction."
    },
    {
      "key": "RECURRING_FIRST_TRANS_ID",
      "value": "",
      "type": "string",
      "description": "trans_id of the initial transaction in a recurring sequence."
    },
    {
      "key": "TERM_URL_3DS",
      "value": "",
      "type": "string",
      "description": "3DS return URL on your side."
    },
    {
      "key": "TX_IS_CREDIT2CARD",
      "value": "N",
      "type": "string",
      "description": "Set to Y when a status or details lookup targets a CREDIT2CARD transaction: those sign with Formula 6 instead of Formula 2 or 7."
    },
    {
      "key": "hash",
      "value": "",
      "type": "string",
      "description": "Computed by the collection pre-request script before every request. Do not set by hand."
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Generated by scripts/generate-postman.mjs from public/openapi.yaml.",
          "// Computes the request signature and exposes it as {{hash}}. Do not edit here:",
          "// edit the spec or the generator, then rebuild.",
          "",
          "var SELECTOR_BY_ACTION = {",
          "    \"SALE\": \"sale\",",
          "    \"CAPTURE\": \"formula2\",",
          "    \"CREDITVOID\": \"formula2\",",
          "    \"VOID\": \"formula2\",",
          "    \"CREDIT2CARD\": \"formula5\",",
          "    \"GET_TRANS_STATUS\": \"transLookup\",",
          "    \"GET_TRANS_DETAILS\": \"transLookup\",",
          "    \"GET_TRANS_STATUS_BY_ORDER\": \"orderLookup\",",
          "    \"RECURRING_SALE\": \"formula1\",",
          "    \"RETRY\": \"formula1\",",
          "    \"CREATE_SCHEDULE\": \"formula3\",",
          "    \"PAUSE_SCHEDULE\": \"formula4\",",
          "    \"RUN_SCHEDULE\": \"formula4\",",
          "    \"DELETE_SCHEDULE\": \"formula4\",",
          "    \"SCHEDULE_INFO\": \"formula4\",",
          "    \"DESCHEDULE\": \"formula4\",",
          "};",
          "",
          "function strrev(value) {",
          "  return String(value).split('').reverse().join('');",
          "}",
          "",
          "function md5(value) {",
          "  return CryptoJS.MD5(value).toString();",
          "}",
          "",
          "// Only the first six and last four digits of the PAN enter a hash.",
          "function cardPart(cardNumber) {",
          "  var digits = String(cardNumber).replace(/[^0-9]/g, '');",
          "  if (digits.length < 10) return digits;",
          "  return digits.slice(0, 6) + digits.slice(-4);",
          "}",
          "",
          "// Value of an enabled body field, with {{variables}} resolved.",
          "function bodyValue(key) {",
          "  var body = pm.request.body;",
          "  if (!body || body.mode !== 'urlencoded' || !body.urlencoded) return '';",
          "  var rows = typeof body.urlencoded.all === 'function' ? body.urlencoded.all() : body.urlencoded;",
          "  for (var i = 0; i < rows.length; i += 1) {",
          "    var row = rows[i];",
          "    if (row && row.key === key && row.disabled !== true && row.value != null) {",
          "      return pm.variables.replaceIn(String(row.value)).trim();",
          "    }",
          "  }",
          "  return '';",
          "}",
          "",
          "function variable(name) {",
          "  var value = pm.variables.get(name);",
          "  return value == null ? '' : String(value).trim();",
          "}",
          "",
          "// Prefer what is actually being sent; fall back to the collection variable for",
          "// operations whose body does not carry the field the formula needs.",
          "function input(bodyKey, variableName) {",
          "  return bodyValue(bodyKey) || variable(variableName);",
          "}",
          "",
          "var formula = {",
          "  f1: function (email, password, card) {",
          "    return md5((strrev(email) + password + strrev(cardPart(card))).toUpperCase());",
          "  },",
          "  f1Token: function (email, password, token) {",
          "    return md5((strrev(email) + password + strrev(token)).toUpperCase());",
          "  },",
          "  f2: function (email, password, transId, card) {",
          "    return md5((strrev(email) + password + transId + strrev(cardPart(card))).toUpperCase());",
          "  },",
          "  f3: function (password) {",
          "    return md5(strrev(password).toUpperCase());",
          "  },",
          "  f4: function (scheduleId, password) {",
          "    return md5(strrev(scheduleId + password).toUpperCase());",
          "  },",
          "  f5: function (password, card) {",
          "    return md5((password + strrev(cardPart(card))).toUpperCase());",
          "  },",
          "  f5Token: function (password, token) {",
          "    return md5((password + strrev(token)).toUpperCase());",
          "  },",
          "  f6: function (password, transId, card) {",
          "    return md5((password + transId + strrev(cardPart(card))).toUpperCase());",
          "  },",
          "  f7: function (email, password, orderId, card) {",
          "    return md5((strrev(email) + password + orderId + strrev(cardPart(card))).toUpperCase());",
          "  },",
          "  f8: function (email, password) {",
          "    return md5((strrev(email) + password).toUpperCase());",
          "  }",
          "};",
          "",
          "var action = bodyValue('action');",
          "var selector = SELECTOR_BY_ACTION[action];",
          "var password = variable('PASSWORD');",
          "",
          "var email = input('payer_email', 'EMAIL');",
          "var card = input('card_number', 'CARD_NUMBER');",
          "var transId = input('trans_id', 'TRANS_ID');",
          "var orderId = input('order_id', 'ORDER_ID');",
          "var scheduleId = input('schedule_id', 'SCHEDULE_ID');",
          "var isCredit2Card = variable('TX_IS_CREDIT2CARD').toUpperCase() === 'Y';",
          "",
          "// Which card term a formula uses is decided by what the request actually sends,",
          "// never by a collection variable: CARD_TOKEN may be filled in for one operation",
          "// while a different one is being sent with a PAN.",
          "var bodyCard = bodyValue('card_number');",
          "var bodyToken = bodyValue('card_token');",
          "var usingToken = Boolean(bodyToken) && !bodyCard;",
          "",
          "var missing = [];",
          "if (!password) missing.push('PASSWORD');",
          "",
          "var hash = '';",
          "",
          "switch (selector) {",
          "  case 'sale':",
          "    // Digital wallets sign over email and password only; a stored token",
          "    // replaces the card term; otherwise the PAN's first6/last4 is used.",
          "    if (!email) missing.push('EMAIL or payer_email');",
          "    if (bodyValue('digital_wallet') || bodyValue('payment_token')) {",
          "      hash = formula.f8(email, password);",
          "    } else if (usingToken) {",
          "      hash = formula.f1Token(email, password, bodyToken);",
          "    } else {",
          "      if (!card) missing.push('CARD_NUMBER or card_number');",
          "      hash = formula.f1(email, password, card);",
          "    }",
          "    break;",
          "",
          "  case 'formula1':",
          "    // Recurring and retry operations sign with the original transaction's",
          "    // email and stored card, which are not fields on the request.",
          "    if (!email) missing.push('EMAIL');",
          "    if (!card) missing.push('CARD_NUMBER (the stored card of the original transaction)');",
          "    hash = formula.f1(email, password, card);",
          "    break;",
          "",
          "  case 'formula2':",
          "    if (!email) missing.push('EMAIL');",
          "    if (!transId) missing.push('TRANS_ID or trans_id');",
          "    if (!card) missing.push('CARD_NUMBER');",
          "    hash = formula.f2(email, password, transId, card);",
          "    break;",
          "",
          "  case 'formula3':",
          "    hash = formula.f3(password);",
          "    break;",
          "",
          "  case 'formula4':",
          "    if (!scheduleId) missing.push('SCHEDULE_ID or schedule_id');",
          "    hash = formula.f4(scheduleId, password);",
          "    break;",
          "",
          "  case 'formula5':",
          "    if (usingToken) {",
          "      hash = formula.f5Token(password, bodyToken);",
          "    } else {",
          "      if (!card) missing.push('CARD_NUMBER or card_number');",
          "      hash = formula.f5(password, card);",
          "    }",
          "    break;",
          "",
          "  case 'transLookup':",
          "    // Formula 6 when the transaction being queried is a CREDIT2CARD payout,",
          "    // Formula 2 otherwise.",
          "    if (!transId) missing.push('TRANS_ID or trans_id');",
          "    if (!card) missing.push('CARD_NUMBER (the card of the transaction being queried)');",
          "    if (isCredit2Card) {",
          "      hash = formula.f6(password, transId, card);",
          "    } else {",
          "      if (!email) missing.push('EMAIL');",
          "      hash = formula.f2(email, password, transId, card);",
          "    }",
          "    break;",
          "",
          "  case 'orderLookup':",
          "    if (!card) missing.push('CARD_NUMBER (the card of the transaction being queried)');",
          "    if (isCredit2Card) {",
          "      if (!transId) missing.push('TRANS_ID (Formula 6 signs over trans_id, not order_id)');",
          "      hash = formula.f6(password, transId, card);",
          "    } else {",
          "      if (!email) missing.push('EMAIL');",
          "      if (!orderId) missing.push('ORDER_ID or order_id');",
          "      hash = formula.f7(email, password, orderId, card);",
          "    }",
          "    break;",
          "",
          "  default:",
          "    console.warn('[CentaPay] No hash rule for action \"' + action + '\" — {{hash}} left empty.');",
          "}",
          "",
          "if (missing.length) {",
          "  console.warn('[CentaPay] ' + action + ': hash computed without ' + missing.join(', ') + '. Set these collection variables or body fields, or the platform will reject the signature.');",
          "}",
          "",
          "pm.variables.set('hash', hash);",
          ""
        ]
      }
    }
  ],
  "item": [
    {
      "name": "SALE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "SALE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Account key. Format: uuid."
            },
            {
              "key": "order_id",
              "value": "{{ORDER_ID}}",
              "description": "Required. Your unique order ID. Max length 255."
            },
            {
              "key": "order_amount",
              "value": "",
              "description": "Required. Integer for KZT/UZS. Float XX.XX for USD. 0 allowed with `auth=Y` (SALE)."
            },
            {
              "key": "order_currency",
              "value": "",
              "description": "Required. 3-letter code (KZT, UZS, USD)."
            },
            {
              "key": "order_description",
              "value": "",
              "description": "Required. Max length 1024."
            },
            {
              "key": "payer_first_name",
              "value": "",
              "description": "Required. Max length 32."
            },
            {
              "key": "payer_last_name",
              "value": "",
              "description": "Required. Max length 32."
            },
            {
              "key": "payer_address",
              "value": "",
              "description": "Required. Max length 255."
            },
            {
              "key": "payer_country",
              "value": "",
              "description": "Required. 2-letter ISO 3166-1"
            },
            {
              "key": "payer_city",
              "value": "",
              "description": "Required. Max length 40."
            },
            {
              "key": "payer_zip",
              "value": "",
              "description": "Required. Max length 10."
            },
            {
              "key": "payer_email",
              "value": "{{EMAIL}}",
              "description": "Required. Max length 256."
            },
            {
              "key": "payer_phone",
              "value": "",
              "description": "Required. Max length 32."
            },
            {
              "key": "payer_ip",
              "value": "",
              "description": "Required. IPv4 and IPv6 supported."
            },
            {
              "key": "term_url_3ds",
              "value": "{{TERM_URL_3DS}}",
              "description": "Required. 3DS return URL. Max length 1024."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. MD5 hex request signature. Populated by the collection pre-request script."
            },
            {
              "key": "payer_middle_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_birth_date",
              "value": "",
              "description": "Optional. yyyy-MM-dd",
              "disabled": true
            },
            {
              "key": "payer_address2",
              "value": "",
              "description": "Optional. Max length 255.",
              "disabled": true
            },
            {
              "key": "payer_house_number",
              "value": "",
              "description": "Optional. Max length 9.",
              "disabled": true
            },
            {
              "key": "payer_state",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_district",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_phone_country_code",
              "value": "",
              "description": "Optional.",
              "disabled": true
            },
            {
              "key": "channel_id",
              "value": "",
              "description": "Optional. Sub-account routing. Max length 16.",
              "disabled": true
            },
            {
              "key": "card_number",
              "value": "{{CARD_NUMBER}}",
              "description": "Optional. Card PAN. Required unless `card_token` or a digital wallet is used.",
              "disabled": true
            },
            {
              "key": "card_exp_month",
              "value": "{{CARD_EXP_MONTH}}",
              "description": "Optional. MM. Required with `card_number`.",
              "disabled": true
            },
            {
              "key": "card_exp_year",
              "value": "{{CARD_EXP_YEAR}}",
              "description": "Optional. YYYY. Required with `card_number`.",
              "disabled": true
            },
            {
              "key": "card_cvv2",
              "value": "{{CARD_CVV2}}",
              "description": "Optional. 3-4 digits. Required with `card_number` unless account configured otherwise.",
              "disabled": true
            },
            {
              "key": "card_token",
              "value": "{{CARD_TOKEN}}",
              "description": "Optional. Stored card token; replaces card fields. Max length 64.",
              "disabled": true
            },
            {
              "key": "digital_wallet",
              "value": "",
              "description": "Optional. Pair with `payment_token`; omit card fields entirely. One of: googlepay, applepay.",
              "disabled": true
            },
            {
              "key": "payment_token",
              "value": "",
              "description": "Optional. Wallet payment token from Apple Pay or Google Pay.",
              "disabled": true
            },
            {
              "key": "term_url_target",
              "value": "",
              "description": "Optional. Browsing context for 3DS return. `_blank`, `_self`, `_parent`, `_top` (default), or iframe name.",
              "disabled": true
            },
            {
              "key": "auth",
              "value": "",
              "description": "Optional. AUTH only (DMS). Default N. One of: Y, N.",
              "disabled": true
            },
            {
              "key": "req_token",
              "value": "",
              "description": "Optional. Request a card token. Default N. One of: Y, N.",
              "disabled": true
            },
            {
              "key": "recurring_init",
              "value": "",
              "description": "Optional. Initialise recurring sequence. Default N. One of: Y, N.",
              "disabled": true
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Optional. Link to a recurring schedule.",
              "disabled": true
            },
            {
              "key": "parameters[example_key]",
              "value": "",
              "description": "Optional. Acquirer-specific extras, sent as `parameters[key]=value`.",
              "disabled": true
            },
            {
              "key": "custom_data[example_key]",
              "value": "",
              "description": "Optional. Arbitrary data echoed in the callback, sent as `custom_data[key]=value`.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=SALE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 1 (cards); Formula 8 (digital wallets). The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `order_id`, `order_amount`, `order_currency`, `order_description`, `payer_first_name`, `payer_last_name`, `payer_address`, `payer_country`, `payer_city`, `payer_zip`, `payer_email`, `payer_phone`, `payer_ip`, `term_url_3ds`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "CAPTURE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "CAPTURE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. trans_id of the AUTH to capture. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            },
            {
              "key": "amount",
              "value": "",
              "description": "Optional. Partial capture amount; omit for full capture.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=CAPTURE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 2. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "CREDITVOID",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "CREDITVOID",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. trans_id of the settled transaction. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            },
            {
              "key": "amount",
              "value": "",
              "description": "Optional. Partial refund amount; omit for full refund/reversal.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=CREDITVOID`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 2. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "VOID",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "VOID",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. trans_id of a SALE Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=VOID`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 2. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "CREDIT2CARD",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "CREDIT2CARD",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "order_id",
              "value": "{{ORDER_ID}}",
              "description": "Required. Your unique order ID. Max length 255."
            },
            {
              "key": "order_amount",
              "value": "",
              "description": "Required. Integer for KZT/UZS. Float XX.XX for USD. 0 allowed with `auth=Y` (SALE)."
            },
            {
              "key": "order_currency",
              "value": "",
              "description": "Required. 3-letter code (KZT, UZS, USD)."
            },
            {
              "key": "order_description",
              "value": "",
              "description": "Required. Max length 1024."
            },
            {
              "key": "card_number",
              "value": "{{CARD_NUMBER}}",
              "description": "Required. Recipient card PAN."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            },
            {
              "key": "channel_id",
              "value": "",
              "description": "Optional. Max length 16.",
              "disabled": true
            },
            {
              "key": "payee_first_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payee_last_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payee_middle_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payee_birth_date",
              "value": "",
              "description": "Optional. yyyy-MM-dd",
              "disabled": true
            },
            {
              "key": "payee_address",
              "value": "",
              "description": "Optional. Max length 255.",
              "disabled": true
            },
            {
              "key": "payee_address2",
              "value": "",
              "description": "Optional. Max length 255.",
              "disabled": true
            },
            {
              "key": "payee_country",
              "value": "",
              "description": "Optional. 2-letter",
              "disabled": true
            },
            {
              "key": "payee_state",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payee_city",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payee_zip",
              "value": "",
              "description": "Optional. Max length 10.",
              "disabled": true
            },
            {
              "key": "payee_email",
              "value": "",
              "description": "Optional. Max length 256.",
              "disabled": true
            },
            {
              "key": "payee_phone",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_first_name",
              "value": "",
              "description": "Optional. Sender name. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_last_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_middle_name",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_birth_date",
              "value": "",
              "description": "Optional. yyyy-MM-dd",
              "disabled": true
            },
            {
              "key": "payer_address",
              "value": "",
              "description": "Optional. Max length 255.",
              "disabled": true
            },
            {
              "key": "payer_address2",
              "value": "",
              "description": "Optional. Max length 255.",
              "disabled": true
            },
            {
              "key": "payer_country",
              "value": "",
              "description": "Optional. 2-letter",
              "disabled": true
            },
            {
              "key": "payer_state",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_city",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_zip",
              "value": "",
              "description": "Optional. Max length 10.",
              "disabled": true
            },
            {
              "key": "payer_email",
              "value": "{{EMAIL}}",
              "description": "Optional. Max length 256.",
              "disabled": true
            },
            {
              "key": "payer_phone",
              "value": "",
              "description": "Optional. Max length 32.",
              "disabled": true
            },
            {
              "key": "payer_ip",
              "value": "",
              "description": "Optional. IPv4",
              "disabled": true
            },
            {
              "key": "parameters[example_key]",
              "value": "",
              "description": "Optional.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=CREDIT2CARD`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 5. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `order_id`, `order_amount`, `order_currency`, `order_description`, `card_number`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "GET_TRANS_STATUS",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "GET_TRANS_STATUS",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=GET_TRANS_STATUS`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 2 (Formula 6 for CREDIT2CARD transactions). The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "GET_TRANS_DETAILS",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "GET_TRANS_DETAILS",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=GET_TRANS_DETAILS`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 2 (Formula 6 for CREDIT2CARD transactions). The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "GET_TRANS_STATUS_BY_ORDER",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "GET_TRANS_STATUS_BY_ORDER",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "order_id",
              "value": "{{ORDER_ID}}",
              "description": "Required. Max length 255."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=GET_TRANS_STATUS_BY_ORDER`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 7 (Formula 6 for CREDIT2CARD transactions). The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `order_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "RECURRING_SALE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "RECURRING_SALE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "order_id",
              "value": "{{ORDER_ID}}",
              "description": "Required. New unique order ID. Max length 255."
            },
            {
              "key": "order_amount",
              "value": "",
              "description": "Required."
            },
            {
              "key": "order_description",
              "value": "",
              "description": "Required. Max length 1024."
            },
            {
              "key": "recurring_first_trans_id",
              "value": "{{RECURRING_FIRST_TRANS_ID}}",
              "description": "Required. trans_id of the initial transaction. Format: uuid."
            },
            {
              "key": "recurring_token",
              "value": "{{RECURRING_TOKEN}}",
              "description": "Required. Token from the initial transaction. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Optional.",
              "disabled": true
            },
            {
              "key": "auth",
              "value": "",
              "description": "Optional. AUTH only. One of: Y, N.",
              "disabled": true
            },
            {
              "key": "custom_data[example_key]",
              "value": "",
              "description": "Optional. Overrides the initial SALE custom_data.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=RECURRING_SALE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 1 (stored card first6/last4 and original email). The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `order_id`, `order_amount`, `order_description`, `recurring_first_trans_id`, `recurring_token`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "RETRY",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "RETRY",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "trans_id",
              "value": "{{TRANS_ID}}",
              "description": "Required. Declined recurring trans_id. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=RETRY`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 1. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `trans_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "CREATE_SCHEDULE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "CREATE_SCHEDULE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "name",
              "value": "",
              "description": "Required. Schedule name."
            },
            {
              "key": "interval_unit",
              "value": "",
              "description": "Required. Billing interval unit. One of: day, week, month."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            },
            {
              "key": "interval_length",
              "value": "",
              "description": "Optional. Interval length. Default 1.",
              "disabled": true
            },
            {
              "key": "payments_count",
              "value": "",
              "description": "Optional. Number of payments; omit for unlimited.",
              "disabled": true
            },
            {
              "key": "delays",
              "value": "",
              "description": "Optional. Delay in interval units before the first payment.",
              "disabled": true
            },
            {
              "key": "day_of_month",
              "value": "",
              "description": "Optional. Day of month for monthly schedules.",
              "disabled": true
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=CREATE_SCHEDULE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 3. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `name`, `interval_unit`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "PAUSE_SCHEDULE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "PAUSE_SCHEDULE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=PAUSE_SCHEDULE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 4. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `schedule_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "RUN_SCHEDULE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "RUN_SCHEDULE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=RUN_SCHEDULE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 4. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `schedule_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "DELETE_SCHEDULE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "DELETE_SCHEDULE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=DELETE_SCHEDULE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 4. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `schedule_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "SCHEDULE_INFO",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "SCHEDULE_INFO",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=SCHEDULE_INFO`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 4. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `schedule_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    },
    {
      "name": "DESCHEDULE",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "action",
              "value": "DESCHEDULE",
              "description": "Required."
            },
            {
              "key": "client_key",
              "value": "{{CLIENT_KEY}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "recurring_token",
              "value": "{{RECURRING_TOKEN}}",
              "description": "Required. Value obtained during the primary transaction. Format: uuid."
            },
            {
              "key": "schedule_id",
              "value": "{{SCHEDULE_ID}}",
              "description": "Required. Format: uuid."
            },
            {
              "key": "hash",
              "value": "{{hash}}",
              "description": "Required. Populated by the collection pre-request script."
            }
          ]
        },
        "url": {
          "raw": "https://{{PAYMENT_URL}}/post",
          "protocol": "https",
          "host": [
            "{{PAYMENT_URL}}"
          ],
          "path": [
            "post"
          ]
        },
        "description": "`action=DESCHEDULE`, POSTed form-encoded to `https://{{PAYMENT_URL}}/post`.\n\n**Signing:** Formula 4. The collection pre-request script computes `hash` before the request is sent.\n\n**Required fields:** `action`, `client_key`, `recurring_token`, `schedule_id`, `hash`.\n\nOptional fields are present but disabled — tick one to send it. For payment operations the synchronous response confirms acceptance only; the authoritative outcome arrives via callback."
      },
      "response": []
    }
  ]
}
