{"info":{"_postman_id":"420e1f8e-65ae-485e-adf7-2b0dca80d632","name":"Viscount API","description":"<html><head></head><body><p>Viscount Payment APIs provide a secure, scalable, and efficient solution for businesses looking to modernize their payment infrastructure. They enable organizations to seamlessly collect, process, and manage payments while maintaining full control over financial operations. By simplifying complex workflows, businesses can focus more on growth, customer experience, and innovation.</p>\n<p>Through easy integration, Viscount APIs allow payment capabilities to be embedded directly into applications, delivering a smooth and reliable user experience. The platform supports both static and dynamic bank accounts, offering the flexibility to design payment flows that suit different business models, while ensuring transactions are processed securely and in real time.</p>\n<p>Designed for both startups and established enterprises, Viscount Payment APIs offer a dependable foundation for scaling payment operations. Backed by a robust infrastructure and dedicated support team, the platform enables businesses to improve efficiency, enhance transaction experiences, and confidently operate in today’s digital economy.</p>\n<h1 id=\"getting-started\"><strong>Getting Started</strong></h1>\n<p>To integrate Viscount Payment APIs, you must complete a simple onboarding process to ensure compliance and secure access.</p>\n<p><strong>Step 1: Create a Corporate Account</strong></p>\n<p>Register your business via the corporate portal (<a href=\"https://corporate.viscountbank.com\">https://corporate.viscountbank.com</a>) by providing accurate company details. This establishes your organization as an authorized entity.</p>\n<p><strong>Step 2: Complete KYC Verification</strong></p>\n<p>Submit the required documents for KYC verification. Once approved, your account will be activated, and you will gain access to both Sandbox (testing) and Live (production) environments to begin integration.</p>\n<h2 id=\"api-environments\"><strong>API Environments</strong></h2>\n<p>Viscount Payment APIs provide two environments—<strong>Sandbox (Test)</strong> and **Live (Production)**—to support development, testing, and deployment. This ensures integrations are stable and reliable before processing real transactions.</p>\n<h3 id=\"sandbox-test\"><strong>Sandbox (Test)</strong></h3>\n<p>The Sandbox environment allows you to simulate all API features without real financial transactions. You can test payment flows, generate mock account details, simulate transfers, trigger errors, and validate webhooks. It is ideal for development, debugging, and end-to-end testing.</p>\n<h3 id=\"live-production\"><strong>Live (Production)</strong></h3>\n<p>The Live environment is used for real transactions. Once testing is complete, your integration can be moved to Live, where payments are processed against actual accounts. This enables businesses to securely collect payments and operate at full scale.</p>\n<h1 id=\"api-security-and-authentication-framework\"><strong>API Security and Authentication Framework</strong></h1>\n<p>The Viscount Payment API employs a multi-layered authentication and validation framework designed to ensure the security, integrity, and reliability of all transactions.</p>\n<p>This framework is built on three core components:</p>\n<h3 id=\"secret-key-authentication\"><strong>Secret Key Authentication</strong></h3>\n<p>All API requests must include a valid Secret Key in the request headers. The Secret Key serves as the primary method of identifying and authorising API clients. Secret Keys are issued through the Viscount Corporate Internet Banking portal and are unique to each client application. Separate keys are provided for Sandbox and Live environments.</p>\n<h3 id=\"ip-authorisation\"><strong>IP Authorisation</strong></h3>\n<p>In addition to Secret Key authentication, Viscount enforces IP whitelisting across all environments. Only requests originating from pre-registered server IP addresses are accepted. Any request from an unregistered IP address is automatically rejected, significantly reducing the risk of unauthorised access.</p>\n<h3 id=\"idempotency-control\"><strong>Idempotency Control</strong></h3>\n<p>Each API request must include a unique Request Key. This key enables idempotency control, ensuring that duplicate requests, whether caused by network timeouts, client retries, or connectivity issues, are processed only once. This prevents duplicate transactions and maintains data consistency across all operations.</p>\n<p>Together, these measures provide a robust security posture that protects against unauthorised access, prevents duplicate processing, and ensures the integrity of every transaction processed through the Viscount Payment API.</p>\n<h1 id=\"generating-request-key\"><strong>Generating Request Key</strong></h1>\n<p>The Request Key is a unique identifier included in every API request to enable idempotency control. It is composed of four segments concatenated together to produce a key that is virtually impossible to duplicate.</p>\n<p><strong>Structure</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Segment</th>\n<th>Length</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Timestamp</td>\n<td>14 characters</td>\n<td>Current date and time in <code>YYYYMMDDHHmmss</code> format.</td>\n</tr>\n<tr>\n<td>Number Block</td>\n<td>28 characters</td>\n<td>Seven random numbers that sum to 1,000, each zero-padded to 4 digits.</td>\n</tr>\n<tr>\n<td>Alpha Block 1</td>\n<td>7 characters</td>\n<td>Seven random uppercase letters.</td>\n</tr>\n<tr>\n<td>Digit Block</td>\n<td>30 characters</td>\n<td>Thirty random digits.</td>\n</tr>\n<tr>\n<td>Alpha Block 2</td>\n<td>20 characters</td>\n<td>Twenty random uppercase letters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Implementation: PHP</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">function generateRequestKey(): string\n{\n    $date = date('YmdHis');\n    // 7 random numbers that sum to 1000, each zero-padded to 4 digits\n    $numbers = [];\n    $remaining = 1000;\n    for ($i = 0; $i &lt; 6; $i++) {\n        $max = min($remaining - (6 - $i), 9999);\n        $n = rand(1, $max);\n        $numbers[] = $n;\n        $remaining -= $n;\n    }\n    $numbers[] = $remaining;\n    shuffle($numbers);\n    $numPart = implode('', array_map(fn($n) =&gt; str_pad($n, 4, '0', STR_PAD_LEFT), $numbers));\n    // 7 random uppercase letters\n    $alpha7 = '';\n    for ($i = 0; $i &lt; 7; $i++) {\n        $alpha7 .= chr(rand(65, 90));\n    }\n    // 30 random digits\n    $digits30 = '';\n    for ($i = 0; $i &lt; 30; $i++) {\n        $digits30 .= rand(0, 9);\n    }\n    // 20 random uppercase letters\n    $alpha20 = '';\n    for ($i = 0; $i &lt; 20; $i++) {\n        $alpha20 .= chr(rand(65, 90));\n    }\n    return $date . $numPart . $alpha7 . $digits30 . $alpha20;\n}\n\n</code></pre>\n<p><strong>Implementation: Javascript</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">function generateRequestKey() {\n    const now = new Date();\n    const date = now.getFullYear().toString()\n        + String(now.getMonth() + 1).padStart(2, '0')\n        + String(now.getDate()).padStart(2, '0')\n        + String(now.getHours()).padStart(2, '0')\n        + String(now.getMinutes()).padStart(2, '0')\n        + String(now.getSeconds()).padStart(2, '0');\n    // 7 random numbers that sum to 1000, each zero-padded to 4 digits\n    const numbers = [];\n    let remaining = 1000;\n    for (let i = 0; i &lt; 6; i++) {\n        const max = Math.min(remaining - (6 - i), 9999);\n        const n = Math.floor(Math.random() * max) + 1;\n        numbers.push(n);\n        remaining -= n;\n    }\n    numbers.push(remaining);\n    numbers.sort(() =&gt; Math.random() - 0.5);\n    const numPart = numbers.map(n =&gt; String(n).padStart(4, '0')).join('');\n    // 7 random alphabets\n    let alpha7 = '';\n    for (let i = 0; i &lt; 7; i++) {\n        alpha7 += String.fromCharCode(65 + Math.floor(Math.random() * 26));\n    }\n    // 30 random digits\n    let digits30 = '';\n    for (let i = 0; i &lt; 30; i++) {\n        digits30 += Math.floor(Math.random() * 10);\n    }\n    // 20 random alphabets\n    let alpha20 = '';\n    for (let i = 0; i &lt; 20; i++) {\n        alpha20 += String.fromCharCode(65 + Math.floor(Math.random() * 26));\n    }\n    return date + numPart + alpha7 + digits30 + alpha20;\n}\n\n</code></pre>\n<h1 id=\"collecting-payment\"><strong>Collecting Payment</strong></h1>\n<p>Viscount enables you to collect payments through two primary channels: Bank Transfers and Direct Debits.</p>\n<h3 id=\"bank-transfers\"><strong>Bank Transfers</strong></h3>\n<p>With Bank Transfers, you can generate dedicated virtual accounts for your customers to make payments directly into. Viscount supports two types of virtual accounts:</p>\n<p><em>Static Virtual Accounts</em> are permanent accounts assigned to individual customers. A static account can be used repeatedly by the same customer for multiple transactions, making it ideal for recurring payments, subscriptions, and long-term customer relationships.</p>\n<p><em>Dynamic Virtual Accounts</em> are single-use accounts generated for a specific transaction. Once payment is received, the account is automatically closed. Dynamic accounts are suited for one-off payments such as invoices, checkout flows, and payment links.</p>\n<h3 id=\"direct-debits\"><strong>Direct Debits</strong></h3>\n<p>Direct Debits allow you to debit a customer's bank account directly, based on an authorised mandate. Viscount supports two mandate types:</p>\n<p><em>One-Time Mandates</em> authorise a single debit of a specified amount from the customer's account. The mandate expires automatically once the transaction is completed.</p>\n<p><em>Recurring Mandates</em> authorise repeated debits over a defined period. This is ideal for loan repayments, subscription billing, and scheduled collections where the customer has granted standing authorisation.</p>\n<p>All payment collection methods are accessible through the Viscount Payment API, with real-time transaction notifications delivered via webhooks.</p>\n<h2 id=\"making-payments\"><strong>Making Payments</strong></h2>\n<p>The Viscount Payment API enables you to send money to any bank account in Nigeria — whether within Viscount or to any other commercial bank.</p>\n<p><strong>Single Transfers</strong></p>\n<p>Initiate individual transfers to any bank account in real time. Each transfer is processed instantly with a unique reference for tracking and verification.</p>\n<p><strong>Bulk Transfers</strong></p>\n<p>Send payments to multiple recipients in a single API call. Bulk transfers are ideal for salary disbursements, vendor payments, commission payouts, and any scenario requiring high-volume disbursements. Each transfer within a batch is tracked individually, with status updates available per transaction.</p>\n<p>All transfers — whether single or bulk, internal or external — support full transaction verification, real-time status tracking, and webhook notifications upon completion.</p>\n<h1 id=\"response-format\"><strong>Response Format</strong></h1>\n<p>The Viscount Payment API returns two HTTP status codes:</p>\n<h4 id=\"200--success\"><strong>200 — Success</strong></h4>\n<p>A successful request returns a JSON response containing <code>status</code>, <code>message</code>, and <code>data</code>. The <code>status</code> field will always be <code>success</code>, and the <code>data</code> field contains the relevant response payload.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"reference\": \"VST20260411143200\",\n        \"transaction_id\": \"TXN_0012345\",\n        \"amount\": 50000\n    }\n}\n\n</code></pre>\n<h3 id=\"400--error\"><strong>400 — Error</strong></h3>\n<p>A failed request returns a JSON response containing <code>status</code> and <code>message</code> only. The <code>status</code> field will always be <code>error</code>, and the <code>message</code> field provides a description of what went wrong. No <code>data</code> field is included in error responses.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"error\",\n    \"message\": \"Invalid source account number.\"\n}\n\n</code></pre>\n<h1 id=\"webhooks\"><strong>Webhooks</strong></h1>\n<p>Webhooks are an essential part of your integration with Viscount. They allow Viscount to notify your application in real time when events occur on your account, such as a successful payment or a completed transfer.</p>\n<p>A webhook URL is an endpoint on your server that receives these notifications. When an event occurs, Viscount sends a POST request to your endpoint with a JSON body containing the event type, the associated data, and a timestamp.</p>\n<p><strong>Supported Events</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Event</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>transaction-new</code></td>\n<td>A successful credit is received on a virtual account or any account</td>\n</tr>\n<tr>\n<td><code>transfer-successful</code></td>\n<td>An outbound money transfer has been completed successfully</td>\n</tr>\n<tr>\n<td>transfer-error</td>\n<td>An outbound money transfer that has error</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"payload-successful-credit-on-account\"><strong>Payload: Successful Credit on Account</strong></h3>\n<p>Triggered when a payment is received on any account, including virtual accounts.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"event_type\": \"transaction-new\",\n    \"data\": {\n        \"transaction_id\": \"TXN_0012345\",\n        \"account_number\": \"82791089010\",\n        \"reference\": \"de92ui22\",\n        \"transaction_type\": \"CREDIT\"\n    },\n    \"timestamp\": \"2026-04-11T14:23:45+00:00\"\n}\n\n</code></pre>\n<h3 id=\"payload-successful-money-transfer\"><strong>Payload: Successful Money Transfer</strong></h3>\n<p>Triggered when an outbound transfer to another bank account is completed.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"event_type\": \"transfer-successful\",\n    \"data\": {\n        \"reference\": \"de92ui22\"\n    },\n    \"timestamp\": \"2026-04-11T14:23:45+00:00\"\n}\n\n</code></pre>\n<h3 id=\"webhook-security\"><strong>Webhook Security</strong></h3>\n<p>When enabling webhooks, you are required to set a secret hash. Since webhook URLs are publicly accessible, this hash allows you to verify that incoming requests originate from Viscount.</p>\n<p>Choose a random, secure value as your secret hash and store it as an environment variable on your server. Do not hardcode it in your application.</p>\n<p>When a webhook is triggered, Viscount uses the secret hash to sign the request body using HMAC-SHA256. The resulting signature is included in the <code>X-Viscount-Signature</code> header of the webhook request.</p>\n<p>To verify the webhook, compute the HMAC-SHA256 hash of the raw request body using your secret hash and compare the result with the value in the <code>X-Viscount-Signature</code> header. If the values do not match, discard the request — it did not originate from Viscount.</p>\n<p><strong>Example: Verifying in Node.js</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-python\">import hmac, hashlib, os\nsecret = os.environ['VISCOUNT_WEBHOOK_SECRET']\npayload = request.get_data()\nsignature = request.headers.get('X-Viscount-Signature', '')\nexpected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()\nif not hmac.compare_digest(expected, signature):\n    abort(401)\n# Signature valid — process the event\nevent = request.get_json()\n\n</code></pre>\n<h3 id=\"handling-webhooks\"><strong>Handling Webhooks</strong></h3>\n<p>Your endpoint should return a <code>200</code> status code as quickly as possible to acknowledge receipt. Perform any time-consuming processing asynchronously after sending the acknowledgement. If Viscount does not receive a <code>200</code> response, the delivery will be recorded as failed.</p>\n<p>Always use the raw request body for signature verification. Parsing the JSON first and re-encoding it may alter key ordering or formatting, causing the signature comparison to fail.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Getting Started","slug":"getting-started"},{"content":"API Security and Authentication Framework","slug":"api-security-and-authentication-framework"},{"content":"Generating Request Key","slug":"generating-request-key"},{"content":"Collecting Payment","slug":"collecting-payment"},{"content":"Response Format","slug":"response-format"},{"content":"Webhooks","slug":"webhooks"}],"owner":"53732763","collectionId":"420e1f8e-65ae-485e-adf7-2b0dca80d632","publishedId":"2sBXitBn16","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-13T08:05:23.000Z"},"item":[{"name":"Virtual Accounts","item":[{"name":"Create Virtual Account","id":"86080219-f6e3-4932-80ee-4de4e56d4521","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\": \"CREATE_ACCOUNT\",\n    \"parent_account_number\": \"1000211487\",\n    \"account_name\": \"ADEDEJI AWOLOLA\",\n    \"account_type_code\": \"VIRTUAL_ACCOUNT\"\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>CREATE_ACCOUNT</code>.</td>\n</tr>\n<tr>\n<td><code>account_type_code</code></td>\n<td>Viscount supports two account type codes. <code>VIRTUAL_ACCOUNT_DYNAMIC</code> creates a virtual account that expires after a specified period. <code>VIRTUAL_ACCOUNT</code> creates a static account that does not expire.</td>\n</tr>\n<tr>\n<td><code>account_name</code></td>\n<td>The name of the account to be created. Please note that the business virtual account prefix will be appended to the account name. The final account name will appear as: <em>BusinessName (the account name you provided)</em>.</td>\n</tr>\n<tr>\n<td><code>parent_account_number</code></td>\n<td>The account number of the business creating the virtual account. For the <code>VIRTUAL_ACCOUNT_DYNAMIC</code> account type, this is the account into which payments will be settled.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["virtual-accounts"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"43f4b127-9ef2-460f-9ed5-9cc9b257170f","name":"Create Virtual Account - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"CREATE_ACCOUNT\",\n    \"parent_account_number\": \"1000211487\",\n    \"account_name\": \"ADEDEJI AWOLOLA\",\n    \"account_type_code\": \"VIRTUAL_ACCOUNT\"\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 14:35:06 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"account_name\": \"Clement Ad-ADEDEJI AWOLOLA\",\n        \"account_number\": \"1000211576\",\n        \"reference\": \"060071602681\",\n        \"account_type_code\": \"VIRTUAL_ACCOUNT\",\n        \"parent_account_number\": \"1000211487\"\n    }\n}"}],"_postman_id":"86080219-f6e3-4932-80ee-4de4e56d4521"},{"name":"Update Virtual Account","id":"e4a4ad03-c278-4557-8b3f-06d3c7f32386","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"UPDATE_ACCOUNT_NUMBER\",\n    \"account_number\": \"1000211576\",\n    \"status\": \"INACTIVE\" //INACTIVE\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>UPDATE_ACCOUNT</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number to be updated.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>The status to apply to the account. There are currently two options: <code>ACTIVE</code> and <code>INACTIVE</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["virtual-accounts"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"eafbe8f9-09ed-4cb9-a2f3-4b735e92aece","name":"Update Virtual Account - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"UPDATE_ACCOUNT_NUMBER\",\n    \"account_number\": \"1000211576\",\n    \"account_name\": \"ADEDEJI AWOLOLA\",\n    \"status\": \"INACTIVE\" //INACTIVE\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 14:37:24 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\"\n}"}],"_postman_id":"e4a4ad03-c278-4557-8b3f-06d3c7f32386"},{"name":"Account Enquiry","id":"abe7ae19-2158-4e69-a5f1-b559a56a53de","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\": \"ACCOUNT_ENQUIRY\",\n    \"account_number\": \"1000211576\",\n    \"start_date\": \"2026-01-01\",\n    \"end_date\": \"2026-01-01\"\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>ACCOUNT_ENQUIRY</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number to retrieve the enquiry for.</td>\n</tr>\n<tr>\n<td><code>start_date</code></td>\n<td>The start date for the enquiry period.</td>\n</tr>\n<tr>\n<td><code>end_date</code></td>\n<td>The end date for the enquiry period.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["virtual-accounts"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"2be9575c-787f-4401-a6c0-fb21cbe70e46","name":"Account Enquiry - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\": \"ACCOUNT_ENQUIRY\",\n    \"account_number\": \"1000211576\",\n    \"start_date\": \"2026-01-01\",\n    \"end_date\": \"2026-01-01\"\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 16:06:11 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"details\": {\n            \"total_debit\": 0,\n            \"total_credit\": 0,\n            \"closing_balance\": 0,\n            \"opening_balance\": 0\n        },\n        \"transactions\": [\n            {\n                \"transaction_id\": \"\",\n                \"transaction_date\": \"01/01/2026\",\n                \"value_date\": \"01/01/2026\",\n                \"reference_no\": null,\n                \"details\": \"Opening Balance\",\n                \"transaction_type\": null,\n                \"amount\": null,\n                \"balance\": 0\n            }\n        ]\n    }\n}"}],"_postman_id":"abe7ae19-2158-4e69-a5f1-b559a56a53de"}],"id":"baca9912-6cda-4da6-a6a3-7aadc325feaf","description":"<p>This section covers the endpoints for managing virtual accounts. You can create static and dynamic virtual accounts, update existing account details, and retrieve account information through account enquiry.</p>\n","_postman_id":"baca9912-6cda-4da6-a6a3-7aadc325feaf"},{"name":"Transaction","item":[{"name":"Verify Transaction","id":"cf4841a3-883b-4459-91ab-36fe3f4a5702","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"VERIFY_TRANSACTION\",\n    \"account_number\": \"1000211576\",\n    \"transaction_id\": \"20260402195705CDLCCWDWKJ\",\n    \"reference\":\"000966444324566658283981389895\"\n}","options":{"raw":{"language":"json"}}},"url":"/transactions","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>VERIFY_TRANSACTION</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number associated with the transaction.</td>\n</tr>\n<tr>\n<td><code>transaction_id</code></td>\n<td>The transaction ID of the transaction to be verified.</td>\n</tr>\n<tr>\n<td><code>reference</code></td>\n<td>The reference of the transaction to be verified.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["transactions"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"fa466a17-f3e4-4dd6-9f75-19d70fd50072","name":"Verify Transaction - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"VERIFY_TRANSACTION\",\n    \"account_number\": \"1000211576\",\n    \"transaction_id\": \"20260402195705CDLCCWDWKJ\",\n    \"reference\":\"000966444324566658283981389895\"\n}","options":{"raw":{"language":"json"}}},"url":"/virtual-accounts"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 16:18:39 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"account_number\": \"1000211487\",\n        \"amount\": 5000,\n        \"transaction_id\": \"20260402195705CDLCCWDWKJ\",\n        \"reference\": \"000966444324566658283981389895\",\n        \"transaction_type\": \"CREDIT\",\n        \"narration\": \"CP/IFY OBI/PAYMENT FOR FOOD\",\n        \"status\": \"SUCCESS\",\n        \"transaction_mode\": \"CORAL_PAY\",\n        \"transaction_time\": \"2026-04-02T18:57:05.000000Z\",\n        \"inward\": {\n            \"from_account_name\": \"Ify Obi\",\n            \"from_account_number\": \"2001223145\",\n            \"provider\": \"CORAL_PAY\"\n        }\n    }\n}"}],"_postman_id":"cf4841a3-883b-4459-91ab-36fe3f4a5702"}],"id":"7b9e1d0d-1055-4e3c-9fd2-cfd879074a63","_postman_id":"7b9e1d0d-1055-4e3c-9fd2-cfd879074a63","description":""},{"name":"Money Transfer","item":[{"name":"Name Enquiry","id":"81d60e69-b05d-4492-9b65-1c07179bae1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"NAME_ENQUIRY\",\n    \"account_number\": \"1000211487\",\n    \"account_type\": \"VISCOUNT\",\n    \"bank_code\": \"00057\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>NAME_ENQUIRY</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number to retrieve the name enquiry for.</td>\n</tr>\n<tr>\n<td><code>account_type</code></td>\n<td>The type of account to query. Two options are supported: <code>VISCOUNT</code> for internal accounts and <code>OTHER_BANKS</code> for accounts held at other banks.</td>\n</tr>\n<tr>\n<td><code>bank_code</code></td>\n<td>The bank code of the destination bank. This is required when <code>account_type</code> is <code>OTHER_BANKS</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"299841b5-7466-4298-b9cd-66f7fe44c7df","name":"Name Enquiry","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"NAME_ENQUIRY\",\n    \"account_number\": \"1000211487\",\n    \"account_type\": \"VISCOUNT\", //VISCOUNT OTHER_BANKS\n    \"bank_code\": \"00057\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 17:00:31 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"name_enquiry_reference\": \"476574168617389919078512395653\",\n        \"account_name\": \"Clement Adebayo Abayomi\",\n        \"status\": \"ACTIVE\",\n        \"account_number\": \"1000211487\",\n        \"bvn\": null,\n        \"kyc\": 1\n    }\n}"}],"_postman_id":"81d60e69-b05d-4492-9b65-1c07179bae1a"},{"name":"Send Money (Single)","id":"878e199a-199d-433a-a14a-1234ead558c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"SEND_MONEY\",\n    \"account_number\": \"1000211521\",\n    \"account_type\": \"VISCOUNT\", //VISCOUNT OTHER_BANKS\n    \"amount\": 1000,\n    \"subject_to_approval\": \"NO\",\n    \"from_account_number\":\"1000211487\",\n    \"reference\":\"678986568909MMKLOdPP\",\n    \"narration\":\"PAYMENT OF BRIDE PRICE FOR OPE\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>NAME_ENQUIRY</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number to retrieve the name enquiry for.</td>\n</tr>\n<tr>\n<td><code>account_type</code></td>\n<td>The type of account to query. Two options are supported: <code>VISCOUNT</code> for internal accounts and <code>OTHER_BANKS</code> for accounts held at other banks.</td>\n</tr>\n<tr>\n<td><code>bank_code</code></td>\n<td>The bank code of the destination bank. This is required when <code>account_type</code> is <code>OTHER_BANKS</code>.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>The amount to be transferred.</td>\n</tr>\n<tr>\n<td><code>subject_to_approval</code></td>\n<td>Indicates whether the transfer requires approval before processing. Accepted values are <code>YES</code> and <code>NO</code>.</td>\n</tr>\n<tr>\n<td><code>from_account_number</code></td>\n<td>The account number to send money from.</td>\n</tr>\n<tr>\n<td><code>reference</code></td>\n<td>A unique reference for the transaction. This is used to prevent duplicate processing.</td>\n</tr>\n<tr>\n<td><code>narration</code></td>\n<td>A description or note for the transaction.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"92f0ba5b-673c-4092-93e7-e6645428c522","name":"Send Money (Single) - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"SEND_MONEY\",\n    \"account_number\": \"1000211521\",\n    \"account_type\": \"VISCOUNT\", //VISCOUNT OTHER_BANKS\n    \"amount\": 1000,\n    \"subject_to_approval\": \"NO\",\n    \"from_account_number\":\"1000211487\",\n    \"reference\":\"678986568909MMKLOdPP\",\n    \"narration\":\"PAYMENT OF BRIDE PRICE FOR OPE\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:03:17 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"reference\": \"678986568909MMKLOdPP\",\n        \"transaction_id\": \"20260411200317H1ZDA70MSD\"\n    }\n}"}],"_postman_id":"878e199a-199d-433a-a14a-1234ead558c4"},{"name":"Create Transfer Batch","id":"623cb6ed-949c-4f20-b778-ecda447ab3fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"CREATE_TRANSFER_BATCH\",\n    \"from_account_number\":\"1000211487\",\n    \"batch_title\":\"SALARY PAYMENT\",\n    \"transfers\" : [\n        {\n            \"account_number\":\"1000211497\",\n            \"type\":\"VISCOUNT\",\n            \"amount\": 8000,\n            \"narration\":\"ADEDEJI AWOLOLA SALARY PAYMENT\",\n            \"bank_code\":\"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>CREATE_TRANSFER_BATCH</code>.</td>\n</tr>\n<tr>\n<td><code>batch_title</code></td>\n<td>The title of the batch, e.g. <code>SALARY PAYMENT FOR JANUARY 2026</code>.</td>\n</tr>\n<tr>\n<td><code>from_account_number</code></td>\n<td>The account number to send money from.</td>\n</tr>\n<tr>\n<td><code>transfers</code></td>\n<td>An array of transfer objects. Each object contains the fields described below.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Transfer Object</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>account_number</code></td>\n<td>The destination account number.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>The transfer type. Use <code>VISCOUNT</code> for internal transfers and <code>OTHER_BANKS</code> for transfers to other banks.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>The amount to be transferred.</td>\n</tr>\n<tr>\n<td><code>narration</code></td>\n<td>A description or note for the transaction.</td>\n</tr>\n<tr>\n<td><code>bank_code</code></td>\n<td>The bank code of the destination bank. Required when <code>type</code> is <code>OTHER_BANKS</code>. Leave empty for <code>VISCOUNT</code> transfers.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"915e88d5-6228-45dd-8740-2b78ce15fdf2","name":"Create Transfer Batch - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"CREATE_TRANSFER_BATCH\",\n    \"from_account_number\":\"1000211487\",\n    \"batch_title\":\"SALARY PAYMENT\",\n    \"transfers\" : [\n        {\n            \"account_number\":\"1000211497\",\n            \"type\":\"VISCOUNT\",\n            \"amount\": 8000,\n            \"narration\":\"ADEDEJI AWOLOLA SALARY PAYMENT\",\n            \"bank_code\":\"\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:25:37 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Bulk Transfer Queued Successfully\",\n    \"data\": {\n        \"batch_id\": \"051126260411202537782393912540\"\n    }\n}"}],"_postman_id":"623cb6ed-949c-4f20-b778-ecda447ab3fd"},{"name":"Approve Transfer Batch","id":"10163ae7-9e3c-4423-84df-98aa5eeb1ed2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"APPROVE_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411202537782393912540\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>APPROVE_TRANSFER_BATCH</code>.</td>\n</tr>\n<tr>\n<td><code>batch_id</code></td>\n<td>The batch ID of the batch to be approved.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"e8aebd07-f4d2-42a8-8c93-2c3067bda22e","name":"Approve Transfer Batch - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"APPROVE_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411202537782393912540\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:31:39 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Batch Approved Successfully\"\n}"}],"_postman_id":"10163ae7-9e3c-4423-84df-98aa5eeb1ed2"},{"name":"Cancel Transfer Batch","id":"cdb58e46-b007-4e13-be30-9ee6653af9ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"CANCEL_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411202537782393912540\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>CANCEL_TRANSFER_BATCH</code>.</td>\n</tr>\n<tr>\n<td><code>batch_id</code></td>\n<td>The batch ID of the batch to be cancelled.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"01de0164-c207-4ccf-b35e-94d0f7217e67","name":"Cancel Transfer Batch - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"APPROVE_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411202537782393912540\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:31:39 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Batch Approved Successfully\"\n}"}],"_postman_id":"cdb58e46-b007-4e13-be30-9ee6653af9ae"},{"name":"Get Batch","id":"3f7ea991-f97e-4e12-8fb3-2d5f324c8165","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"GET_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411205427287611731074\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>GET_TRANSFER_BATCH</code>.</td>\n</tr>\n<tr>\n<td><code>batch_id</code></td>\n<td>The batch ID of the batch to be retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"de0ba62f-2aa3-4cd6-bdf4-cfa3521da830","name":"Get Batch - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"GET_TRANSFER_BATCH\",\n    \"batch_id\":\"051126260411202537782393912540\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":"","header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:42:03 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"batch\": {\n            \"batch_title\": \"SALARY PAYMENT\",\n            \"batch_id\": \"051126260411202537782393912540\",\n            \"created_at\": \"2026-04-11T19:25:37.000000Z\",\n            \"total_transfers\": 1,\n            \"new_transfers\": 0,\n            \"error_transfers\": 0,\n            \"approved_transfers\": 0,\n            \"cancelled_transfers\": 0,\n            \"pending_transfers\": 1\n        },\n        \"transfers\": [\n            {\n                \"account_number\": \"1000211497\",\n                \"transfer_type\": \"VISCOUNT\",\n                \"amount\": \"8000\",\n                \"narration\": \"ADEDEJI AWOLOLA SALARY PAYMENT\",\n                \"bank_code\": null,\n                \"status\": \"PENDING\",\n                \"reference\": \"051126260411202537784320677989\",\n                \"created_at\": \"2026-04-11T19:25:37.000000Z\"\n            }\n        ]\n    }\n}"}],"_postman_id":"3f7ea991-f97e-4e12-8fb3-2d5f324c8165"},{"name":"Transfer Status","id":"970b8c0b-2e3d-4a0a-a7dc-4ad283f91458","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"TRANSFER_STATUS\",\n    \"reference\":\"051126260411205427515805070443\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>STATUS_TRANSFER</code>.</td>\n</tr>\n<tr>\n<td><code>reference</code></td>\n<td>The reference of the transfer to retrieved.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["money-transfer"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"82bca5ea-e7ed-47c1-832e-5f4dd84b85f6","name":"Transfer Status - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"TRANSFER_STATUS\",\n    \"reference\":\"051126260411205427515805070443\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:56:44 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"58"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"account_number\": \"1000211497\",\n        \"amount\": \"8000\",\n        \"narration\": \"ADEDEJI AWOLOLA SALARY PAYMENT\",\n        \"reference\": \"051126260411205427515805070443\",\n        \"created_at\": \"2026-04-11T19:54:27.000000Z\",\n        \"status\": \"NEW_BULK_TRANSFER\"\n    }\n}"}],"_postman_id":"970b8c0b-2e3d-4a0a-a7dc-4ad283f91458"}],"id":"c745d1c1-5f45-425c-8440-80a323322fbc","_postman_id":"c745d1c1-5f45-425c-8440-80a323322fbc","description":""},{"name":"Direct Debits","item":[{"name":"Create Direct Debit","id":"9e40c7f2-a771-4ebd-86e2-a048dc1b36b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"INITIATE\",\n    \"account_number\":\"1000211487\", \n    \"narration\":\"BET PAWA ONE TIME PAYMENT\", \n    \"amount\":5000, \n    \"account_type\":\"VISCOUNT\", \n    \"settlement_account_number\":\"1000211545\",\n    \"bank_code\" : \"\",\n    \"type\" : \"ONE_TIME\",\n    \"start_date\" : \"\",\n    \"end_date\":\"\"\n}","options":{"raw":{"language":"json"}}},"url":"/direct-debit","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>INITIATE</code>.</td>\n</tr>\n<tr>\n<td><code>account_number</code></td>\n<td>The account number to be debited.</td>\n</tr>\n<tr>\n<td><code>narration</code></td>\n<td>A description or note for the mandate.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>The amount to be debited per transaction.</td>\n</tr>\n<tr>\n<td><code>account_type</code></td>\n<td>The type of account to be debited. Use <code>VISCOUNT</code> for internal accounts and <code>OTHER_BANKS</code> for accounts held at other banks.</td>\n</tr>\n<tr>\n<td><code>settlement_account_number</code></td>\n<td>The Viscount account number where debited funds will be settled.</td>\n</tr>\n<tr>\n<td><code>bank_code</code></td>\n<td>The bank code of the account to be debited. Required when <code>account_type</code> is <code>OTHER_BANKS</code>. Leave empty for <code>VISCOUNT</code> accounts.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>The mandate type. Use <code>ONE_TIME</code> for a single debit or <code>RECURRING</code> for repeated debits over a defined period.</td>\n</tr>\n<tr>\n<td><code>start_date</code></td>\n<td>The start date for the mandate. Required when <code>type</code> is <code>RECURRING</code>. Leave empty for <code>ONE_TIME</code> mandates.</td>\n</tr>\n<tr>\n<td><code>end_date</code></td>\n<td>The end date for the mandate. Required when <code>type</code> is <code>RECURRING</code>. Leave empty for <code>ONE_TIME</code> mandates.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["direct-debit"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"b673ad56-c7f3-49f6-9d00-ca606b50b8fe","name":"Create Direct Debit - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"INITIATE\",\n    \"account_number\":\"1000211487\", \n    \"narration\":\"BET PAWA ONE TIME PAYMENT\", \n    \"amount\":5000, \n    \"account_type\":\"VISCOUNT\", \n    \"settlement_account_number\":\"1000211545\",\n    \"bank_code\" : \"\",\n    \"type\" : \"ONE_TIME\",\n    \"start_date\" : \"\",\n    \"end_date\":\"\"\n}","options":{"raw":{"language":"json"}}},"url":"/direct-debit"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 20:25:44 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"reference\": \"051126260411212544786729315902\",\n        \"mandate_id\": \"20260411092544082082\",\n        \"authorization_url\": \"https://authorize.viscountbank.com/20260411092544082082\"\n    }\n}"}],"_postman_id":"9e40c7f2-a771-4ebd-86e2-a048dc1b36b7"},{"name":"Debit Mandate","id":"d331c54e-7ca9-406b-a97a-4fa6aa98aaa9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"DEBIT_MANDATE\",\n    \"mandate_id\":\"1000211487\", \n    \"amount\":5000\n}","options":{"raw":{"language":"json"}}},"url":"/direct-debit","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>DEBIT_MANDATE</code>.</td>\n</tr>\n<tr>\n<td><code>mandate_id</code></td>\n<td>The ID of the mandate to be debited.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>The amount to be debited from the mandated account.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["direct-debit"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"d6ae0e6e-c422-4221-8184-d1709a17770a","name":"Debit Mandate - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"SEND_MONEY\",\n    \"account_number\": \"1000211521\",\n    \"account_type\": \"VISCOUNT\", //VISCOUNT OTHER_BANKS\n    \"amount\": 1000,\n    \"subject_to_approval\": \"NO\",\n    \"from_account_number\":\"1000211487\",\n    \"reference\":\"678986568909MMKLOdPP\",\n    \"narration\":\"PAYMENT OF BRIDE PRICE FOR OPE\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:03:17 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"reference\": \"678986568909MMKLOdPP\",\n        \"transaction_id\": \"20260411200317H1ZDA70MSD\"\n    }\n}"}],"_postman_id":"d331c54e-7ca9-406b-a97a-4fa6aa98aaa9"},{"name":"Get One Mandate","id":"ad42d4b5-a78a-48aa-84a7-97cda8291c1b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Request-Key","value":"","description":"<p>This must be unique for every API request. Please refer to the API documentation for instructions on how to generate the Request Key.</p>\n","type":"text"},{"key":"Secret-Key","value":"","description":"<p>A unique identifier assigned to each business using the API service.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"DEBIT_MANDATE\",\n    \"mandate_id\":\"1000211487\", \n    \"amount\":5000\n}","options":{"raw":{"language":"json"}}},"url":"/direct-debit","description":"<p><strong>Body Parameters</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action</code></td>\n<td>The action for this endpoint is <code>CANCEL_MANDATE</code>.</td>\n</tr>\n<tr>\n<td><code>mandate_id</code></td>\n<td>The ID of the mandate to be cancelled.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["direct-debit"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"643b304d-0a12-4d01-818b-b2e68b4ceb9e","name":"Debit Mandate - Successful Response","originalRequest":{"method":"POST","header":[{"key":"Request-Key","value":"","type":"text"},{"key":"Secret-Key","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action\":\"SEND_MONEY\",\n    \"account_number\": \"1000211521\",\n    \"account_type\": \"VISCOUNT\", //VISCOUNT OTHER_BANKS\n    \"amount\": 1000,\n    \"subject_to_approval\": \"NO\",\n    \"from_account_number\":\"1000211487\",\n    \"reference\":\"678986568909MMKLOdPP\",\n    \"narration\":\"PAYMENT OF BRIDE PRICE FOR OPE\"\n}","options":{"raw":{"language":"json"}}},"url":"/money-transfer"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":":status","value":200},{"key":"server","value":"nginx"},{"key":"date","value":"Sat, 11 Apr 2026 19:03:17 GMT"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding, Accept-Encoding,User-Agent"},{"key":"cache-control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"x-ratelimit-limit","value":"60"},{"key":"x-ratelimit-remaining","value":"59"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, DELETE, OPTIONS"},{"key":"access-control-allow-headers","value":"Content-Type, Authorization, X-Requested-With, X-CSRF-TOKEN"},{"key":"access-control-allow-credentials","value":"true"},{"key":"content-encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"reference\": \"678986568909MMKLOdPP\",\n        \"transaction_id\": \"20260411200317H1ZDA70MSD\"\n    }\n}"}],"_postman_id":"ad42d4b5-a78a-48aa-84a7-97cda8291c1b"}],"id":"10939483-b2f9-4f06-92bf-26983c7d1203","_postman_id":"10939483-b2f9-4f06-92bf-26983c7d1203","description":""}],"event":[{"listen":"prerequest","script":{"id":"3f834eb8-7133-4a26-8590-e24904bdf399","type":"text/javascript","packages":{},"requests":{},"exec":["function generateSecret() {","    const now = new Date();","    const date = now.getFullYear().toString()","        + String(now.getMonth() + 1).padStart(2, '0')","        + String(now.getDate()).padStart(2, '0')","        + String(now.getHours()).padStart(2, '0')","        + String(now.getMinutes()).padStart(2, '0')","        + String(now.getSeconds()).padStart(2, '0');","","    const numbers = [];","    let remaining = 1000;","    for (let i = 0; i < 6; i++) {","        const max = Math.min(remaining - (6 - i), 9999);","        const n = Math.floor(Math.random() * max) + 1;","        numbers.push(n);","        remaining -= n;","    }","    numbers.push(remaining);","    numbers.sort(() => Math.random() - 0.5);","    const numPart = numbers.map(n => String(n).padStart(4, '0')).join('');","","    let alpha7 = '';","    for (let i = 0; i < 7; i++) {","        alpha7 += String.fromCharCode(65 + Math.floor(Math.random() * 26));","    }","","    let digits30 = '';","    for (let i = 0; i < 30; i++) {","        digits30 += Math.floor(Math.random() * 10);","    }","","    let alpha20 = '';","    for (let i = 0; i < 20; i++) {","        alpha20 += String.fromCharCode(65 + Math.floor(Math.random() * 26));","    }","","    return date + numPart + alpha7 + digits30 + alpha20;","}","","// Generate and store variable","pm.variables.set(\"requestKey\", generateSecret());"]}},{"listen":"test","script":{"id":"e1276cbd-f51f-4f58-be41-b59993af6319","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"environment","value":""},{"key":"Request-Key","value":""},{"key":"Secret-key","value":""}]}