{
  "info": {
    "name": "ArifPay Gateway - Sandbox C2B / B2C / B2B",
    "description": "ArifPay developer-portal sandbox. No live PSP calls.\n\n**BASE_URL (required):** set collection `baseUrl` to `https://gateway.arifpay.org` (do not use production hosts).\n\n**Auth:** `x-arifpay-key: arif-sandbox-portal-key`\n\n**Headers**\n| Header | Values |\n|---|---|\n| x-arifpay-sim-mode | SUCCESS \\| FAIL (optional; overrides sim phones) |\n| x-arifpay-fee-source | CUSTOMER \\| MERCHANT (**sandbox only** — production uses merchant registration) |\n\n**Portal taxonomy (keep Postman aligned)**\n- **C2B Direct:** Telebirr, M-Pesa, CBE, BOA, Awash, Yaya, Zamzam, Kacha, Ebirr (kaafi-ebirr, coopay-ebirr, wegagen-ebirr, nib-ebirr, ahadu-ebirr)\n- **C2B OTP:** Ahadu, Binget (OTP `123456`)\n- **C2B Checkout:** hosted session; customer picks Telebirr, CBE, M-Pesa, Ebirr (KAAFI_EBIRR, COOPAY_EBIRR, WEGAGEN_EBIRR, NIB_EBIRR, AHADU_EBIRR), cards, etc.\n- **Card:** PayPal (`{ orderId, approvalUrl, SessionId }`), Mastercard (hosted `sessionId`), Visa/PSS\n- **B2C:** Telebirr, CBE, M-Pesa only\n- **W2B:** account query + transfer\n\n**Sim phones**\n| Rail | SUCCESS | FAIL |\n|---|---|---|\n| M-Pesa | 251700000000 | 251711111111 |\n| Telebirr | 251900000000 | 251911111111 |\n| Generic (others) | 251911000000 | 251911111110 |\n\n**Errors to try**\n- Reuse same nonce → `session already exist`\n- Past `expireDate` on direct transfer → `Session Expired` (no merchant webhook)\n",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "x-arifpay-key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{simArifpayKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://gateway.arifpay.org"
    },
    {
      "key": "simArifpayKey",
      "value": "arif-sandbox-portal-key"
    },
    {
      "key": "simTransferKey",
      "value": "sandbox-w2b-key"
    },
    {
      "key": "simMode",
      "value": "SUCCESS"
    },
    {
      "key": "feeSource",
      "value": "MERCHANT"
    },
    {
      "key": "expireDate",
      "value": "2027-12-31T23:59:00"
    },
    {
      "key": "successPhone",
      "value": "251700000000"
    },
    {
      "key": "failPhone",
      "value": "251711111111"
    },
    {
      "key": "telebirrSuccessPhone",
      "value": "251900000000"
    },
    {
      "key": "telebirrFailPhone",
      "value": "251911111111"
    },
    {
      "key": "genericSuccessPhone",
      "value": "251911000000"
    },
    {
      "key": "genericFailPhone",
      "value": "251911111110"
    },
    {
      "key": "simOtp",
      "value": "123456"
    },
    {
      "key": "sessionId",
      "value": ""
    },
    {
      "key": "nonce",
      "value": ""
    },
    {
      "key": "amount",
      "value": "10"
    },
    {
      "key": "accountNumber",
      "value": "1000123456789"
    },
    {
      "key": "shortCodes",
      "value": "CBE"
    },
    {
      "key": "notifyUrl",
      "value": "http://localhost:3000/api/sandbox/webhook-inbox"
    },
    {
      "key": "successUrl",
      "value": "https://payment.arifpay.org/success"
    },
    {
      "key": "errorUrl",
      "value": "https://payment.arifpay.org/Error"
    },
    {
      "key": "cancelUrl",
      "value": "https://payment.arifpay.org/Cancel"
    }
  ],
  "item": [
    {
      "name": "0. Session",
      "item": [
        {
          "name": "Create sandbox session",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const j = pm.response.json();",
                  "const sid = j?.data?.sessionId || j?.data?.uuid || j?.sessionId;",
                  "if (sid) { pm.collectionVariables.set('sessionId', sid); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/session",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "Create session — duplicate nonce (expect session already exist)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/session",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "Create session — past expireDate (session ok; pay will expire)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            },
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const j = pm.response.json();",
                  "const sid = j?.data?.sessionId || j?.data?.uuid || j?.sessionId;",
                  "if (sid) { pm.collectionVariables.set('sessionId', sid); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/session",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"2020-01-01T00:00:00\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "1. C2B Direct",
      "item": [
        {
          "name": "Telebirr USSD",
          "item": [
            {
              "name": "Telebirr direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/telebirr-ussd/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{telebirrSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Telebirr direct FAIL (header)",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "FAIL"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/telebirr-ussd/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{telebirrSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Telebirr direct Session Expired",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/telebirr-ussd/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{telebirrSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"2020-01-01T00:00:00\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Telebirr session transfer SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/telebirr-ussd/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{telebirrSuccessPhone}}\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "M-Pesa",
          "item": [
            {
              "name": "M-Pesa session transfer SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/mpesa/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{successPhone}}\"\n}"
                }
              }
            },
            {
              "name": "M-Pesa session transfer FAIL (phone)",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/mpesa/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{failPhone}}\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "CBE",
          "item": [
            {
              "name": "CBE direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/cbe/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "CBE direct FAIL",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "FAIL"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/cbe/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "BOA",
          "item": [
            {
              "name": "BOA direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/boa/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "Awash (Direct)",
          "item": [
            {
              "name": "Awash direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/awash/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Awash direct FAIL",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "FAIL"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/awash/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "Yaya",
          "item": [
            {
              "name": "Yaya direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/yaya/transfer/direct",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "Zamzam",
          "item": [
            {
              "name": "Zamzam direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/zamzam/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "Kacha (Direct)",
          "item": [
            {
              "name": "Kacha direct SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/kacha/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Kacha direct FAIL",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "FAIL"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/kacha/direct/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "name": "2. C2B OTP",
      "item": [
        {
          "name": "Ahadu",
          "item": [
            {
              "name": "Ahadu initiate SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/ahadu/initiate",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"accountNumber\": \"{{accountNumber}}\"\n}"
                }
              }
            },
            {
              "name": "Ahadu verify OTP SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/ahadu/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"otp\": \"{{simOtp}}\"\n}"
                }
              }
            },
            {
              "name": "Ahadu verify OTP FAIL",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/ahadu/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"otp\": \"000000\"\n}"
                }
              }
            }
          ]
        },
        {
          "name": "Binget",
          "item": [
            {
              "name": "Binget initiate SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                    ]
                  }
                },
                {
                  "listen": "test",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "const j = pm.response.json();",
                      "const sid = j?.data?.sessionId || j?.data?.uuid || j?.sessionId;",
                      "if (sid) { pm.collectionVariables.set('sessionId', sid); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/binget/initiate",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
                }
              }
            },
            {
              "name": "Binget verifyOTP SUCCESS",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-sim-mode",
                    "value": "SUCCESS"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/binget/verifyOTP",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"otp\": \"{{simOtp}}\"\n}"
                }
              }
            },
            {
              "name": "Binget verifyOTP FAIL",
              "event": [
                {
                  "listen": "prerequest",
                  "script": {
                    "type": "text/javascript",
                    "exec": [
                      "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                    ]
                  }
                }
              ],
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "x-arifpay-key",
                    "value": "{{simArifpayKey}}"
                  },
                  {
                    "key": "x-arifpay-fee-source",
                    "value": "{{feeSource}}"
                  }
                ],
                "url": "{{baseUrl}}/api/sandbox/c2b/binget/verifyOTP",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"otp\": \"000000\"\n}"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "name": "3. Card / International",
      "item": [
        {
          "name": "PayPal direct SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/paypal/direct/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "PayPal direct FAIL",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "FAIL"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/paypal/direct/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "Mastercard direct SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/mastercard/direct/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "Visa / PSS direct SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/pss/direct/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        },
        {
          "name": "Visa brand alias FAIL",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "FAIL"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/visa/direct/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cancelUrl\": \"{{cancelUrl}}\",\n  \"phone\": \"{{genericSuccessPhone}}\",\n  \"email\": \"sandbox@example.com\",\n  \"nonce\": \"{{nonce}}\",\n  \"errorUrl\": \"{{errorUrl}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\",\n  \"successUrl\": \"{{successUrl}}\",\n  \"expireDate\": \"{{expireDate}}\",\n  \"amount\": {{amount}},\n  \"items\": [\n    { \"name\": \"Sandbox item\", \"quantity\": 1, \"price\": {{amount}}, \"description\": \"Sandbox\" }\n  ],\n  \"lang\": \"EN\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "4. B2C (Telebirr / CBE / M-Pesa)",
      "item": [
        {
          "name": "M-Pesa B2C SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2c/mpesa/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{successPhone}}\"\n}"
            }
          }
        },
        {
          "name": "Telebirr B2C SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2c/telebirr/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{telebirrSuccessPhone}}\"\n}"
            }
          }
        },
        {
          "name": "CBE B2C SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2c/cbe/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{genericSuccessPhone}}\"\n}"
            }
          }
        },
        {
          "name": "M-Pesa B2C FAIL",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (!pm.collectionVariables.get('sessionId')) { throw new Error('Run Create sandbox session first'); }"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2c/mpesa/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sessionId\": \"{{sessionId}}\",\n  \"phoneNumber\": \"{{failPhone}}\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "5. Wallet to bank (B2B)",
      "item": [
        {
          "name": "Account query SUCCESS",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2b/account/query?accountNumber={{accountNumber}}&shortCodes={{shortCodes}}"
          }
        },
        {
          "name": "Transfer SUCCESS",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              },
              {
                "key": "x-arifpay-transfer-key",
                "value": "{{simTransferKey}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2b/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": {{amount}},\n  \"shortCodes\": \"{{shortCodes}}\",\n  \"accountNumber\": \"{{accountNumber}}\",\n  \"nonce\": \"{{nonce}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\"\n}"
            }
          }
        },
        {
          "name": "Transfer FAIL",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.collectionVariables.set('nonce', 'nonce_' + Date.now() + '_' + Math.random().toString(36).slice(2,10));"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "FAIL"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              },
              {
                "key": "x-arifpay-transfer-key",
                "value": "{{simTransferKey}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2b/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": {{amount}},\n  \"shortCodes\": \"{{shortCodes}}\",\n  \"accountNumber\": \"{{accountNumber}}\",\n  \"nonce\": \"{{nonce}}\",\n  \"notifyUrl\": \"{{notifyUrl}}\"\n}"
            }
          }
        },
        {
          "name": "Status query",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/b2b/status/query?nonce={{nonce}}"
          }
        }
      ]
    },
    {
      "name": "6. Notify probes",
      "item": [
        {
          "name": "Notify success probe",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "SUCCESS"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/notify/success",
            "body": {
              "mode": "raw",
              "raw": "{}"
            }
          }
        },
        {
          "name": "Notify failed probe",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "x-arifpay-key",
                "value": "{{simArifpayKey}}"
              },
              {
                "key": "x-arifpay-sim-mode",
                "value": "FAIL"
              },
              {
                "key": "x-arifpay-fee-source",
                "value": "{{feeSource}}"
              }
            ],
            "url": "{{baseUrl}}/api/sandbox/c2b/notify/failed",
            "body": {
              "mode": "raw",
              "raw": "{}"
            }
          }
        }
      ]
    }
  ]
}