{"info":{"_postman_id":"ec7e062e-ee83-4f44-9214-2a2f6222e4b4","name":"Paygate Plus - Documentation","description":"<html><head></head><body><h1 id=\"build-on-reliable-banking-infrastructure\">Build on reliable banking infrastructure</h1>\n<p>At Fidelity, payment processing and classic banking, we remain committed to a collaborative effort to expand the opportunities that financial services represent and deepen financial inclusion.</p>\n<p>The bouquet of APIs on Paygate Plus helps to further this objective.</p>\n<h1 id=\"want-to-try-it-quickly\">Want to try it quickly?</h1>\n<p>To get started, sign up for Paygate Plus by visiting <a href=\"https://paygateplus.ng\">https://paygateplus.ng</a>. Once your account has been approved, you will receive an invite email to set your password on the platform.</p>\n<ol>\n<li><p>Set up your password</p>\n</li>\n<li><p>Login with newly set password</p>\n</li>\n<li><p>Go to <strong>My Settings</strong></p>\n</li>\n<li><p>GO to <strong>API Settings</strong></p>\n</li>\n<li><p>Generate your <strong>API key</strong> and <strong>secret</strong></p>\n</li>\n<li><p>Click <strong>Save Changes</strong> to save the newly generated API credentials</p>\n</li>\n</ol>\n<h1 id=\"general-api-information\">General API information</h1>\n<p>The APIs are fairly RESTFUL and organized around the main services you would be interacting with. You can simply import this collection from the top right of the page into your <strong>Postman</strong>.</p>\n<p>The base url currently sits at:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://api.paygateplus.ng\n\n</code></pre><h1 id=\"authentication-headers\">Authentication headers</h1>\n<p>Authenticate your API calls by including your API key in the Authorization header of every request you make. You can manage your API keys from your dashboard.</p>\n<p><strong>Online Encryption Tool:</strong><br><a href=\"https://onepipe.io/tools/encryptor/Home/Encrypt\">https://onepipe.io/tools/encryptor/Home/Encrypt</a></p>\n<p><em><strong>Sample Authorization Header:</strong></em></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {api_key}\n\n</code></pre><p>Also, every request requires you to provide a unique <code>request-ref</code> per call. Then You'd need to add a custom header called <code>Signature</code> that's an MD5 hash of that <code>request-ref</code> and your <code>api-secret</code> separated by a semi-colon. <code>;</code>.</p>\n<p><em><strong>Sample Signature Header:</strong></em></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Signature:MD5Hash(request_ref;client_secret)\n\n</code></pre><p>Your complete header for evey single call will look like:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Content-Type:application/json\nAuthorization:Bearer 93qb3RbJgRfZDb9BcmzG_cbcc214131d646b7adb7206f8589a878\nSignature:{{MD5Hash(request_ref;client_secret)}}\n\n</code></pre><h1 id=\"what-requests-would-look-like\">What requests would look like</h1>\n<p>For all requests, you'd put a JSON object in the body of your API call. All payloads have the following high level construct:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">    {\n      \"request_ref\":\"0000000001\",\n      \"request_type\":\"collect | disburse |etc\",\n      \"auth\": {\n        \"type\": \"bvn | bank.account\", \n        \"secure\": \"YKBOxtdD8kZHqG7JO0C9TZ\",\n        \"auth_provider\": \"Fidelity\"\n      },\n      \"transaction\": {\n        \"amount\": 10000,\n        \"transaction_ref\": \"000001\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref-parent\": \"000001\",\n        \"customer\":{\n            \"customer_ref\": \"000001\",\n            \"firstname\": \"Kola\",\n          \"surname\": \"Eboe\",\n            \"email\": \"kolaebue@gmail.com\",\n            \"mobile_no\": \"2348009871412\"\n        },\n        \"meta\":{\n            \"a_key\":\"a_meta_value_1\",\n            \"b_key\":\"a_meta_value_2\"\n        },\n        \"details\": {\n            \"key\": 'value'\n        }\n      }\n    }\n\n</code></pre>\n<h4 id=\"request-body-elements\">Request body elements</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Requirement</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference for this API call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>string</td>\n<td>compulsory</td>\n<td>Set to <code>get_statement</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>string</td>\n<td>optional</td>\n<td>Depends on what the provider requires to get a statement. Most times, will be <code>bank.account</code>.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>string</td>\n<td>optional</td>\n<td>If a type is set, then encrypt the value here.</td>\n</tr>\n<tr>\n<td>auth.auth_provider</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The Provider against which you want to open the account. e.g. <code>GTBank</code></td>\n</tr>\n<tr>\n<td>auth.route_mode</td>\n<td>string</td>\n<td>optional</td>\n<td>Set to <code>null</code></td>\n</tr>\n<tr>\n<td>transaction.mock_mode</td>\n<td>string</td>\n<td>compulsory</td>\n<td>Set to <code>inspect</code> (for test mode) or <code>live</code> (for live mode)</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference for the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction.desc</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A short description or narration</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>string</td>\n<td>optional</td>\n<td>Can be set to <code>null</code>. But if you are repeating an prior transaction, you can set it to the <code>transaction_ref</code> of the former transaction to create a link for easy tracking.</td>\n</tr>\n<tr>\n<td>amount</td>\n<td>int</td>\n<td>compulsory</td>\n<td>Set to <code>0</code></td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference to identify this customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The firstname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The email of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.start_date</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The start date of the date range for which the statement is required. (yyyy-MM-dd)</td>\n</tr>\n<tr>\n<td>transaction.details.end_date</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The end date of the date range for which the statement is required. (yyyy-MM-dd)</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"what-responses-would-look-like\">What responses would look like</h1>\n<p>For all responses, you'd get a JSON object in the body of the response you receive. All payloads have the following high level construct:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">    {\n        \"status\": \"Processing | WaitingForOTP | ProcessingOTP | Successful | Failed | OfflineValidating | OfflineValidated | OfflineNotifying | OfflineNotified\",\n        \"message\": \"The transaction has been processed successully\",\n        \"data\": {\n            \"provider_responde_code\":\"00\",\n            \"provider\": \"Fidelity\",\n            \"errors\": [],\n            \"error\": null,\n            \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n            \"paymentoptions\": []\n        }\n    }\n\n</code></pre>\n<ul>\n<li><p><strong>status</strong>: Indicates the state of the request, whether successful, failed or anything in between</p>\n</li>\n<li><p><strong>message</strong>: Provides a text description of the state of the request and at times a message for the customer</p>\n</li>\n<li><p><strong>data</strong>: Will contain much more details of the outcome of the request. The values within this could vary by request type or endpoint called but some standard elements would be in almost all calls</p>\n</li>\n<li><p><strong>provider_response_code</strong>: The actual response code received from the underlying provider, e.g. <code>00</code> for Quickteller</p>\n</li>\n<li><p><strong>provider</strong>: The provider that was used to process the request</p>\n</li>\n<li><p><strong>errors</strong>: In case of a failed transaction, this contains the lists of errors that occurred while processing the transaction</p>\n</li>\n<li><p><strong>error</strong>: This contain the most important error that hinders the successful completion of the transaction.<br>  We highly recommend that developers use the Errors field to determine the result of an API call. As an empty Errors node indicate a successful transaction.</p>\n</li>\n</ul>\n<p><strong>NOTE</strong>: Some API calls may have response elements that are only applicable to those API calls. You will see examples in the provided postman collection and across the documentation.</p>\n<h1 id=\"standard-status-codes\">Standard status codes</h1>\n<ul>\n<li><p><strong>Successful</strong>: For all requests that were successfully processed</p>\n</li>\n<li><p><strong>Failed</strong>: If a request fails. Read the errors object(s)</p>\n</li>\n<li><p><strong>WaitingForOTP</strong>: If a request requires OTP validation for completion.</p>\n</li>\n<li><p><strong>PendingValidation</strong>: If a request requires other information to be supplied for completion.</p>\n</li>\n<li><p><strong>Processing</strong>: If a transaction request is still in a processing state and needs to be subsequently queried.</p>\n</li>\n<li><p><strong>OptionsDelivered</strong>: Applicable only for services that support some form of options processing.</p>\n</li>\n<li><p><strong>InvalidID</strong>: If an ID being looked up by service is not valid.</p>\n</li>\n<li><p><strong>Fraud</strong>: If a request is flagged as suspicious.</p>\n</li>\n<li><p><strong>Duplicate</strong>: If a similar request has been made earlier within a stipulated time frame of 5 minutes.</p>\n</li>\n<li><p><strong>[Anything else]</strong>: This would vary per endpoint called. Applicable values would be in the documentation for that endpoint.</p>\n</li>\n</ul>\n<h1 id=\"http-status-codes\">HTTP Status Codes</h1>\n<ul>\n<li><p><strong>200</strong>: A successful request occurred, do note that the description field on the response can contain further steps to be carried on this transaction</p>\n</li>\n<li><p><strong>400</strong>: Data validation error occurred due to inconsistent data supplied by the client</p>\n</li>\n<li><p><strong>401</strong>: Invalid request authorization, which might be due to invalid API key or the client is not registered for the service being accessed.</p>\n</li>\n<li><p><strong>500</strong>: An internal server error at our End, this should be reported if it persists.</p>\n</li>\n</ul>\n<h1 id=\"encryption-of-secure-element\">Encryption of Secure element</h1>\n<p>For encryption of values for the <code>auth.secure</code> field, you'd use Triple DES Encryption algorithm with your application secret key as the encryption key</p>\n<p>E.g.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>TripleDES.encrypt(\"{bvn}\",secretKey)\nTripleDES.encrypt(\"{bank_account;bank_code}\",secretKey)\nTripleDES.encrypt(\"{otp}\",secretKey)\n\n</code></pre><p><strong>NOTE For DCIR:</strong></p>\n<p>CVV is not required for Card-Present transactions, the cvv position should be left empty.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>TripleDES.encrypt(\"{card.Pan;card.Cvv;card.Expdate;card.Pin}\",secretKey) =&gt; Card-Not-Present\nTripleDES.encrypt(\"{card.Pan;;card.Expdate;card.Pinblock}\",secretKey) =&gt; Card-Present\n\n</code></pre><p><strong>NOTE</strong> Expiry date is YYMM</p>\n<h2 id=\"sample-encryption-in-java\">Sample encryption in Java</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>MessageDigest md = MessageDigest.getInstance(\"md5\");\nbyte[] digestOfPassword = md.digest(key.getBytes(\"UTF-16LE\"));\nbyte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);\nfor (int j = 0, k = 16; j &lt; 8;) {\n    keyBytes[k++] = keyBytes[j++];\n}\nSecretKey secretKey = new SecretKeySpec(keyBytes, 0, 24, \"DESede\");\nIvParameterSpec iv = new IvParameterSpec(new byte[8]);\nCipher cipher = Cipher.getInstance(\"DESede/CBC/PKCS5Padding\");\ncipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);\nbyte[] plainTextBytes = toBeEncrypted.getBytes(\"UTF-16LE\");\nbyte[] cipherText = cipher.doFinal(plainTextBytes);\nString output = new String(Base64.encodeBase64(cipherText));\nreturn output;\n\n</code></pre><h2 id=\"sample-encryption-in-c-sharp\">Sample encryption in C-Sharp</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>string encryptedText = \"\";\nMD5 md5 = new MD5CryptoServiceProvider();\nTripleDES des = new TripleDESCryptoServiceProvider();\ndes.KeySize = 128;\ndes.Mode = CipherMode.CBC;\ndes.Padding = PaddingMode.PKCS7;\nbyte[] md5Bytes = md5.ComputeHash(Encoding.Unicode.GetBytes(key));\nbyte[] ivBytes = new byte[8];\ndes.Key = md5Bytes;\ndes.IV = ivBytes;\nbyte[] clearBytes = Encoding.Unicode.GetBytes(TextToEncrypt);\nICryptoTransform ct = des.CreateEncryptor();\nusing (MemoryStream ms = new MemoryStream())\n{\n    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))\n    {\n        cs.Write(clearBytes, 0, clearBytes.Length);\n        cs.Close();\n    }\n    encryptedText = Convert.ToBase64String(ms.ToArray());\n}\nreturn encryptedText;\n\n</code></pre><h2 id=\"sample-encryption-in-php\">Sample encryption in PHP</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>function EncryptV2($encryption_key, $data)\n{\n  $method = \"des-ede3-cbc\";\n  $source = mb_convert_encoding($encryption_key, 'UTF-16LE', 'UTF-8');\n  $encryption_key = md5($source, true);\n  $encryption_key .= substr($encryption_key, 0, 16);\n  $iv =  \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n  $encData = openssl_encrypt($data, $method, $encryption_key, $options = OPENSSL_RAW_DATA, $iv);\n  return base64_encode($encData);\n};\n\n</code></pre><h2 id=\"sample-encryption-in-nodejs\">Sample encryption in Node.js</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>const crypto = require('crypto');\nfunction encrypt(sharedKey, plainText) {\n    const bufferedKey = Buffer.from(sharedKey, 'utf16le');\n    const key = crypto.createHash('md5').update(bufferedKey).digest();\n    const newKey = Buffer.concat([key, key.slice(0, 8)]);\n    const IV = Buffer.alloc(8, '\\0');\n    const cipher = crypto.createCipheriv('des-ede3-cbc', newKey, IV).setAutoPadding(true);\n    return cipher.update(plainText, 'utf8', 'base64') + cipher.final('base64');\n}\n\n</code></pre><h1 id=\"switching-providers-for-a-service\">Switching providers for a service</h1>\n<p>All services subscribed to in your application are attached to providers that will end up fulfilling such service(s) on request. You can switch providers as you wish by managing the application from your dashboard and editing the service details. Also, for some endpoints, you can explicitly set the provider you would like to be used in the request payload. You would see examples in the documentation for the endpoints that support this.</p>\n<h1 id=\"bank-cbn-codes\">Bank CBN Codes</h1>\n<p>Anywhere bank codes are required in the API specification (bank_code), this refers to the CBN bank codes. Details of all bank codes can be found <a href=\"https://sandbox.interswitchng.com/docbase/docs/autogate-file-transfer/appendix/bank-cbn-codes/\">here</a>.</p>\n<p>Now let's dive deeper into specific API calls.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Build on reliable banking infrastructure","slug":"build-on-reliable-banking-infrastructure"},{"content":"Want to try it quickly?","slug":"want-to-try-it-quickly"},{"content":"General API information","slug":"general-api-information"},{"content":"Authentication headers","slug":"authentication-headers"},{"content":"What requests would look like","slug":"what-requests-would-look-like"},{"content":"What responses would look like","slug":"what-responses-would-look-like"},{"content":"Standard status codes","slug":"standard-status-codes"},{"content":"HTTP Status Codes","slug":"http-status-codes"},{"content":"Encryption of Secure element","slug":"encryption-of-secure-element"},{"content":"Switching providers for a service","slug":"switching-providers-for-a-service"},{"content":"Bank CBN Codes","slug":"bank-cbn-codes"}],"owner":"6358444","collectionId":"ec7e062e-ee83-4f44-9214-2a2f6222e4b4","publishedId":"UUy7ZPGS","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"0E247D","highlight":"78b943"},"publishDate":"2021-10-07T14:06:28.000Z"},"item":[{"name":"Payments","item":[{"name":"Online payments","item":[{"name":"Send Invoice","event":[{"listen":"test","script":{"id":"f9da3641-eebb-4e93-b0b0-e115afab8fab","exec":[""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"83395107-f37c-496e-8fb4-607164a2db67","exec":[""],"type":"text/javascript","packages":{}}}],"id":"3c1bcd21-6788-4f4d-99cd-d0d190893ae6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send_invoice\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PayGatePlusCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"send_email\": true,\n            \"currency\": \"GBP\"\n        },\n        \"details\": {\n            \"page_slug\": \"card\"\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling app can request for payment to be made by a customer. Paygate Plus aggregates multiple payment providers together into one integration and offers you a single unified workflow for your integration.</p>\n<p>The operational sequence is below:</p>\n<img src=\"https://content.pstmn.io/5af826d3-c1fa-4196-905d-8007fcbdbcd2/R0JQLWZsb3cucG5n\" />\n\n<ol>\n<li>Onboard with Fidelity Bank's Paygate Plus</li>\n<li>Provide the transaction details in a <code>send invoice</code> call to the endpoint provided</li>\n<li>Paygate Plus makes multiple calls to multiple payment providers, all in parallel</li>\n<li>Paygate Plus aggregates all payment methods into a single payment page</li>\n<li>Paygate Plus [optionally] sends the link to the payer upon your request. You can specify this in the original API request</li>\n<li>You'd receive the payment URL back in the response</li>\n<li>Redirect (or send) the customer to the provided the URL</li>\n<li>Upon visit, the customer would be presented with a screen to confirm transaction details, (optionally provide supporting information, e.g. <code>post code</code> or <code>date of birth</code>) and after confirmation they'd see an array of supported payment methods in the specified currency. They'd complete the payment.</li>\n<li>The chosen payment provider notifies Paygate Plus</li>\n<li>Your system will receieve a webhook notification on your dedicated webhook URL to inform you the status of payment upon completion. Details of webhook notifications <a href=\"https://docs.paygateplus.ng/#4e109f94-8df8-46c4-ba7e-a18b7a8efdd2\">here</a>.</li>\n<li>To verify transaction status, make a <code>query</code> call to the provided endpoint to double confirm. Documentation <a href=\"https://docs.paygateplus.ng/#87b0198d-a620-4556-8c84-a6002320197e\">here</a>. Remember to use the <code>transaction.transaction_ref</code> element of the original <code>send invoice</code> call.</li>\n</ol>\n<p>Here's <a href=\"https://paywithaccount.link/401a3\">an example</a> of what a customer will experience.</p>\n<p><strong>NOTE 1</strong>: Amount to be processed should be in <code>lower denomination</code>.</p>\n<p>NOTE 2: Please remember to include the <code>transaction.meta.currency</code> element</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<h4 id=\"important-notice\">Important Notice</h4>\n<ul>\n<li>Please note that all transactions are being monitored in realtime for risk assessements and may not be authorised if deemed high risk.</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"a6d6bc8d-a58d-4382-bba7-0ad32b3e406e","name":"Send Invoice (Successful)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send_invoice\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PayGatePlusCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"send_email\": true,\n            \"currency\": \"GBP\"\n        },\n        \"details\": {\n            \"page_slug\": \"card\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"Successful\",\n  \"message\": \"Transaction processed successfully\",\n  \"data\": {\n    \"provider_response_code\": \"00\",\n    \"provider\": null,\n    \"errors\": null,\n    \"error\": null,\n    \"provider_response\": {\n      \"reference\": \"3rPfDqXPit4T1gxgZgCQTuXSt\",\n      \"meta\": {\n        \"email_sent\": true,\n        \"payment_link\": \"https://paywithaccount.link/43fa1\"\n      }\n    },\n    \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n  }\n}"},{"id":"f02f9748-e108-4afb-ab89-615912f9ee30","name":"Send Invoice (Failed)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send_invoice\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PayGatePlusCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"send_email\": true,\n            \"currency\": \"GBP\"\n        },\n        \"details\": {\n            \"page_slug\": \"card\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Invalid response received from provider\",\n    \"data\": {\n        \"options\": null,\n        \"provider_response_code\": null,\n        \"provider\": \"PayGatePlusCardService\",\n        \"errors\": [\n            {\n                \"code\": \"04\",\n                \"message\": \"invalid data\"\n            }\n        ],\n        \"error\": {\n            \"code\": \"04\",\n            \"message\": \"invalid data\"\n        },\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"3c1bcd21-6788-4f4d-99cd-d0d190893ae6"},{"name":"PaygatePlus.js","id":"e1ea4342-2470-401f-950b-33d6949c05ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"JS","header":[],"url":"","description":"<p>If you find the REST APIs too complex, or the user experience for the <a href=\"#3c1bcd21-6788-4f4d-99cd-d0d190893ae6\">send invoice</a> approach doesn't suit your needs, then this mechanism with an inline javascript embed is the fastest route to accepting payments on your website .</p>\n<p>See it in action <a href=\"https://boilerplate.onepipe.io/fidelity/GBP/\">here</a></p>\n<h4 id=\"steps-involved\">Steps involved</h4>\n<p>1. Include in your page. Preferably in the <code>head</code> section</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">&lt;script src=\"https://js.paygateplus.ng/v2\"&gt;&lt;/script&gt;\n\n</code></pre>\n<p>2. At the point of payment, attach a javascript function to your <code>Pay</code> button. Let's assume this function is called <code>OnePipePay()</code></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-html\">&lt;button type=\"button\" onclick=\"OnePipePay()\"&gt;Pay!&lt;/button&gt;\n\n</code></pre>\n<p>3. Then define the function and what it does.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">&lt;script type=\"text/javascript\"&gt;\n        //This is just a temporary unique ref generator. Please use yours to tie to the initiated transaction\n        function generateUniqueRef() {\n            var min = 10000000000000;\n            var max = 99999999999999;\n            var transRef = (Math.random() * (max - min) + min);\n            transRef = Math.round(transRef);\n            return transRef.toString(); //var reqRef = transRef + '01';\n        }\n        function OnePipePay() {\n            //generate a unique reference for your transaction\n            var transRef = generateUniqueRef();\n            //setup the payment\n            var handler = OnePipePopup.setup({\n                requestData: {\n                    //set the unique reference\n                    request_ref: transRef,\n                    //set the request type to 'collect'\n                    request_type: 'collect',\n                    //set your API key\n                    api_key: 'XnxMycu54c0tbRwS9ejS_37d8425664e943718fe5b43f109852cd', \n                    //set auth to null\n                    auth: null,\n                    //provide the transaction details\n                    transaction: {\n                        //set test or live (supported values are Live|Inspect)\n                        mock_mode: document.getElementById('mode').value,\n                        //set the amount in lower denomination\n                        amount: document.getElementById('amt').value * 100,\n                        //set the currency (GBP|NGN\\USD|EUR)\n                        currency: document.getElementById('currency').value,\n                        //set the unique ref\n                        transaction_ref: transRef,//generate a unique number\n                        //set a description \n                        transaction_desc: 'demo payment',\n                        //set the customer details\n                        customer: {\n                            customer_ref: 'Agent_007',//how you identify the customer\n                            firstname: 'James',\n                            surname: 'Bond',\n                            email: 'james@mi5.com',\n                            mobile_no: '08022454314'\n                        },\n                        meta: {\n                            //set the currency\n                            currency: document.getElementById('currency').value\n                        },\n                        details:null,\n                        /*options: {\n                            default_view : {\n                                option : 'voucher',\n                                provider: 'mtn',\n                            },\n                        }*/\n                    },\n                },\n                /****Now handle the post-payment callback ******/\n                callback: function (response) {\n                    //let's log the response\n                    console.log(JSON.stringify(response));\n                    console.log(response);\n                    // read all the contents from the response\n                    let message = (response.message || response.data.message),\n                        reference = response.reference,\n                        status = response.status,\n                        parentTransRef = response.parentTransRef,\n                        transRef = response.transRef,\n                        paymentmethod = response.paymentmethod,\n                        optionsTransRef = response.optionsTransRef,\n                        data = response.data,\n                        provider_response_code = data.provider_response_code,\n                        provider = data.provider,\n                        charge_status = data.charge_status;\n                        if(data.error){\n                            error = data.error,\n                            error_code = error.code,\n                            error_message = error.message;\n                        }\n                    //lets just see what&amp;#x27;s passed       --&gt; Ideally, you&amp;#x27;d complete the payment and process the order\n                    var feedback = '';\n                    feedback += \"payment method: \" + paymentmethod + \"\\n\";\n                    feedback += \"message: \" + message + \"\\n\";\n                    feedback += \"reference: \" + reference + \"\\n\";\n                    feedback += \"status: \" + status + \"\\n\";\n                    feedback += \"parentTransRef: \" + parentTransRef + \"\\n\";\n                    feedback += \"transRef: \" + transRef + \"\\n\";\n                    console.log(feedback);\n                    alert(feedback);\n             },\n                //handle for cases where the customer closes the payment modal\n        onClose: function () {\n                    alert('You cancelled the payment process');\n                }\n            });\n    //Execute the entire routine above\n            handler.execute();\n        }\n    &lt;/script&gt;\n\n</code></pre>\n<p>4. Within your callback, read the value of <code>response.status</code> then make a server side call to the <a href=\"#49989819-2306-45a4-8837-b47248697aa0\">query endpoint</a> to validate the true status of the transaction</p>\n<h4 id=\"response-elements-and-their-meaning\">Response elements and their meaning</h4>\n<p>Your callback function will be called with a response object that has the following properties:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>reference</td>\n<td>A reference number for this transaction. Should be used in the <code>query</code> endpoint for payment confirmation.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>A description message for the response. May at times be a message to display to the user.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>The status of the payment. Supported values are:  <br /><em><strong>Successful</strong></em>: Query to confirm still.  <br /><em><strong>Failed</strong></em>: Failed, query to retrieve the actual response code.  <br /><em><strong>PendingFulfilment</strong></em>: Typically if the customer chose a payment method that can't be completed in real time. e.g. USSD, Cash, ATM. The way this works, your system will receive a transaction_notification when the payer finally completes the transaction. See <a href=\"https://docs.paygateplus.ng/#87b0198d-a620-4556-8c84-a6002320197e\">here</a>.</td>\n</tr>\n<tr>\n<td>paymentmethod</td>\n<td>The payment screen supports card, bank account, custom and bank transfer at the moment. Possible values are:  <br /><em><strong>Card</strong></em>: Use the <code>status</code> field to know what to do next.  <br /><em><strong>CUSTOM</strong></em>: Makes use of a third party payment user interface such as Paystack, Interswitch.  <br /><em><strong>BANK.TRANSFER</strong></em>: The customer has transferred to the provided bank account. Use the Query endpoint to confirm still.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"query":[],"variable":[]}},"response":[{"id":"c7e472d6-a1ef-4eab-b89b-7c93c0b4aa89","name":"Sample Page","originalRequest":{"method":"GET","header":[],"url":""},"_postman_previewlanguage":"html","header":null,"cookie":[],"responseTime":null,"body":"\n\n\n<!DOCTYPE html>\n<html>\n<head>\n    <title></title>\n    <meta charset=\"utf-8\" />\n    <script src=\"https://js.paygateplus.ng/v2\"></script>\n</head>\n<body>\n<h1>DEMO: Payments aggregation by Fidelity Bank</h1>\n<!--<h2>This is a demo payment</h2>-->\n\n<hr/>\n\n<label for=\"mode\">Mode:</label>\n<select id=\"mode\" name=\"dropdown\">\n    <option value=\"Live\">Live</option>\n\t<option value=\"Inspect\">Test</option>\n</select>\n\n<p>Payment amount: <input type=\"number\" id=\"amt\" min=\"1\" max=\"999\" size=\"3\" value=\"10\"></p>\n\n<label for=\"currency\">Currency:</label>\n<select id=\"currency\" name=\"dropdown\">\n    <option value=\"GBP\">GBP</option>\n    <option value=\"NGN\">NGN</option>\n\t<option value=\"USD\">USD</option>\n\t<option value=\"EUR\">EUR</option>\n</select>\n\n<button type=\"button\" onclick=\"OnePipePay()\">Click me!</button>\n\n<hr/>\n\n<h3>Supported currencies</h3>\n<ul>\n\t<li>GBP</li>\n\t<li>NGN</li>\n</ul>\n\n<h3>Supported methods</h3>\n<ul>\n\t<li>NGN Pay with transfer (FidelityVirtual)</li>\n\t<li>NGN Fidelity card (FidelityCardService)</li>\n\t<li>NGN Fidelity account (Fidelity)</li>\n\t<li>GBP Pay with transfer (Rhemito - coming soon)</li>\n\t<li>GBP or USD card (Stripe - may change)</li>\n\t<li>GBP bank account (GoCardless - may change)</li>\n</ul>\n<p><a href=\"https://docs.paygateplus.ng/#3c1bcd21-6788-4f4d-99cd-d0d190893ae6\" target=\"_blank\">API documentation here</a></p>\n\n<script type=\"text/javascript\">\n        function generateUniqueRef() {\n            var min = 10000000000000;\n            var max = 99999999999999;\n            var transRef = (Math.random() * (max - min) + min);\n            transRef = Math.round(transRef);\n            return transRef.toString(); //var reqRef = transRef + '01';\n        }\n        function OnePipePay() {\n            var transRef = generateUniqueRef();\n            var handler = OnePipePopup.setup({\n                requestData: {\n                    request_ref: transRef,//generate a unique number\n                    request_type: 'collect',\n                    api_key: 'XnxMycu54c0tbRwS9ejS_37d8425664e943718fe5b43f109852cd', // PayGatePlusGBP Default App\n                    auth: null,\n                    transaction: {\n                        mock_mode: document.getElementById('mode').value,\n                        amount: document.getElementById('amt').value * 100,\n                        currency: document.getElementById('currency').value,\n                        transaction_ref: transRef,//generate a unique number\n                        transaction_desc: 'demo payment',\n                        customer: {\n                            customer_ref: 'Agent_007',//how you identify the customer\n                            firstname: 'James',\n                            surname: 'Bond',\n                            email: 'james@mi5.com',\n                            mobile_no: '08022454314'\n                        },\n                        meta: {\n                            currency: document.getElementById('currency').value\n                        },\n                        details:null,\n\t\t\t\t\t\t/*options: {\n                            default_view : {\n                                option : 'voucher',\n                                provider: 'mtn',\n                            },\n                        }*/\n                    },\n                },\n                callback: function (response) {\n\n\t\t\t\t\t//let's log the response\n                    console.log(JSON.stringify(response));\n\t\t\t\t\tconsole.log(response);\n\n                    // Contents of data is based on what OnePipe returns\n                    let message = (response.message || response.data.message),\n                        reference = response.reference,\n                        status = response.status,\n                        parentTransRef = response.parentTransRef,\n                        transRef = response.transRef,\n                        paymentmethod = response.paymentmethod,\n                        optionsTransRef = response.optionsTransRef,\n                        data = response.data,\n                        provider_response_code = data.provider_response_code,\n                        provider = data.provider,\n                        charge_status = data.charge_status;\n\n                        if(data.error){\n                            error = data.error,\n                            error_code = error.code,\n                            error_message = error.message;\n                        }\n\n\n                    //lets just see what's passed\n                    var feedback = '';\n\t\t\t\t\tfeedback += \"payment method: \" + paymentmethod + \"\\n\";\n                    feedback += \"message: \" + message + \"\\n\";\n                    feedback += \"reference: \" + reference + \"\\n\";\n                    feedback += \"status: \" + status + \"\\n\";\n                    feedback += \"parentTransRef: \" + parentTransRef + \"\\n\";\n                    feedback += \"transRef: \" + transRef + \"\\n\";\n\n                    console.log(feedback);\n                    alert(feedback);\n             },\n                onClose: function () {\n                    alert('You cancelled the payment process');\n                }\n            });\n\n            handler.execute();\n\n        }\n    </script>\n</body>\n</html>"}],"_postman_id":"e1ea4342-2470-401f-950b-33d6949c05ce"}],"id":"9764e134-a683-4413-9791-ee095a888359","description":"<p>Two possible ways to integrate payments into your website or checkout experience</p>\n<ol>\n<li><p><a href=\"#e1ea4342-2470-401f-950b-33d6949c05ce\">PaygatePlus.js</a>: Lets you invoke the payment modal directly on your web pages. After they complete their payment, you'd receive a response object to your JS function invocation</p>\n</li>\n<li><p><a href=\"#3c1bcd21-6788-4f4d-99cd-d0d190893ae6\">Send invoice REST API</a>: Returns to you a payment link to which you can simply redirect your customers. When they complete their payment, you'd recieve am event on your webhook URL</p>\n</li>\n</ol>\n<p>See the details of both approaches below.</p>\n","event":[{"listen":"prerequest","script":{"id":"f50a2583-c5e1-426a-9ef2-19e031b35397","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"275c9c4f-87f2-4606-acbf-2c07ad1f2c81","type":"text/javascript","exec":[""]}}],"_postman_id":"9764e134-a683-4413-9791-ee095a888359"},{"name":"PaywithTransfer","item":[{"name":"PWA","item":[{"name":"1. Request payment - single - PWT","id":"9069429d-4b29-4f87-b752-bdcce65f18a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\": 30, //minutes\n            \"skip_messaging\": false,\n            \"biller_code\" : \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Send Invoice PWT</strong></p>\n<p>The Send Invoice service generates a virtual account for a single payment collection. This account can then be shared with the customer for settlement.</p>\n<ul>\n<li><p>The <code>type</code> and <code>secure</code> fields in the <code>auth</code> object are set to <strong>null</strong> since this service allows transfers from any bank.</p>\n</li>\n<li><p>Other customer fields (<code>firstname</code>, <code>surname</code>) are optional for this service. They may be provided, but can also be left as empty strings (<code>\"\"</code>)</p>\n</li>\n<li><p>The <code>meta.type</code> field must be <code>\"single_payment\"</code>, which indicates this is a one-time virtual account.</p>\n</li>\n<li><p>An <code>expires_in</code> value must be specified (in minutes) to determine how long the virtual account remains active.</p>\n</li>\n<li><p>The <code>skip_messaging</code> field is a boolean that controls whether the system sends payment details to the customer via WhatsApp, email, or SMS:</p>\n<ul>\n<li><p><code>false</code> → Notifications will be sent.</p>\n</li>\n<li><p><code>true</code> → No notifications will be sent.</p>\n</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"e7cff128-1f0a-45e9-8258-ddf7abd76786","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"\n{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"2348022221412\",\n            \"firstname\": \"Ope\",\n            \"surname\": \"Adeoye\",\n            \"email\": \"opeadeoye@gmail.com\",\n            \"mobile_no\": \"2348022221412\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\": 1,\n            \"suppress_messaging\": false,\n            \"biller_code\" : \"000019\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"content-length","value":"965"},{"key":"content-type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Kindly follow the instructions sent to you via SMS and Email to complete payment\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"account_number\": null,\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"opeadeoye@gmail.com\",\n            \"bank_code\": null,\n            \"status\": \"REQUESTED\",\n            \"created_on\": \"2025-03-01 16:59:32\",\n            \"meta\": {\n                \"payment_id\": 3553,\n                \"virtual_account_name\": \"PWT - Demo Business\",\n                \"virtual_account_number\": \"4565048125\",\n                \"virtual_account_bank_name\": \"Fidelity\",\n                \"virtual_account_bank_code\": \"070\",\n                \"virtual_account_status\": \"active\",\n                \"virtual_account_expiry_date\": \"2025-03-02 17:59:00\",\n                \"ussd_code\": null\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"9069429d-4b29-4f87-b752-bdcce65f18a2"},{"name":"1. Request payment - single - PWT Dynamic","id":"091513ec-b059-499e-bc59-2cc9cfd780e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\": 30, //minutes\n            \"skip_messaging\": false,\n            \"biller_code\" : \"{{biller_code}}\",\n            \"account_type\":\"dynamic\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Send Invoice PWT</strong></p>\n<p>The Send Invoice service generates a virtual account for a single payment collection. This account can then be shared with the customer for settlement.</p>\n<ul>\n<li><p>The <code>type</code> and <code>secure</code> fields in the <code>auth</code> object are set to <strong>null</strong> since this service allows transfers from any bank.</p>\n</li>\n<li><p>Other customer fields (<code>firstname</code>, <code>surname</code>) are optional for this service. They may be provided, but can also be left as empty strings (<code>\"\"</code>)</p>\n</li>\n<li><p>The <code>meta.type</code> field must be <code>\"single_payment\"</code>, which indicates this is a one-time virtual account.</p>\n</li>\n<li><p>An <code>expires_in</code> value must be specified (in minutes) to determine how long the virtual account remains active.</p>\n</li>\n<li><p>The <code>skip_messaging</code> field is a boolean that controls whether the system sends payment details to the customer via WhatsApp, email, or SMS:</p>\n<ul>\n<li><p><code>false</code> → Notifications will be sent.</p>\n</li>\n<li><p><code>true</code> → No notifications will be sent.</p>\n</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"40deea28-f260-4117-aeb5-95487035fbfc","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"\n{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"2348022221412\",\n            \"firstname\": \"Ope\",\n            \"surname\": \"Adeoye\",\n            \"email\": \"opeadeoye@gmail.com\",\n            \"mobile_no\": \"2348022221412\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\": 1,\n            \"suppress_messaging\": false,\n            \"biller_code\" : \"000019\",\n            \"account_type\":\"dynamic\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"content-length","value":"965"},{"key":"content-type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Kindly follow the instructions sent to you via SMS and Email to complete payment\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"account_number\": null,\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"opeadeoye@gmail.com\",\n            \"bank_code\": null,\n            \"status\": \"REQUESTED\",\n            \"created_on\": \"2025-03-01 16:59:32\",\n            \"meta\": {\n                \"payment_id\": 3553,\n                \"virtual_account_name\": \"PWT - Demo Business\",\n                \"virtual_account_number\": \"4565048125\",\n                \"virtual_account_bank_name\": \"Fidelity\",\n                \"virtual_account_bank_code\": \"070\",\n                \"virtual_account_status\": \"active\",\n                \"virtual_account_expiry_date\": \"2025-03-02 17:59:00\",\n                \"ussd_code\": null\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"091513ec-b059-499e-bc59-2cc9cfd780e6"},{"name":"2. Request payment - single - PWT to create mandate","id":"200f2e27-b531-4e46-92f5-211773a307f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\":30,//minutes\n            \"skip_messaging\": false,\n            \"biller_code\": \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Send Invoice PWA</strong></p>\n<p>This service is used when you want to collect a single payment directly from a specific customer bank accoun<strong>t</strong>. , this flow is restricted: the payment must come from the exact account provided in the <code>secure</code> field.</p>\n<ul>\n<li><p><strong>Auth Object</strong></p>\n<ul>\n<li><p><code>type</code> → <code>\"bank.account\"</code> because you are binding this payment to a specific bank account.</p>\n</li>\n<li><p><code>secure</code> → contains the <strong>encrypted account details</strong> (e.g., <code>{account_number};{cbn_bankcode}</code> encrypted with TripleDES and your secret key).</p>\n</li>\n<li><p><code>auth_provider</code> → <code>\"PaywithAccount\"</code>.</p>\n</li>\n</ul>\n</li>\n<li><p>Why <code>type</code> and <code>secure</code> have values here</p>\n<ul>\n<li><p>In this service, the customer is required to pay only from the specified account.</p>\n</li>\n<li><p>For example, if the secure field holds a Zenith Bank account, then the transfer must originate from that Zenith account.</p>\n</li>\n<li><p>If the customer pays from another account, the transaction will be disputed because it violates the mandate of this request.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Transaction Object</strong></p>\n<ul>\n<li><p><code>amount</code> → mandatory, since this is a single payment collection.</p>\n</li>\n<li><p><code>firstname</code> and <code>surname</code> → optional; they can be provided or left as empty strings.</p>\n</li>\n<li><p><code>customer_ref</code> → must still be the 13-digit phone number starting with <code>234</code>.</p>\n</li>\n</ul>\n</li>\n<li><p>Meta Object</p>\n<ul>\n<li><p>An <code>expires_in</code> value must be specified (in minutes) to determine how long the virtual account remains active.</p>\n</li>\n<li><p>The <code>skip_messaging</code> field is a boolean that controls whether the system sends payment details to the customer via WhatsApp, email, or SMS:</p>\n<ul>\n<li><p><code>false</code> → Notifications will be sent.</p>\n</li>\n<li><p><code>true</code> → No notifications will be sent.</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"00356524-4d26-49c1-823f-894277288d6a","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n       \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 12200,\n        \"customer\": {\n            \"customer_ref\": \"2348022221412\",\n            \"firstname\": \"Ope\",\n            \"surname\": \"Adeoye\",\n            \"email\": \"opeadeoye@gmail.com\",\n            \"mobile_no\": \"2348022221412\"\n        },\n        \"meta\": {\n            \"type\":\"single_payment\",\n            \"expires_in\":1,\n            \"suppress_messaging\": false,\n            \"biller_code\": \"000019\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"content-length","value":"1029"},{"key":"content-type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Kindly follow the instructions sent to you via SMS and Email to complete payment\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"RC1544159/1557/0006573568\",\n            \"account_number\": \"6234784766\",\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"opeadeoye@gmail.com\",\n            \"bank_code\": \"070\",\n            \"status\": \"REQUESTED\",\n            \"created_on\": \"2025-03-01 17:04:57\",\n            \"meta\": {\n                \"payment_id\": 3554,\n                \"virtual_account_name\": \"PWT - Demo Business\",\n                \"virtual_account_number\": \"4565048125\",\n                \"virtual_account_bank_name\": \"Fidelity\",\n                \"virtual_account_bank_code\": \"070\",\n                \"virtual_account_status\": \"active\",\n                \"virtual_account_expiry_date\": \"2025-03-02 18:04:00\",\n                \"ussd_code\": \"*347*022*2*54824#\"\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"200f2e27-b531-4e46-92f5-211773a307f0"},{"name":"3. Request payment - single - PWA","id":"d422de2c-ddb4-4a69-86ca-f6d7e47cc4ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A nice narration\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 15600,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n         \"biller_code\": \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Collect (Direct Debit)</strong></p>\n<p>This service is used to initiate a single payment debit from a customer’s bank account. this method requires the payer’s account details to be explicitly provided.<br />For this request to succeed, the customer must already have an active mandate on their account. In other words, their account must have been tokenized beforehand. Without a valid mandate, the debit attempt will fail.</p>\n<ul>\n<li><p><strong>Auth Object</strong></p>\n<ul>\n<li><p><strong>type</strong>: <code>\"bank.account\"</code> → specifies that the debit is being done on a bank account.</p>\n</li>\n<li><p><strong>secure</strong>: contains the encrypted token (linked to the customer’s account) that was created when the mandate was set up. This token is what authorizes the debit.</p>\n</li>\n<li><p><strong>auth_provider</strong>: <code>\"PaywithAccount\"</code>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Amount</strong>: the amount to be debited from the customer’s account.</p>\n<ul>\n<li>The value must be provided in kobo (e.g., 1560000 = ₦15,600).</li>\n</ul>\n</li>\n<li><p><strong>Meta Object</strong></p>\n<ul>\n<li><p><strong>biller_code</strong> → identifies the biller on whose behalf the debit is being made.</p>\n<ul>\n<li>This field is mandatory and must match the biller’s registered code.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"notes\"><strong>Notes</strong></h4>\n<ul>\n<li><p>This request is not an instruction for the customer to initiate payment. Instead, the debit is initiated directly on the customer’s tokenized account.</p>\n</li>\n<li><p>The secure field is critical, as it ensures the debit is tied to the correct customer mandate.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"6941d983-5fa0-4dbe-9916-13ec5cf987e1","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"\n{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A nice narration\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 15600,\n        \"customer\": {\n            \"customer_ref\": \"2348022221412\",\n            \"firstname\": \"Ope\",\n            \"surname\": \"Adeoye\",\n            \"email\": \"opeadeoye@gmail.com\",\n            \"mobile_no\": \"2348022221412\"\n        },\n        \"meta\": {\n         \"biller_code\": \"000019\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"content-length","value":"555"},{"key":"content-type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Transaction failed\",\n    \"data\": {\n        \"provider_response_code\": \"96\",\n        \"provider\": \"NIBSS\",\n        \"errors\": [\n            {\n                \"code\": \"06\",\n                \"message\": \"Invalid or missing parameters\"\n            }\n        ],\n        \"error\": {\n            \"code\": \"06\",\n            \"message\": \"Invalid or missing parameters\"\n        },\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"d422de2c-ddb4-4a69-86ca-f6d7e47cc4ed"},{"name":"4. Request payment - instalment","id":"7582e062-793a-4ab7-9ffe-a2ebab72231e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 30000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"instalment\",\n            \"down_payment\":10000,\n            \"repeat_frequency\":\"daily\",\n            \"repeat_start_date\":\"2025-04-09-08-00-00\",//yyyy-MM-dd-hh-mm-ss\n            \"number_of_payments\":2,\n            \"biller_code\" : \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Send Invoice (Installment Payment)</strong></p>\n<h4 id=\"auth-object\"><strong>Auth Object</strong></h4>\n<ul>\n<li><p><strong>type</strong>: <code>\"bank.account\"</code> → specifies that the payment is tied to a specific customer bank account.</p>\n</li>\n<li><p><strong>secure</strong>: contains the encrypted account details (e.g., <code>{account_number};{cbn_bankcode}</code> encrypted with TripleDES and your secret key)</p>\n</li>\n<li><p><strong>auth_provider</strong>: <code>\"PaywithAccount\"</code>.</p>\n</li>\n</ul>\n<p><strong>Transaction Object</strong></p>\n<ul>\n<li><p><strong>amount</strong>: the total amount to be collected across the instalments. Must be in <strong>kobo</strong> (e.g., <code>30000</code> = ₦300).</p>\n</li>\n<li><p><strong>transaction_ref:</strong> unique reference for this collection.</p>\n</li>\n<li><p><strong>transaction_desc:</strong> description of the payment (free text).</p>\n</li>\n<li><p><strong>customer_ref:</strong> the 13-digit customer phone number starting with <code>234</code>.</p>\n</li>\n<li><p><strong>firstname, surname, email, mobile_no</strong> → optional; they can be populated or left as empty strings.</p>\n</li>\n</ul>\n<h4 id=\"meta-object\"><strong>Meta Object</strong></h4>\n<ul>\n<li><p><strong>type:</strong> <code>\"instalment\"</code> → instructs the system this is an instalment-based payment.</p>\n</li>\n<li><p><strong>down_payment:</strong> upfront amount to be collected immediately (in kobo).</p>\n</li>\n<li><p><strong>repeat_frequency:</strong> how often subsequent payments occur (<code>daily</code>, <code>weekly</code>, <code>monthly</code>).</p>\n</li>\n<li><p><strong>repeat_start_date:</strong> the date and time when instalment deductions begin. Must follow the format: <code>yyyy-MM-dd-hh-mm-ss</code>.</p>\n</li>\n<li><p><strong>number_of_payments:</strong> total number of instalment payments (excluding the down payment).</p>\n</li>\n<li><p><strong>biller_code:</strong> mandatory; identifies the biller on whose behalf the collection is being made.</p>\n</li>\n</ul>\n<h4 id=\"how-the-payment-flow-works\"><strong>How the Payment Flow Works</strong></h4>\n<ol>\n<li><p>When this request is made, the API responds with a virtual account where the customer must pay the down payment.</p>\n</li>\n<li><p>The transfer for the down payment must come from the same bank account linked in the <code>secure</code> field. If payment is made from another account, it will be disputed.</p>\n</li>\n<li><p>Once the down payment is settled, all subsequent instalments are debited automatically from the customer’s mandate-linked account, based on the schedule (<code>repeat_frequency</code> and <code>repeat_start_date</code>).</p>\n</li>\n</ol>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"c3270a4e-28ab-47f1-976a-caa99ee737b8","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"collect a payment\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 120000,\n        \"customer\": {\n            \"customer_ref\": \"2349066870818\",\n            \"firstname\": \"Akin\",\n            \"surname\": \"Olunloye\",\n            \"email\": \"akin@onepipe.com\",\n            \"mobile_no\": \"2349066870818\"\n        },\n        \"meta\": {\n            \"type\":\"instalment\",\n            \"down_payment\":10000,\n            \"repeat_frequency\":\"daily\",\n            \"number_of_payments\":3\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Kindly follow the instructions sent to you via SMS and Email to complete payment\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"RC1544159/1557/0005716487\",\n            \"account_number\": \"2247916766\",\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"akin@onepipe.com\",\n            \"bank_code\": \"033\",\n            \"status\": \"REQUESTED\",\n            \"created_on\": \"2025-02-25 21:53:52\",\n            \"meta\": {\n                \"payment_id\": 3458,\n                \"virtual_account_name\": \"PWT - Demo Business\",\n                \"virtual_account_number\": \"4565708848\",\n                \"virtual_account_bank_name\": \"Fidelity\",\n                \"virtual_account_bank_code\": \"070\",\n                \"virtual_account_status\": \"active\",\n                \"virtual_account_expiry_date\": \"2025-02-26 22:53:00\",\n                \"ussd_code\": null\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"7582e062-793a-4ab7-9ffe-a2ebab72231e"},{"name":"5. Request payment - subscription","id":"6994ca27-9f58-4213-ac7f-cbbe9ffdf18d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Setup a subscription\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10500,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"subscription\",\n            \"repeat_frequency\":\"daily\",\n            \"repeat_start_date\":\"2025-04-09-08-00-00\",//yyyy-MM-dd-hh-mm-ss\n            \"repeat_end_date\":\"2025-04-10-08-00-00\",//yyyy-MM-dd-hh-mm-ss\n            \"biller_code\" : \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Send Invoice (subscription payment)</strong></p>\n<ul>\n<li><p><strong>type</strong>: <code>\"bank.account\"</code> → ties the subscription to a specific customer bank account.</p>\n</li>\n<li><p><strong>secure</strong>: contains the encrypted account details (e.g., <code>{account_number};{cbn_bankcode}</code> encrypted with TripleDES and your secret key)</p>\n</li>\n<li><p><strong>auth_provider</strong>: <code>\"PaywithAccount\"</code>.</p>\n</li>\n</ul>\n<h4 id=\"transaction-object\"><strong>Transaction Object</strong></h4>\n<ul>\n<li><p><strong>amount:</strong> the recurring amount to be debited at each cycle. Must be in <strong>kobo</strong> (e.g., <code>10500</code> = ₦105).</p>\n</li>\n<li><p><strong>transaction_ref:</strong> unique reference for this subscription request.</p>\n</li>\n<li><p><strong>transaction_desc:</strong> description of the subscription (free text).</p>\n</li>\n<li><p><strong>customer_ref:</strong> must always be the 13-digit phone number starting with <code>234</code>.</p>\n</li>\n<li><p><strong>firstname, surname, email, mobile_no:</strong> optional; they can be populated or left as empty strings.</p>\n</li>\n</ul>\n<h4 id=\"meta-object\"><strong>Meta Object</strong></h4>\n<p>Defines the subscription plan:</p>\n<ul>\n<li><p><strong>type:</strong> <code>\"subscription\"</code> indicates this request is setting up a recurring debit.</p>\n</li>\n<li><p><strong>repeat_frequency:</strong> how often the debit should occur (<code>daily</code>, <code>weekly</code>, <code>monthly</code>).</p>\n</li>\n<li><p><strong>repeat_start_date:</strong> the date and time when the subscription debits should begin. Format: <code>yyyy-MM-dd-hh-mm-ss</code>.</p>\n</li>\n<li><p><strong>repeat_end_date:</strong> the date and time when the subscription should automatically stop. Format: <code>yyyy-MM-dd-hh-mm-ss</code>.</p>\n</li>\n<li><p><strong>biller_code:</strong> mandatory; identifies the biller on whose behalf the subscription is being set up.</p>\n</li>\n</ul>\n<p><strong>Subscription Flow</strong></p>\n<ol>\n<li><p><strong>Request Initiation</strong></p>\n<ul>\n<li><p>When you send a subscription request, the response you receive depends on the <strong>a</strong>ctivation method agreed with the business (either first payment or transfer).</p>\n</li>\n<li><p>This first action serves as customer consent to allow recurring debits on their account.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>First Payment (Virtual Account Route)</strong></p>\n<ul>\n<li><p>Every time a new subscription is initiated, a virtual account is generated.</p>\n</li>\n<li><p>The customer is required to make a transfer to this account for the first billing cycle (e.g., paying for the first month of a subscription).</p>\n</li>\n<li><p>Once this payment is received, the subscription becomes active.</p>\n</li>\n<li><p>Subsequent debits will then occur automatically from the customer’s linked account, according to the <strong>s</strong>tart date, end date, and repeat frequency defined in the request.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Transfer (Activation URL Route)</strong></p>\n<ul>\n<li><p>Alternatively, the response will include an <strong><code>activation_url</code></strong>.</p>\n</li>\n<li><p>You can either:</p>\n<ul>\n<li><p>Display the content of the URL directly in your own platform (skipping external messaging), <strong>or</strong></p>\n</li>\n<li><p>Send the URL to the customer via SMS, WhatsApp, or any other channel.</p>\n</li>\n</ul>\n</li>\n<li><p>The customer follows the instructions and gives consent by sending a transfer (via NIBSS).</p>\n</li>\n<li><p>Once the transfer is completed and confirmed, the subscription is activated.</p>\n</li>\n<li><p>Future recurring debits then proceed automatically from the authorized account.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Subsequent Debits</strong></p>\n<ul>\n<li><p>After activation (via first payment or transfer), the system handles debits automatically:</p>\n<ul>\n<li><p>Based on the <code>repeat_frequency</code> (daily, weekly, monthly, etc.).</p>\n</li>\n<li><p>Continuing until the <code>repeat_end_date</code> or when the subscription is cancelled.</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ol>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"a19314cb-72be-44e9-a66d-24305ace250c","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"send invoice\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Setup a subscription\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10500,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"type\":\"subscription\",\n            \"repeat_frequency\":\"daily\",\n            \"repeat_start_date\":\"2025-04-09-08-00-00\",//yyyy-MM-dd-hh-mm-ss\n            \"repeat_end_date\":\"2025-04-10-08-00-00\",//yyyy-MM-dd-hh-mm-ss\n            \"biller_code\" : \"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Kindly follow the instructions sent to you via SMS and Email to complete payment\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"RC1544159/1557/0005716487\",\n            \"account_number\": \"2247916766\",\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"akin@onepipe.com\",\n            \"bank_code\": \"033\",\n            \"status\": \"REQUESTED\",\n            \"created_on\": \"2025-02-25 21:53:52\",\n            \"meta\": {\n                \"payment_id\": 3458,\n                \"virtual_account_name\": \"PWT - Demo Business\",\n                \"virtual_account_number\": \"4565708848\",\n                \"virtual_account_bank_name\": \"Fidelity\",\n                \"virtual_account_bank_code\": \"070\",\n                \"virtual_account_status\": \"active\",\n                \"virtual_account_expiry_date\": \"2025-02-26 22:53:00\",\n                \"ussd_code\": null\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"6994ca27-9f58-4213-ac7f-cbbe9ffdf18d"},{"name":"6. Get  specific mandate","id":"33c655e9-6698-47e1-b987-f7a7d667d950","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"Get Accounts Max\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Check active mandates\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348022221412\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n              \"biller_code\":\"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p><strong>Check Active Mandate On An Account(Get Account Max)</strong></p>\n<p>This service allows you to verify if a customer already has an active mandate on a specific account. The account details are the same ones encrypted into the <code>secure</code> field of the auth object.</p>\n<ul>\n<li><p><code>type</code>: <code>\"bank.account\"</code> → indicates the mandate check is being done against a bank account.</p>\n</li>\n<li><p><code>secure</code>: encrypted account details (token or account identifier tied to mandate).</p>\n</li>\n<li><p><code>auth_provider</code>: <code>\"PaywithAccount\"</code>.</p>\n</li>\n<li><p><code>amount</code>: <code>0</code> → since this is only a mandate verification, no debit occurs.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"93771948-01ed-4984-b0a6-db6022096bf2","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"Get Accounts Max\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_secure}}\",\n        \"auth_provider\": \"PaywithAccount\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Check active mandates\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n              \"biller_code\":\"{{biller_code}}\"\n        },\n        \"details\": {}\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{mock_endpoint}}/paywithaccount/get_specific_mandate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Alt-Svc","value":"h3=\":443\"; ma=2592000"},{"key":"Content-Length","value":"1393"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Sun, 30 Mar 2025 17:46:49 GMT"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Beeceptor-Rule-Id","value":"cr8qllvj19u"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"PaywithAccount\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"accounts\": [\n                {\n                    \"account_number\": \"1000041840\",\n                    \"account_name\": \"ALH. KOKO BELOW\",\n                    \"bank_name\": \"Polaris Bank\",\n                    \"bank_code\": \"076\",\n                    \"extended_data\": {\n                        \"mandate_status\": \"active\"\n                    }\n                }\n            ],\n            \"reference\": \"94968394264848\",\n            \"meta\": {\n                \"records\": 4,\n                \"page\": 1,\n                \"pages\": 1,\n                \"page_size\": 1000000000\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"33c655e9-6698-47e1-b987-f7a7d667d950"}],"id":"8bd5acd9-605c-4dfa-afcf-37c591bf8b8b","description":"<h1 id=\"getting-started\">Getting started</h1>\n<p>Here are the preliminary steps before you can use the APIs</p>\n<ol>\n<li><p>Sign up on PaywithAccount [<a href=\"https://paywithaccount.com/guide/?q=How%20to%20request%20API%20access\">guide</a>]</p>\n</li>\n<li><p>Request API access [<a href=\"https://paywithaccount.com/guide/?q=How%20to%20request%20API%20access\">guide</a>]</p>\n</li>\n<li><p>Once approved, you will receive 2 emails:</p>\n<ol>\n<li><p>That contains the postman collection</p>\n</li>\n<li><p>Another with a link to set up your password. After setting your password, log in and retrieve your credentials.</p>\n</li>\n</ol>\n</li>\n</ol>\n<h1 id=\"general-information\"><strong>General Information</strong></h1>\n<p>All requests to the API are made through a single base URL:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://api.paygateplus.ng\n\n</code></pre><p>There are no separate URLs for sandbox and production. Instead, the environment is controlled by the <strong><code>mock_mode</code></strong> field in the request payload.</p>\n<h3 id=\"mock-mode\">Mock mode</h3>\n<ul>\n<li><p><strong><code>mock_mode = inspect</code></strong> <strong>→</strong> Sandbox Mode</p>\n<ul>\n<li><p>Requests are processed in test mode.</p>\n</li>\n<li><p>You receive mock responses that simulate the expected behavior of the endpoint.</p>\n</li>\n<li><p>Recommended for development and early-stage integration testing.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>mock_mode = live</code></strong> <strong>→</strong> Production Mode</p>\n<ul>\n<li><p>Requests are processed in live mode.</p>\n</li>\n<li><p>You receive real-time responses based on actual inputs and live transaction flows.</p>\n</li>\n<li><p>Use this mode only after successful sandbox testing.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"access-to-live-mode-during-integration\">Access to Live Mode During Integration</h2>\n<p>During the integration phase, you will be provided with limited access to the <code>mock_mode = live</code> setting.</p>\n<ul>\n<li><p>This allows you to preview real-time responses and perform end-to-end testing of your workflows.</p>\n</li>\n<li><p>Access is controlled and monitored to ensure stability and compliance.</p>\n</li>\n<li><p>Full unrestricted access to production (<code>mockmode = live</code>) is granted only after your integration is fully tested and approved.</p>\n</li>\n</ul>\n<h1 id=\"headers\">Headers</h1>\n<p>Every API call must include specific headers for authentication, security, and proper request handling. Below is a breakdown of the required headers and their purposes:</p>\n<ol>\n<li><strong>Content-Type</strong></li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Content-Type: application/json\n\n</code></pre><ul>\n<li><p>Informs the server that the body of the request is in JSON format</p>\n</li>\n<li><p>Required for all request</p>\n</li>\n</ul>\n<p><strong>2. Authorization</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {api_key}\n\n</code></pre><ul>\n<li><p>This header contains the API key assign to you</p>\n</li>\n<li><p>It authenticates the request and confirms that the call is made by an authorized client</p>\n</li>\n<li><p>Format: <code>Bearer {{your_api_key}}</code></p>\n</li>\n</ul>\n<p><strong><code>3.</code></strong> <strong>Signature</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Signature: {{MD5Hash(request_ref;client_secret)}}\n\n</code></pre><ul>\n<li><p>Ensures integrity and security of the request.</p>\n</li>\n<li><p>Generated using an MD5 hash function</p>\n</li>\n<li><p>To compute the signature:</p>\n<ul>\n<li><p>Concatenate the <code>request_ref</code> (a unique reference for every API call) and your <code>client_secret</code> separated by a semi colon <code>(;)</code>.</p>\n</li>\n<li><p>Apply the MD5 hashing function to the concatenated string.</p>\n</li>\n</ul>\n</li>\n<li><p>This hashed value is then sent as the <code>Signature</code> header.</p>\n</li>\n<li><p>Purpose:</p>\n<ul>\n<li><p>To verify that the request originates from a trusted source.</p>\n</li>\n<li><p>Serves as a second layer of security by “signing” the request.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Header format</strong><br />Your complete header for evey single call will look like</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Content-Type:application/json\nAuthorization:Bearer 93qb3RbJgRfZDb9BcmzG_cbcc214131d646b7adb7206f8589a878\nSignature:{{MD5Hash(request_ref;client_secret)}}\n\n</code></pre><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>request_ref</strong>: A unique identifier generated for every API call. No two requests should have the same reference.</p>\n</li>\n<li><p>The server validates the <code>Signature</code> by regenerating the hash internally and comparing it with the one provided.</p>\n</li>\n<li><p>If the values do not match, the request will be rejected.</p>\n</li>\n</ul>\n<h1 id=\"request-payload-structure\">Request Payload Structure</h1>\n<p>Every API request uses a common payload structure. This ensures consistency across services and reduces integration effort. The payload is divided into standard objects, each serving a specific purpose.</p>\n<h5 id=\"top-level-fields\"><strong>Top Level Fields</strong></h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Requirement</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>String</td>\n<td>Yes</td>\n<td>Unique reference ID for this API call. Must be unique for every request.</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>String</td>\n<td>Yes</td>\n<td>Defines the type of request. For mandate checks, use Get Accounts Max.</td>\n</tr>\n<tr>\n<td>auth</td>\n<td>Object</td>\n<td>Yes</td>\n<td>Contains authentication information (provider, type, secure value).</td>\n</tr>\n<tr>\n<td>transaction</td>\n<td>Object</td>\n<td>Yes</td>\n<td>Holds transaction-specific details like reference, amount, customer info.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"auth-object\">Auth Object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Requirement</strong></th>\n<th><strong>Descriptional</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>type</td>\n<td>String/null</td>\n<td>No</td>\n<td>Authentication type other service. For mandate check,get_bank, may be null.</td>\n</tr>\n<tr>\n<td>secure</td>\n<td>String/null</td>\n<td>No</td>\n<td>Encrypted authentication value. May be null if not applicable.</td>\n</tr>\n<tr>\n<td>auth_provider</td>\n<td>String</td>\n<td>Yes</td>\n<td>Identifies the authentication provider. Use <code>PaywithAccount</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"type\"><strong>Type</strong></h4>\n<p>This defines the authentication type and varies depending on the service being called.</p>\n<ul>\n<li><p>For get banks service → the value is <code>null</code>.</p>\n</li>\n<li><p>For mandate creation → the value is <code>\"bank.account\"</code>, because a mandate is being placed on a specific account.</p>\n</li>\n</ul>\n<h4 id=\"secure\"><strong>Secure</strong></h4>\n<p>If type has a value, then secure must also have a value.</p>\n<ul>\n<li>The value is encrypted using TripleDES with your secret key as the encryption key.</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>TripleDES.encrypt(\"{account_number};{cbn_bankcode}\", secretKey)\n\n</code></pre><h4 id=\"the-auth-object\"><strong>The Auth Object</strong></h4>\n<p>Using the formula, the full object looks like this:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"type\": \"bank.account\",\n\"secure\": TripleDES.encrypt(\"{account_number};{cbn_bankcode}\", secretKey),\n\"auth_provider\": \"paywithaccount\"\n\n</code></pre><h4 id=\"sample-encryption-in-java\">Sample encryption in Java</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>MessageDigest md = MessageDigest.getInstance(\"md5\");\nbyte[] digestOfPassword = md.digest(key.getBytes(\"UTF-16LE\"));\nbyte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);\nfor (int j = 0, k = 16; j &lt; 8;) {\n    keyBytes[k++] = keyBytes[j++];\n}\nSecretKey secretKey = new SecretKeySpec(keyBytes, 0, 24, \"DESede\");\nIvParameterSpec iv = new IvParameterSpec(new byte[8]);\nCipher cipher = Cipher.getInstance(\"DESede/CBC/PKCS5Padding\");\ncipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);\nbyte[] plainTextBytes = toBeEncrypted.getBytes(\"UTF-16LE\");\nbyte[] cipherText = cipher.doFinal(plainTextBytes);\nString output = new String(Base64.encodeBase64(cipherText));\nreturn output;\n\n</code></pre><h4 id=\"sample-encryption-in-c-sharp\">Sample encryption in C-Sharp</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>string encryptedText = \"\";\nMD5 md5 = new MD5CryptoServiceProvider();\nTripleDES des = new TripleDESCryptoServiceProvider();\ndes.KeySize = 128;\ndes.Mode = CipherMode.CBC;\ndes.Padding = PaddingMode.PKCS7;\nbyte[] md5Bytes = md5.ComputeHash(Encoding.Unicode.GetBytes(key));\nbyte[] ivBytes = new byte[8];\ndes.Key = md5Bytes;\ndes.IV = ivBytes;\nbyte[] clearBytes = Encoding.Unicode.GetBytes(TextToEncrypt);\nICryptoTransform ct = des.CreateEncryptor();\nusing (MemoryStream ms = new MemoryStream())\n{\n    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))\n    {\n        cs.Write(clearBytes, 0, clearBytes.Length);\n        cs.Close();\n    }\n    encryptedText = Convert.ToBase64String(ms.ToArray());\n}\nreturn encryptedText;\n\n</code></pre><h4 id=\"sample-encryption-in-php\">Sample encryption in PHP</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>function EncryptV2($encryption_key,$data)\n{\n    $source = mb_convert_encoding($encryption_key, 'UTF-16LE', 'UTF-8');\n    $key = md5($source, true);\n    $key .= substr($key, 0, 8);\n     // a 128 bit (16 byte) key\n     // append the first 8 bytes onto the end\n    //Pad for PKCS7\n    $block = mcrypt_get_block_size('tripledes', 'cbc');\n    $len = strlen($data);\n    $padding = $block - ($len % $block);\n    $data .= str_repeat(chr($padding),$padding);\n    $iv =  \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n    $encData = mcrypt_encrypt('tripledes', $key, $data, 'cbc',$iv);\n    echo base64_encode($encData);\n}\n\n</code></pre><h4 id=\"sample-encryption-in-nodejs\">Sample encryption in Node.js</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>const crypto = require('crypto');\nfunction encrypt(sharedKey, plainText) {\n    const bufferedKey = Buffer.from(sharedKey, 'utf16le');\n    const key = crypto.createHash('md5').update(bufferedKey).digest();\n    const newKey = Buffer.concat([key, key.slice(0, 8)]);\n    const IV = Buffer.alloc(8, '\\0');\n    const cipher = crypto.createCipheriv('des-ede3-cbc', newKey, IV).setAutoPadding(true);\n    return cipher.update(plainText, 'utf8', 'base64') + cipher.final('base64');\n}\n\n</code></pre><h4 id=\"transaction-object\">Transaction Object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Requirement</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>mock_mode</td>\n<td>String</td>\n<td>Yes</td>\n<td>Defines the simulation mode for testing. Example: \"Inspect\"</td>\n</tr>\n<tr>\n<td>transaction_ref</td>\n<td>String</td>\n<td>Yes</td>\n<td>Unique reference for this transaction. Must be unique for each request.</td>\n</tr>\n<tr>\n<td>transaction_description</td>\n<td>String</td>\n<td>Yes</td>\n<td>Short description of the transaction purpose. Example: \"Check active mandates\"</td>\n</tr>\n<tr>\n<td>transaction_ref_parent</td>\n<td>String/Null</td>\n<td>No</td>\n<td>Optional reference to a parent transaction (for nested or linked transactions).</td>\n</tr>\n<tr>\n<td>amount</td>\n<td>Number</td>\n<td>Yes</td>\n<td>Amount involved in the transaction. Use 0 if the transaction does not involve payment.</td>\n</tr>\n<tr>\n<td>customer</td>\n<td>Object</td>\n<td>Yes</td>\n<td>Contains customer-specific information (see below).</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>Object</td>\n<td>No</td>\n<td>Optional metadata related to the transaction (e.g., biller code, category).</td>\n</tr>\n<tr>\n<td>details</td>\n<td>Object</td>\n<td>No</td>\n<td>Additional transaction-specific details; can be empty if not applicable.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Customer Object</strong></p>\n<p>The <code>customer</code> object stores information to uniquely identify and contact the customer. <strong>Fields are optional depending on the service being called</strong>. If not required, they can be left as empty strings (<code>\"\"</code>)</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Requirement</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>customer_ref</td>\n<td>String</td>\n<td>Yes</td>\n<td>Unique customer identifier. Always advised to use the 13-digit phone number starting with 234. Example: 2348022222222</td>\n</tr>\n<tr>\n<td>firstname</td>\n<td>String</td>\n<td>No</td>\n<td>Customer first name. Can be left as \"\" if not required by the service</td>\n</tr>\n<tr>\n<td>surname</td>\n<td>String</td>\n<td>No</td>\n<td>Customer last name. Can be left as \"\" if not required</td>\n</tr>\n<tr>\n<td>email</td>\n<td>String</td>\n<td>No</td>\n<td>Customer email address. Can be left as \"\" if not required</td>\n</tr>\n<tr>\n<td>mobile_no</td>\n<td>String</td>\n<td>No</td>\n<td>Customer mobile phone number. Can be left as \"\" if not required</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"meta-object\">Meta Object</h4>\n<p>The <code>meta</code> object is <strong>optional</strong> and can contain extra contextual information for the transaction depending on the service.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Requirement</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>biller_code</td>\n<td>String</td>\n<td>No</td>\n<td>Code identifying the biller or service provider. Example: \"000019\"</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Details Object</strong></p>\n<ul>\n<li><p>The <code>details</code> object can contain additional information relevant to the transaction.</p>\n</li>\n<li><p>It can be empty (<code>{}</code>) if no extra details are needed.</p>\n</li>\n</ul>\n","_postman_id":"8bd5acd9-605c-4dfa-afcf-37c591bf8b8b"},{"name":"USD","item":[{"name":"Open Account(USD Virtual) - Static","event":[{"listen":"test","script":{"id":"18ea3d88-ea9a-4fef-a557-f979dec0ab1d","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"1d7b585b-aaa7-49bf-acd0-b217e15fdcb3","exec":[""],"type":"text/javascript"}}],"id":"f93cb1ed-a0ef-4ae9-88bc-4c8712313401","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityUSD\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": \"Jane\",\n            \"dob\": \"2005-05-13\",\n            \"gender\": \"M\",\n            \"title\": \"Mr\",\n            \"address_line_1\": \"23, Okon street, Ikeja\",\n            \"address_line_2\": \"Ikeja\",\n            \"city\": \"Mushin\",\n            \"state\": \"Lagos State\",\n            \"country\": \"Nigeria\"\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can open and assign accounts to customers or transactions.</p>\n<p>**NOTE: Set <code>auth_provider</code> to <code>FidelityVirtual</code></p>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"0cb08a04-05b6-4f74-9af7-417b894b6ace","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": \"Jane\",\n            \"dob\": \"2005-05-13\",\n            \"gender\": \"M\",\n            \"title\": \"Mr\",\n            \"address_line_1\": \"23, Okon street, Ikeja\",\n            \"address_line_2\": \"Ikeja\",\n            \"city\": \"Mushin\",\n            \"state\": \"Lagos State\",\n            \"country\": \"Nigeria\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 13:49:51 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"873"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Request processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"MVgGByKV-js-oa\",\n            \"account_number\": \"9012807653\",\n            \"contract_code\": null,\n            \"account_reference\": \"MVgGByKV-js-oa\",\n            \"account_name\": \"Uju Usman\",\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"uju@gmail.com\",\n            \"bank_name\": \"Fidelity Bank Limited\",\n            \"bank_code\": \"076\",\n            \"account_type\": null,\n            \"status\": \"ACTIVE\",\n            \"created_on\": \"2021-11-01-19-11-55\",\n            \"meta\": {\n            }\n        },\n        \"client_info\": null\n    }\n}"},{"id":"4f0e4bf4-01d4-4b9f-960c-ff3a84e9b6ed","name":"Open Account(Virtual)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": \"Jane\",\n            \"dob\": \"2005-05-13\",\n            \"gender\": \"M\",\n            \"title\": \"Mr\",\n            \"address_line_1\": \"23, Okon street, Ikeja\",\n            \"address_line_2\": \"Ikeja\",\n            \"city\": \"Mushin\",\n            \"state\": \"Lagos State\",\n            \"country\": \"Nigeria\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Request processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"MVgGByKV-js-oa\",\n            \"account_number\": \"9012807653\",\n            \"contract_code\": null,\n            \"account_reference\": \"MVgGByKV-js-oa\",\n            \"account_name\": \"Uju Usman\",\n            \"currency_code\": \"NGN\",\n            \"customer_email\": \"uju@gmail.com\",\n            \"bank_name\": \"Fidelity Bank Limited\",\n            \"bank_code\": \"076\",\n            \"account_type\": null,\n            \"status\": \"ACTIVE\",\n            \"created_on\": \"2021-11-01-19-11-55\",\n            \"meta\": {\n            }\n        },\n        \"client_info\": null\n    }\n}"}],"_postman_id":"f93cb1ed-a0ef-4ae9-88bc-4c8712313401"},{"name":"Notification (USD payment completion)","event":[{"listen":"test","script":{"id":"4c3a8e7c-779b-4df1-890f-933559018b37","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"c53ca020-564d-4d88-ba38-33d72a9f0d6c","exec":[""],"type":"text/javascript"}}],"id":"97b5deee-3ec0-4919-8766-e20753af1f01","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Signature","type":"text","value":" {{MD5Hash(request_ref;app_secret)}}"}],"body":{"mode":"raw","raw":"{\r\n    \"details\": {\r\n        \"data\": {\r\n            \"amount\": 20,\r\n            \"currency\": \"USD\",\r\n            \"tranDate\": \"2023-09-06T23:00:00\",\r\n            \"bank_code\": \"076\",\r\n            \"narration\": \"Test Transaction\",\r\n            \"account_number\": \"000000000\",\r\n            \"remittanceInfo\": \"Test Transaction\",\r\n            \"paymentReference\": \"C0132431086101004\",\r\n            \"beneficiaryAccountName\": \"Jon Doe\",\r\n            \"collectionAccountNumber\": \"00000000000\",\r\n            \"BeneficiaryAccountNumber\": \"00000000000\"\r\n        },\r\n        \"meta\": {\r\n            \"route\": \"listener\",\r\n            \"grb_status\": \"pwt-active\"\r\n        },\r\n        \"amount\": 2000,\r\n        \"status\": \"Successful\",\r\n        \"provider\": \"FidelityUSD\",\r\n        \"customer_ref\": \"2349066870000\",\r\n        \"customer_email\": \"DOE@gmail.com\",\r\n        \"transaction_ref\": \"C0132431086101004\",\r\n        \"customer_surname\": \"Olunloye\",\r\n        \"transaction_desc\": \"TEST USD Transaction\",\r\n        \"transaction_type\": \"collect\",\r\n        \"customer_firstname\": \"DOE\",\r\n        \"customer_mobile_no\": \"2349066870000\"\r\n    },\r\n    \"app_info\": {\r\n        \"app_code\": \"{{app_code}}\"\r\n    },\r\n    \"mock_mode\": \"Live\",\r\n    \"requester\": \"FidelityUSD\",\r\n    \"request_ref\": \"29d378e2-d7c7-42bc-a2cc-75232fa6543f\",\r\n    \"request_type\": \"transaction_notification\"\r\n}"},"url":"","description":"<h2 id=\"a-use-case\">A use case</h2>\n<p>Notifications are useful for a new wave of payment approaches that businesses are starting to explore:</p>\n<ol>\n<li><p>Open an account and map it to a customer or specific transaction</p>\n</li>\n<li><p>Ask customers to transfer to that account</p>\n</li>\n<li><p>Get notified once a credit or debit hits that account</p>\n</li>\n<li><p>Process the service that the customer was supposed to pay for</p>\n</li>\n<li><p>Monies are \"swept\" from that account into yours after a while.</p>\n</li>\n</ol>\n<p>With this, you'd expose a webhook url, that will receive a <code>POST</code> message upon a credit or debit activity on an account that you have access to.</p>\n<p>First, you have to setup your webhook url on the App console.</p>\n<p>Upon receiving the message, please respond with a <code>200 - OK</code>.</p>\n<h4 id=\"request-body-elements\">Request body elements</h4>\n<p>Here is the explanation of the fields you would receive.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>A unique reference for this specific API call. It would have been uniquely generated by OnePipe for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>In this case it would be set to '<code>transaction_notification</code>'.</td>\n</tr>\n<tr>\n<td>requester</td>\n<td>This would be set to <code>{{Simple Payments}}</code> if coming from the Simple Payments product. And set to <code>{{GRB}}</code> if coming from the Grassroots Banking product.</td>\n</tr>\n<tr>\n<td>mock_mode</td>\n<td>Here, you will receive <code>Live</code> for live transactions and <code>Inspect</code> for test transactions.</td>\n</tr>\n<tr>\n<td>details.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>details.transaction_type</td>\n<td>This will come to you as <code>collect</code> since you are receiving an inflow.</td>\n</tr>\n<tr>\n<td>details.provider</td>\n<td>This will contain <code>{{Provider Name}}</code> that was used to process the payment.</td>\n</tr>\n<tr>\n<td>details.transaction_ref</td>\n<td>A unique reference for this specific transaction. This field must be treated as an idempotency key in the event of a system retry.</td>\n</tr>\n<tr>\n<td>details.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems.</td>\n</tr>\n<tr>\n<td>details.customer_firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>details.customer_surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>details.customer_email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>details.customer_mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>data</td>\n<td>A JSON object representing some of the details of the payment like invoice number and other miscellanous information.</td>\n</tr>\n<tr>\n<td>app_info.app_code</td>\n<td>Your application identifier on OnePipe</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"97b5deee-3ec0-4919-8766-e20753af1f01"}],"id":"64a10fa5-409a-4838-82bb-e53b0bf973ab","_postman_id":"64a10fa5-409a-4838-82bb-e53b0bf973ab","description":""},{"name":"NGN","item":[{"name":"Open Account(Virtual) - Static","id":"82838dcc-98da-4498-a533-304d6995e489","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {},\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": null,\n            \"dob\": null,\n            \"gender\": null,\n            \"title\": null,\n            \"address_line_1\": null,\n            \"address_line_2\": null,\n            \"city\": null,\n            \"state\": null,\n            \"country\": null\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can open Optimus virtual accounts on behalf of their customers.</p>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"afc55581-24d8-4d58-add0-22caaaa3d579","name":"Successful","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {},\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": null,\n            \"dob\": null,\n            \"gender\": null,\n            \"title\": null,\n            \"address_line_1\": null,\n            \"address_line_2\": null,\n            \"city\": null,\n            \"state\": null,\n            \"country\": null\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"0\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"{{unique reference}}\",\n            \"account_number\": \"4565048125\",\n            \"contract_code\": null,\n            \"account_reference\": \"{{unique reference}}\",\n            \"account_name\": \"AppName - John J. Doe\",\n            \"currency_code\": null,\n            \"customer_email\": null,\n            \"bank_name\": \"Fideity Bank\",\n            \"bank_code\": \"070\",\n            \"account_type\": null,\n            \"status\": \"ACTIVE\",\n            \"created_on\": \"2019-01-15 5:35:16\"\n        },\n        \"client_info\": null\n    }\n}"}],"_postman_id":"82838dcc-98da-4498-a533-304d6995e489"},{"name":"Open Account(Virtual) - Dynamic","event":[{"listen":"test","script":{"id":"4b345820-2cd1-48d3-be65-c6eb0340a8e2","exec":[""],"type":"text/javascript","packages":{},"requests":{}}},{"listen":"prerequest","script":{"id":"0dbd484d-ce7c-42c8-a4fc-d98124018a2d","exec":[""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"056b039f-2c65-4c6a-83b4-d183e5758b8c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {\n            \"amount\": 1000\n        },\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": null,\n            \"dob\": null,\n            \"gender\": null,\n            \"title\": null,\n            \"address_line_1\": null,\n            \"address_line_2\": null,\n            \"city\": null,\n            \"state\": null,\n            \"country\": null\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can open Fidelity virtual accounts on behalf of their customers.</p>\n<p>For dynamic virtual account, set expected amount in the meta field.</p>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"6dc6a860-6e8c-4225-9114-1dc540dd53b3","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"open_account\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"FidelityVirtual\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"2348033000989\",\n            \"firstname\": \"John\",\n            \"surname\": \"Doe\",\n            \"email\": \"john@doe.com\",\n            \"mobile_no\": \"2348033000989\"\n        },\n        \"meta\": {\n            \"amount\": 1000\n        },\n        \"details\": {\n            \"name_on_account\": \"John J. Doe\",\n            \"middlename\": null,\n            \"dob\": null,\n            \"gender\": null,\n            \"title\": null,\n            \"address_line_1\": null,\n            \"address_line_2\": null,\n            \"city\": null,\n            \"state\": null,\n            \"country\": null\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 13:49:51 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Content-Length","value":"873"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"0\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"{{unique reference}}\",\n            \"account_number\": \"4565048125\",\n            \"contract_code\": null,\n            \"account_reference\": \"{{unique reference}}\",\n            \"account_name\": \"AppName - John J. Doe\",\n            \"currency_code\": null,\n            \"customer_email\": null,\n            \"bank_name\": \"Fidelity Bank\",\n            \"bank_code\": \"070\",\n            \"account_type\": null,\n            \"status\": \"ACTIVE\",\n            \"created_on\": \"2019-01-15 5:35:16\",\n            \"meta\": {\n               \"amount\": \"1000\",\n               \"expires_in_minutes\": \"30\"\n            }\n        },\n        \"client_info\": null\n    }\n}"}],"_postman_id":"056b039f-2c65-4c6a-83b4-d183e5758b8c"},{"name":"Transaction Notification","id":"22a7cc50-7a3f-4f54-a8f4-1f9238bebfac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"details\": {\n        \"data\": {\n            \"tag\": \"FIDELITY\",\n            \"amount\": \"30.00\",\n            \"status\": \"00\",\n            \"bankcode\": \"000017\",\n            \"bankname\": null,\n            \"trandate\": \"2025-09-04T11:10:02.283\",\n            \"bank_code\": \"076\",\n            \"craccount\": \"4566615583\",\n            \"narration\": \"4566615583/John Test/Fidelity-\",\n            \"sessionid\": \"000017250904111000680177831869\",\n            \"channelcode\": \"9\",\n            \"chargeamount\": null,\n            \"craccountname\": \"John Test Doe\",\n            \"originatorbvn\": null,\n            \"statusmessage\": \"Success\",\n            \"account_number\": \"4566615583\",\n            \"beneficiarybvn\": null,\n            \"nameenquiryref\": \"000017250904111001000000111001\",\n            \"originatorname\": \"OLUWASEMILOORE OLUWATOMISIN AKINLO\",\n            \"referencenumber\": null,\n            \"paymentreference\": \"638925809997397932\",\n            \"originatorcbncode\": \"035\",\n            \"originatorkyclevel\": null,\n            \"beneficiarykyclevel\": null,\n            \"transactionlocation\": \" \",\n            \"collectionaccountNumber\": \"4011389403\",\n            \"originatoraccountnumber\": \"0232321799\",\n            \"destinationinstitutionbankcode\": \"000007\"\n        },\n        \"meta\": {\n            \"route\": \"listener\",\n            \"narration\": \"4566615583/John Test/Fidelity-\",\n            \"cr_account\": \"4566615583\",\n            \"cr_account_name\": \"John Test Doe\",\n            \"originator_cbn_code\": \"035\",\n            \"originator_bank_name\": null,\n            \"originator_account_name\": \"OLUWASEMILOORE OLUWATOMISIN AKINLO\",\n            \"originator_account_number\": \"0232321799\"\n        },\n        \"amount\": 3000,\n        \"status\": \"Successful\",\n        \"provider\": \"FidelityVirtual\",\n        \"customer_ref\": \"{{customer_ref}}\",\n        \"customer_email\": \"{{customer_email}}\",\n        \"transaction_ref\": \"{{transaction_ref}}\",\n        \"customer_surname\": \"Test\",\n        \"transaction_desc\": \"4566615583/John Test/Fidelity-\",\n        \"transaction_type\": \"collect\",\n        \"customer_firstname\": \"Test\",\n        \"customer_mobile_no\": \"2348033000989\"\n    },\n    \"app_info\": {\n        \"app_code\": \"PAYP647540\"\n    },\n    \"mock_mode\": \"Live\",\n    \"requester\": \"FidelityVirtual\",\n    \"request_ref\": \"6cfd4e8d-f6f5-492d-95ab-e795bf56e044\",\n    \"request_type\": \"transaction_notification\"\n}","options":{"raw":{"language":"json"}}},"url":"","description":"<h2 id=\"a-use-case\">A use case</h2>\n<p>Notifications are useful for a new wave of payment approaches that businesses are starting to explore:</p>\n<ol>\n<li><p>Open an account and map it to a customer or specific transaction</p>\n</li>\n<li><p>Ask customers to transfer to that account</p>\n</li>\n<li><p>Get notified once a credit or debit hits that account</p>\n</li>\n<li><p>Process the service that the customer was supposed to pay for</p>\n</li>\n<li><p>Monies are \"swept\" from that account into yours after a while.</p>\n</li>\n</ol>\n<p>With this, you'd expose a webhook url, that will receive a <code>POST</code> message upon a credit or debit activity on an account that you have access to.</p>\n<p>First, you have to setup your webhook url on the App console.</p>\n<p>Upon receiving the message, please respond with a <code>200 - OK</code>.</p>\n<h4 id=\"request-body-elements\">Request body elements</h4>\n<p>Here is the explanation of the fields you would receive.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>A unique reference for this specific API call. It would have been uniquely generated by OnePipe for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>In this case it would be set to '<code>transaction_notification</code>'.</td>\n</tr>\n<tr>\n<td>requester</td>\n<td>This would be set to <code>{{Simple Payments}}</code> if coming from the Simple Payments product. And set to <code>{{GRB}}</code> if coming from the Grassroots Banking product.</td>\n</tr>\n<tr>\n<td>mock_mode</td>\n<td>Here, you will receive <code>Live</code> for live transactions and <code>Inspect</code> for test transactions.</td>\n</tr>\n<tr>\n<td>details.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>details.transaction_type</td>\n<td>This will come to you as <code>collect</code> since you are receiving an inflow.</td>\n</tr>\n<tr>\n<td>details.provider</td>\n<td>This will contain <code>{{Provider Name}}</code> that was used to process the payment.</td>\n</tr>\n<tr>\n<td>details.transaction_ref</td>\n<td>A unique reference for this specific transaction. This field must be treated as an idempotency key in the event of a system retry.</td>\n</tr>\n<tr>\n<td>details.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems.</td>\n</tr>\n<tr>\n<td>details.customer_firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>details.customer_surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>details.customer_email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>details.customer_mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>data</td>\n<td>A JSON object representing some of the details of the payment like invoice number and other miscellanous information.</td>\n</tr>\n<tr>\n<td>app_info.app_code</td>\n<td>Your application identifier on OnePipe</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"22a7cc50-7a3f-4f54-a8f4-1f9238bebfac"}],"id":"376998e8-77ae-4d0d-a1e9-de9dcd0244a8","_postman_id":"376998e8-77ae-4d0d-a1e9-de9dcd0244a8","description":""}],"id":"fdde5006-e986-4e30-9f15-46dec0946058","_postman_id":"fdde5006-e986-4e30-9f15-46dec0946058","description":""},{"name":"Bookings","item":[{"name":"Create Booking","event":[{"listen":"test","script":{"id":"18ea3d88-ea9a-4fef-a557-f979dec0ab1d","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"1d7b585b-aaa7-49bf-acd0-b217e15fdcb3","exec":[""],"type":"text/javascript"}}],"id":"ff55016f-f7bc-4fa8-b5b7-933ae0caa34c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null,\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{reference}}\",\n        \"transaction_desc\": \"STX-SJU\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000000,\n        \"customer\": {\n            \"customer_ref\": \"2347012382234\",\n            \"firstname\": \"Oluwole\",\n            \"surname\": \"Habibat\",\n            \"email\": \"johndoe@gmail.com\",\n            \"mobile_no\": \"2347012382234\"\n        },\n        \"meta\": {\n            \"merchant_id\": \"7027\",\n            \"pnr\": \"AVLP6D\",\n            \"travel_date\": \"2013-03-14-21-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"currency\": \"NGN\" //NGN, GBP, USD, KSH\n        },\n        \"details\": {\n            \"title\": \"Mr\",\n            \"reference_number\": \"70279922332\",\n            \"service_number\": \"PHCLOS\",\n            \"booking_creation\": \"2013-03-12-20-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"booking_expiry\": \"2013-03-13-21-34-00\" //yyyy-mm-dd-hh-mm-ss\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, calling applications can open and assign virtual accounts to customers, allowing them to make transfers for a specific booking transaction.</p>\n<p>Simply display the value of <code>data.provider_response.note</code> to the customer. This field contains the summarized payment instruction for them.</p>\n<h4 id=\"optional\">Optional:</h4>\n<p>If a <code>data.provider_response.meta.payment_link</code> is also returned as part of the response, it means customer should be redirected to the <code>payment_link</code> for payment to be made.</p>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"71803561-cb00-42a0-b570-2ab2c0ccef39","name":"PendingFulfilment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null,\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{reference}}\",\n        \"transaction_desc\": \"STX-SJU\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000000,\n        \"customer\": {\n            \"customer_ref\": \"2347012382234\",\n            \"firstname\": \"Oluwole\",\n            \"surname\": \"Habibat\",\n            \"email\": \"johndoe@gmail.com\",\n            \"mobile_no\": \"2347012382234\"\n        },\n        \"meta\": {\n            \"merchant_id\": \"7027\",\n            \"pnr\": \"AVLP6D\",\n            \"travel_date\": \"2013-03-14-21-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"currency\": \"GBP\" //NGN, GBP, USD, KSH\n        },\n        \"details\": {\n            \"title\": \"Mr\",\n            \"reference_number\": \"70279922332\",\n            \"service_number\": \"PHCLOS\",\n            \"booking_creation\": \"2013-03-12-20-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"booking_expiry\": \"2013-03-13-21-34-00\" //yyyy-mm-dd-hh-mm-ss\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 13:49:51 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"873"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"PendingFulfilment\",\n    \"message\": \"Booking created successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"8RR1GjFnw3ULlfJR\",\n            \"note\": \"Booking Payment Ref: [[reference]]<br><br>Hello John Doe, Ticket Amount: :[[mbcurrency]][[mbamount]]<br>Processing Fee: NGN0.50<br><br>To pay, please transfer exact amount NGN100,000.50 for ticket to be issued to Account: 4550002312<br>Bank: Fidelity Bank<br>Account Name: John Doe<br><br>Booking expires at [[ttl]]. You will also get an SMS from the Bank.\",\n            \"meta\": {\n                \"payment_link\": \"https://paywithaccount.link/h9876de4\",\n                \"account\": {\n                    \"account_number\": \"4551767272\",\n                    \"contract_code\": null,\n                    \"account_reference\": \"8RR1GjFnw3ULlfJR\",\n                    \"account_name\": \"AIRPEACE - John Doe\",\n                    \"currency_code\": \"NGN\",\n                    \"customer_email\": \"johndoe@gmail.com\",\n                    \"bank_name\": \"Fidelity\",\n                    \"bank_code\": \"070\",\n                    \"account_type\": \"STATIC\",\n                    \"status\": \"ACTIVE\",\n                    \"created_on\": \"2022-11-18T10:23:35.122Z\"\n                }\n            }\n        }\n    }\n}"},{"id":"3fae6e17-fdd3-4026-ae3d-35ede6e64f67","name":"Failure","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null,\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{reference}}\",\n        \"transaction_desc\": \"STX-SJU\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000000,\n        \"customer\": {\n            \"customer_ref\": \"2347012382234\",\n            \"firstname\": \"Oluwole\",\n            \"surname\": \"Habibat\",\n            \"email\": \"johndoe@gmail.com\",\n            \"mobile_no\": \"2347012382234\"\n        },\n        \"meta\": {\n            \"merchant_id\": \"7027\",\n            \"pnr\": \"AVLP6D\",\n            \"travel_date\": \"2013-03-14-21-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"currency\": \"NGN\" //NGN, GBP, USD, KSH\n        },\n        \"details\": {\n            \"title\": \"Mr\",\n            \"reference_number\": \"70279922332\",\n            \"service_number\": \"PHCLOS\",\n            \"booking_creation\": \"2013-03-12-20-34-00\", //yyyy-mm-dd-hh-mm-ss\n            \"booking_expiry\": \"2013-03-13-21-34-00\" //yyyy-mm-dd-hh-mm-ss\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Unable to process this request.\",\n    \"data\": {\n        \"provider_response_code\": \"96\",\n        \"provider\": \"Fidelity\",\n        \"error\": {\n            \"code\": \"04\",\n            \"message\": \"Invalid pnr supplied\"\n        },\n        \"errors\": [\n            {\n                \"code\": \"04\",\n                \"message\": \"Invalid pnr supplied\"\n            }\n        ]\n    }\n}"}],"_postman_id":"ff55016f-f7bc-4fa8-b5b7-933ae0caa34c"},{"name":"Create Booking - Payment Notification","event":[{"listen":"test","script":{"id":"4c3a8e7c-779b-4df1-890f-933559018b37","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"c53ca020-564d-4d88-ba38-33d72a9f0d6c","exec":[""],"type":"text/javascript"}}],"id":"e93e9ea8-28e6-4736-9ef2-3743fd8a7a64","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Signature","type":"text","value":" {{MD5Hash(request_ref;app_secret)}}"}],"body":{"mode":"raw","raw":"{\r\n    \"request_ref\": \"{{request_ref}}\",\r\n    \"request_type\": \"transaction_notification\",\r\n    \"requester\": \"FidelityVirtual\",\r\n    \"mock_mode\": \"live\",\r\n    \"details\": {\r\n        \"amount\": 10000000,\r\n        \"status\": \"Successful\",\r\n        \"provider\": \"FidelityVirtual\",\r\n        \"customer_ref\": \"2347012382234\",\r\n        \"customer_email\": \"johndoe@gmail.com\",\r\n        \"transaction_ref\": \"{{transaction_ref}}\",\r\n        \"customer_surname\": \"John\",\r\n        \"customer_firstname\": \"Doe\",\r\n        \"transaction_desc\": \"{{transaction_description}}\",\r\n        \"transaction_type\": \"collect\",\r\n        \"customer_mobile_no\": \"2347012382234\",\r\n        \"meta\": {\r\n            \"reference_number\": \"70279922332\",\r\n            \"service_number\": \"PHCLOS\",\r\n            \"pnr\": \"AVLP6D\",\r\n            \"transaction_date\": \"2022-11-18-11-41-58\",\r\n            \"booking_amount\": 10000000\r\n        },\r\n        \"data\": {}\r\n    },\r\n    \"app_info\": {\r\n        \"app_code\": \"{{your_app_code}}\"\r\n    }\r\n}"},"url":"","description":"<p>You'll be notified each time a customer completes a payment for a booking.</p>\n<p>To enable this, provide a webhook URL that will receive a POST message whenever a booking payment is made.</p>\n<p>First, you have to setup your webhook url on the App console.</p>\n<p>Upon receiving the message, please respond with a <code>200 - OK</code>.</p>\n<h4 id=\"request-body-elements\">Request body elements</h4>\n<p>Here is the explanation of the fields you would receive.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>A unique reference for this specific API call. It would have been uniquely generated by OnePipe for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>In this case it would be set to <code>transaction_notification</code>.</td>\n</tr>\n<tr>\n<td>requester</td>\n<td>This would be set to <code>{{Simple Payments}}</code> if coming from the Simple Payments product. And set to <code>{{GRB}}</code> if coming from the Grassroots Banking product.</td>\n</tr>\n<tr>\n<td>mock_mode</td>\n<td>Here, you will receive <code>Live</code> for live transactions and <code>Inspect</code> for test transactions.</td>\n</tr>\n<tr>\n<td>details.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>details.transaction_type</td>\n<td>This will come to you as <code>collect</code> or <code>transaction_notification</code> since you are receiving an inflow.</td>\n</tr>\n<tr>\n<td>details.provider</td>\n<td>This will contain <code>{{Provider Name}}</code> that was used to process the payment.</td>\n</tr>\n<tr>\n<td>details.transaction_ref</td>\n<td>A unique reference for this specific transaction. This field must be treated as an idempotency key in the event of a system retry.</td>\n</tr>\n<tr>\n<td>details.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems.</td>\n</tr>\n<tr>\n<td>details.customer_firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>details.customer_surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>details.customer_email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>details.customer_mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>meta</td>\n<td>A JSON object representing some of the details of the booking</td>\n</tr>\n<tr>\n<td>data</td>\n<td>A JSON object representing some of the details of the payment like invoice number and other miscellanous information.</td>\n</tr>\n<tr>\n<td>app_info.app_code</td>\n<td>Your application identifier on OnePipe</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"a2831b2b-2fd9-4d95-975f-d9e3f65e001d","name":"Payment Notification","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Signature","value":" {{MD5Hash(request_ref;app_secret)}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"request_ref\": \"{{request_ref}}\",\r\n    \"request_type\": \"transaction_notification\",\r\n    \"requester\": \"FidelityVirtual\",\r\n    \"mock_mode\": \"live\",\r\n    \"details\": {\r\n        \"amount\": 10000000,\r\n        \"status\": \"Successful\",\r\n        \"provider\": \"FidelityVirtual\",\r\n        \"customer_ref\": \"2347012382234\",\r\n        \"customer_email\": \"johndoe@gmail.com\",\r\n        \"transaction_ref\": \"{{transaction_ref}}\",\r\n        \"customer_surname\": \"John\",\r\n        \"customer_firstname\": \"Doe\",\r\n        \"transaction_desc\": \"{{transaction_description}}\",\r\n        \"transaction_type\": \"collect\",\r\n        \"customer_mobile_no\": \"2347012382234\",\r\n        \"meta\": {\r\n            \"reference_number\": \"70279922332\",\r\n            \"service_number\": \"PHCLOS\",\r\n            \"pnr\": \"AVLP6D\",\r\n            \"transaction_date\": \"2022-11-18-11-41-58\",\r\n            \"booking_amount\": 10000000\r\n        },\r\n        \"data\": {}\r\n    },\r\n    \"app_info\": {\r\n        \"app_code\": \"{{your_app_code}}\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"e93e9ea8-28e6-4736-9ef2-3743fd8a7a64"},{"name":"Create Booking - Query Payment Status","event":[{"listen":"test","script":{"id":"18ea3d88-ea9a-4fef-a557-f979dec0ab1d","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"1d7b585b-aaa7-49bf-acd0-b217e15fdcb3","exec":[""],"type":"text/javascript"}}],"id":"9773b3b4-2195-448a-8c82-add8bbc69324","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{reference}}\"\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact/query","description":"<p>Use this endpoint to query booking.</p>\n<p>**NOTE: Set <code>transaction_ref</code> to transaction reference used to create the booking.</p>\n<h4 id=\"response-status-types\">Response status types</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>status</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Successful</td>\n<td>string</td>\n<td>Booking was successfully paid for, and has been processed.</td>\n</tr>\n<tr>\n<td>PendingFulfilment</td>\n<td>string</td>\n<td>Booking is still pending payment fulfilment.</td>\n</tr>\n<tr>\n<td>provider_response.meta.reference_number</td>\n<td>string</td>\n<td>Reference number of booking.</td>\n</tr>\n<tr>\n<td>provider_response.meta.service_number</td>\n<td>string</td>\n<td>Service number of booking.</td>\n</tr>\n<tr>\n<td>provider_response.meta.pnr</td>\n<td>string</td>\n<td>PNR of booking</td>\n</tr>\n<tr>\n<td>provider_response.meta.booking_amount</td>\n<td>big decimal</td>\n<td>Actual booking amount (in kobo). This is same amount used to create the booking.</td>\n</tr>\n<tr>\n<td>provider_response.meta.payment_amount</td>\n<td>big decimal</td>\n<td>Total amount (in kobo) paid and processed at the bank.</td>\n</tr>\n<tr>\n<td>provider_response.meta.payment_reference</td>\n<td>string</td>\n<td>Bank reference used to make payment for the booking.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","transact","query"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"92b24318-938d-4f97-9c77-cba298ba161e","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{reference}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact/query"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Request processed successfully.\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"provider_response\": {\n            \"reference\": \"TRX38534732\",\n            \"note\": \"Booking Payment Ref: [[reference]]<br><br>Hello John Doe, Ticket Amount: :[[mbcurrency]][[mbamount]]<br>Processing Fee: NGN0.50<br><br>To pay, please transfer exact amount NGN100,000.50 for ticket to be issued to Account: 4550002312<br>Bank: Fidelity Bank<br>Account Name: John Doe<br><br>Booking expires at [[ttl]]. You will also get an SMS from the Bank.\",\n            \"meta\": {\n                \"account\": {\n                    \"account_number\": \"4551767272\",\n                    \"contract_code\": null,\n                    \"account_reference\": \"8RR1GjFnw3ULlfJR\",\n                    \"account_name\": \"AIRPEACE - John Doe\",\n                    \"currency_code\": \"NGN\",\n                    \"customer_email\": \"johndoe@gmail.com\",\n                    \"bank_name\": \"Fidelity\",\n                    \"bank_code\": \"070\",\n                    \"account_type\": \"STATIC\",\n                    \"status\": \"ACTIVE\",\n                    \"created_on\": \"2022-11-18T10:23:35.122Z\"\n                },\n                \"reference_number\": \"38534732\",\n                \"service_number\": \"ABVLOS\",\n                \"pnr\": \"ZZZJ6L\",\n                \"booking_amount\": 10000,\n                \"payment_amount\": 10050,\n                \"payment_reference\": \"1000002399981031561693422234224\"\n            }\n        }\n    }\n}"},{"id":"af2edb7e-7507-4272-8604-e541350d2791","name":"PendingFulfilment","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{reference}}\",\n    \"request_type\": \"create_booking\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": null\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{reference}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact/query"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 13:49:51 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"873"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"PendingFulfilment\",\n    \"message\": \"Booking is awaiting fulfilment.\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"provider_response\": {\n            \"reference\": \"TRX38534732\",\n            \"note\": \"Booking Payment Ref: [[reference]]<br><br>Hello John Doe, Ticket Amount: :[[mbcurrency]][[mbamount]]<br>Processing Fee: NGN0.50<br><br>To pay, please transfer exact amount NGN100,000.50 for ticket to be issued to Account: 4550002312<br>Bank: Fidelity Bank<br>Account Name: John Doe<br><br>Booking expires at [[ttl]]. You will also get an SMS from the Bank.\",\n            \"meta\": {\n                \"account\": {\n                    \"account_number\": \"4551767272\",\n                    \"contract_code\": null,\n                    \"account_reference\": \"8RR1GjFnw3ULlfJR\",\n                    \"account_name\": \"AIRPEACE - John Doe\",\n                    \"currency_code\": \"NGN\",\n                    \"customer_email\": \"johndoe@gmail.com\",\n                    \"bank_name\": \"Fidelity\",\n                    \"bank_code\": \"070\",\n                    \"account_type\": \"STATIC\",\n                    \"status\": \"ACTIVE\",\n                    \"created_on\": \"2022-11-18T10:23:35.122Z\"\n                },\n                \"reference_number\": \"38534732\",\n                \"service_number\": \"ABVLOS\",\n                \"pnr\": \"ZZZJ6L\",\n                \"booking_amount\": 10000,\n                \"payment_amount\": 10150,\n                \"payment_reference\": null\n            }\n        }\n    }\n}"}],"_postman_id":"9773b3b4-2195-448a-8c82-add8bbc69324"}],"id":"919c07df-002b-4c63-b336-c6ac501ed524","description":"<p>The primary goal of this interface is to facilitate a Pay With Transfer concept for customers booking flight on the Airline platform.</p>\n<p>This integration interface covers two perspectives:</p>\n<ol>\n<li><p>Create Booking</p>\n</li>\n<li><p>Create Booking - Payment Notification</p>\n</li>\n<li><p>Create Booking - Query Payment Status</p>\n</li>\n</ol>\n","_postman_id":"919c07df-002b-4c63-b336-c6ac501ed524"},{"name":"Others","item":[{"name":"Disburse","event":[{"listen":"test","script":{"id":"5fd5993a-2992-4e36-a166-44b71348e43b","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"3351036c-daa5-4a89-9ec6-4260f68a8402","exec":[""],"type":"text/javascript"}}],"id":"d58c9913-5240-4669-ac9b-44b931089e31","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"disburse\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"0099880099\",\n            \"destination_bank_code\": \"076\"\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can do a transfer to a destination account number from a pre-configured account of the app. If authorisation details are required by a provider, apps will have to provide this.</p>\n<p><strong>NOTE</strong>: Amount to be processed should be in <code>kobo</code> with decimal places.</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WaitingForOTP</strong>: Requires OTP, use <code>/v2/transact/validate</code> as <a href=\"#f1bdb553-68dd-4016-aeed-e4c3d1e27fe4\">follow up</a> call to complete transaction</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"0e78f592-d48e-411d-afd4-b75f6da98737","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"disburse\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"0099880099\",\n            \"destination_bank_code\": \"076\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 13:49:51 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"873"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"destination_institution_code\": \"076\",\n            \"beneficiary_account_name\": \"JAMES BLUE\",\n            \"beneficiary_account_number\": \"0099880099\",\n            \"beneficiary_kyc_level\": \"\",\n            \"originator_account_name\": \"\",\n            \"originator_account_number\": \"1100009909\",\n            \"originator_kyc_level\": \"\",\n            \"narration\": \"A random transaction\",\n            \"transaction_final_amount\": 1000,\n            \"reference\": \"C3DA541CA20740659031949CD3441EBE\",\n            \"payment_id\": \"382FTTP2005901LD\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"95d58e85-d126-43da-b20e-df801360baee","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"disburse\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"0099880099\",\n            \"destination_bank_code\": \"076\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 24 Mar 2020 17:02:29 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"524"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Source and destination account cannot be the same\",\n    \"data\": {\n        \"provider_response_code\": \"83\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"request_reference\": null,\n            \"payment_id\": null\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"d58c9913-5240-4669-ac9b-44b931089e31"},{"name":"Transfer Funds","event":[{"listen":"test","script":{"id":"d5169fef-4643-46f3-a7e0-43f2ee71b1f0","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"f6007c20-5b41-416d-9d8c-fd75d28c6d5f","exec":[""],"type":"text/javascript"}}],"id":"881cbc39-dcd8-4ed9-8366-774871cc0996","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"transfer_funds\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"1020295620\",\n            \"destination_bank_code\": \"076\",\n            \"otp_override\": true\n        }\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can do a transfer to a destination account number from a given source. Authorisation details (for source of funds) will always be required by the SureGate, apps will have to provide this.</p>\n<p><strong>NOTE</strong>: Amount to be processed should be in <code>kobo</code> with decimal places.</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WaitingForOTP</strong>: Requires OTP, use <code>/v2/transact/validate</code> as <a href=\"#f1bdb553-68dd-4016-aeed-e4c3d1e27fe4\">follow up</a> call to complete transaction</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"3e1e4f1b-1a03-41b8-9901-95c6effda320","name":"Succesful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"transfer_funds\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"0099888876\",\n            \"destination_bank_code\": \"076\",\n            \"otp_override\": true\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"destination_institution_code\": \"076\",\n            \"beneficiary_account_name\": \"WALTER JAMES BLUNT\",\n            \"beneficiary_account_number\": \"0099888876\",\n            \"beneficiary_kyc_level\": \"\",\n            \"originator_account_name\": \"\",\n            \"originator_account_number\": \"0055666543\",\n            \"originator_kyc_level\": \"\",\n            \"narration\": \"A random transaction\",\n            \"transaction_final_amount\": 1000,\n            \"reference\": \"E9093F855F01461298E89CD043CEDB3C\",\n            \"payment_id\": \"136FTTP200620003\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"a21933a5-01fe-46a2-8a22-03986f2e92ae","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"transfer_funds\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 1000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": {\n            \"destination_account\": \"1020295620\",\n            \"destination_bank_code\": \"076\",\n            \"otp_override\": true\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Request Processing In Progress\",\n    \"data\": {\n        \"provider_response_code\": \"09\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"request_reference\": \"0DAA55EF071B42B4A845590D22D8F4B4\",\n            \"payment_id\": \"US1022200318145652402129465340\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"881cbc39-dcd8-4ed9-8366-774871cc0996"},{"name":"Collect - DCIR","event":[{"listen":"test","script":{"id":"e09749b2-48b8-4b51-880f-f64b96ac5a16","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"0e933407-8e33-4e51-a264-8028d51157f9","exec":[""],"type":"text/javascript"}}],"id":"68495965-6823-494c-9acd-6ef2aa9ff1e8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{encrypted_source_card}}\",\n        \"auth_provider\": \"FidelityCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Collect - Test card transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"2348023431322\"\n        },\n        \"meta\": {\n            \"card_trxn_stan\": \"555434\",\n            \"card_trxn_surcharge\": 0,\n            \"card_trxn_unpredictable_number\": \"4BD95AE7\",\n            \"card_trxn_dedicated_filename\": \"A0000000041010\",\n            \"card_trxn_currency_code\": \"566\",\n            \"card_trxn_language_info\": \"en-GB\",\n            \"card_trxn_terminal_location\": \"Ikeja, Lagos\",\n            \"card_trxn_terminal_id\": \"2076NA61\",\n            \"card_trxn_terminal_type\": \"22\",\n            \"card_trxn_terminal_pos_condition_code\": \"00\",\n            \"card_trxn_terminal_pos_data_code\": \"511201513344002\",\n            \"card_trxn_terminal_pos_entry_mode\": \"011\",\n            \"card_trxn_terminal_pos_geo_code\": \"6.55746,3.38785\",\n            \"card_trxn_terminal_verification_result\": \"80008000\",\n            \"card_trxn_terminal_country_code\": \"566\",\n            \"card_trxn_terminal_capabilities\": \"E0F0C8\",\n            \"card_trxn_terminal_battery_info\": \"100\",\n            \"card_trxn_terminal_printer_status\": \"1\",\n            \"card_trxn_merchant_id\": \"MYMERCHANTID\",\n            \"card_trxn_merchant_location\": \"Ikeja, Lagos\",\n            \"card_trxn_ksn\": \"000002DDDDE00003\",\n            \"card_trxn_ksnd\": \"605\",\n            \"card_trxn_key_label\": \"000002\",\n            \"card_trxn_pin_type\": \"Dukpt\",\n            \"card_trxn_card_sequence_number\": \"001\",\n            \"card_trxn_aip\": \"5800\",\n            \"card_trxn_atc\": \"01FC\",\n            \"card_trxn_cryptogram\": \"86022BF56A40B2F5\",\n            \"card_trxn_cryptogram_info_data\": \"80\",\n            \"card_trxn_cvm_results\": \"440302\",\n            \"card_trxn_chip_condition_code\": \"0\",\n            \"card_trxn_iad\": \"0110A74003020000000000000000000000FF\",\n            \"card_trxn_transaction_date\": \"220624\",\n            \"card_trxn_transaction_type\": \"00\",\n            \"card_trxn_amount_authorized\": \"000000000100\",\n            \"card_trxn_amount_other\": \"000000000000\",\n            \"card_trxn_track2\": \"5199110791234567D2312221000764555\"\n        },\n        \"details\": null\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling app can request or initiate payment from a customer. Provide a customer’s bank card, PayGatePlus forwards to selected provider, provider debits the linked account and credits beneficiary account tied to the app.</p>\n<p><strong>NOTE</strong>: Amount to be processed should be in <code>kobo</code> without decimal places.</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>Note that this specification covers for both Card-Present and Card-Not-Present transactions. The differentiating factor for both types of transactions is based on the construction of values in the <code>auth.secure</code> field.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>Failed</strong>: Failure</li>\n<li><strong>Processing</strong>: If a transaction request is still in a processing state and needs to be subsequently queried.</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<p>The <code>meta</code> object in this Collect specification largely carries details of the card transaction. Here's an explanation of each element:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Data Type</th>\n<th>Description</th>\n<th><strong>Compulsory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>card_trxn_stan</td>\n<td>Numeric (6)</td>\n<td>Field 11. Typically assigned by a merchant or acquirer. Dynamic value unique per terminal within a revolving window e.g. daily.  <br />  <br />Sample value: 000002</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_surcharge</td>\n<td>Numeric (8)</td>\n<td>Field 28. Fee in naira if applicable.  <br />  <br />Sample value: 0</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_currency_code</td>\n<td>Numeric (3)</td>\n<td>Field 49. The account currency code.  <br />  <br />Sample value: 566</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_id</td>\n<td>Alphanumeric (8)</td>\n<td>Field 41. Identifier for the merchant terminal.  <br />  <br />Sample value: 2076NA61</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_type</td>\n<td>Alphanumeric (2)</td>\n<td>ISO 8583 terminal type designation. See terminal types in the appendix.  <br />  <br />Sample value: 22</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_pos_condition_code</td>\n<td>Numeric (2)</td>\n<td>Field 25. A code that describes the condition under which the transaction takes place at the  <br />Point-Of-Service.  <br />  <br />00 Normal presentment  <br />01 Customer not present  <br />02 Unattended terminal - card can be retained  <br />03 Merchant suspicious  <br />04 Electronic Cash Register interface  <br />05 Customer present, card not present  <br />06 Pre-authorized request  <br />07 Telephone device required  <br />08 Mail/telephone order  <br />09 POS security alert  <br />  <br />Sample value: 00</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_pos_data_code</td>\n<td>Numeric (15)</td>\n<td>Field 123. The field is used to identify terminal capability, terminal environment and presentation security data. It is used to indicate specific conditions that were present at the time a transaction took place at the Point-of-Service. This field consists of the following sub-fields:  <br />LLLVAR an15  <br />  <br />Sample value: 510101511344101</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_pos_entry_mode</td>\n<td>Numeric (3)</td>\n<td>Field 22. A series of codes that identify the actual method used to capture the account number  <br />and expiry date when a terminal is used, and the PIN capture capability of the terminal.  <br />  <br />Sample value: 011</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_pos_geo_code</td>\n<td>Numeric(3)</td>\n<td>Field 40. An identification of geographic/service availability.  <br />  <br />Sample value: 6.55746,3.38785</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_verification_result</td>\n<td>Hex(10)</td>\n<td>EMV Request. EMV TAG 95  <br />  <br />Sample value: 80008000</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_terminal_country_code</td>\n<td>Numeric (3)</td>\n<td>Country code.  <br />  <br />Sample value: 566</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_capabilities</td>\n<td>Hex(6)</td>\n<td>Terminal Capabilities. EMV Discretional. EMV TAG 9F33  <br />  <br />Sample value: E0F0C8</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_merchant_id</td>\n<td>Alphanumeric (8)</td>\n<td>Field 42. A code identifying the card acceptor (typically a merchant).  <br />  <br />Sample value: MYMERCHANTID</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_merchant_location</td>\n<td>Alphanumeric (40)</td>\n<td>Field 43. The name and location of the card acceptor (such as a merchant or an ATM). This is a  <br />fixed length field consisting of 4 data elements:  <br />  <br /> The location information (positions 1 - 23), exclusive of city, state and country  <br /> The city (positions 24 - 36) in which the Point-of-Service is located  <br /> The state (positions 37 - 38) in which the Point-of-Service is located  <br /> The country (positions 39 - 40) in which the Point-of-Service is located  <br />  <br />Sample value: Ikeja, Lagos</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_card_sequence_number</td>\n<td>Numeric(3)</td>\n<td>Field 23. A number distinguishing between separate cards with the same primary account number or primary account number extended. Only required if the card sequence number is read/known as in the case of an EMV transaction.  <br />  <br />Sample value: 001</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_acquiring_institution_id</td>\n<td>Numeric(..11)</td>\n<td>Field 32. An identifier for the acquirer.  <br />  <br />Sample value: 519911</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_forwarding_institution_id</td>\n<td>Numeric(..11)</td>\n<td>Field 34 . An identifier for the destination institution.  <br />  <br />Sample value: 519911</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_unpredictable_number</td>\n<td>Hex(4)</td>\n<td>Unpredictable Number  <br />  <br />Sample value: 4BD95AE7</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_dedicated_filename</td>\n<td>Alphanumeric (14)</td>\n<td>Dedicated Filename  <br />  <br />Sample value: A0000000041010</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_language_info</td>\n<td>Alphanumeric (2)</td>\n<td>Language Info  <br />  <br />Sample value: EN</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_location</td>\n<td>Alphanumeric (20)</td>\n<td>Terminal Location  <br />  <br />Sample value: Ikeja, Lagos</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_battery_info</td>\n<td>Numeric (3)</td>\n<td>Battery Information  <br />  <br />Sample value: 100</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_terminal_printer_status</td>\n<td>Numeric (1)</td>\n<td>Printer Status  <br />  <br />Sample value: 1</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_ksn</td>\n<td>Hex (8)</td>\n<td>KSN. Key serial number  <br />  <br />Sample value: 000002DDDDE00003</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_ksnd</td>\n<td>Alphanumeric (3)</td>\n<td>KSND  <br />  <br />Sample value: 605</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_key_label</td>\n<td>Alphanumeric (6)</td>\n<td>Key Label  <br />  <br />Sample value: 000002</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_pin_type</td>\n<td>Alphanumeric (10)</td>\n<td>PinType  <br />  <br />Sample value: Dukpt</td>\n<td></td>\n</tr>\n<tr>\n<td>card_trxn_aip</td>\n<td>Numeric (4)</td>\n<td>Application Interchange Profile  <br />  <br />Sample value: 5800</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_atc</td>\n<td>Hex (4)</td>\n<td>atc. Application Transaction Counter  <br />  <br />Sample value: 01FC</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_cryptogram</td>\n<td>Hex (16)</td>\n<td>Cryptogram  <br />  <br />Sample value: 86022BF56A40B2F5</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_cryptogram_info_data</td>\n<td>Numeric (2)</td>\n<td>Cryptogram Information Data  <br />  <br />Sample value: 80</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_cvm_results</td>\n<td>Hex (6)</td>\n<td>Cvm Results  <br />  <br />Sample value: 440302</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_iad</td>\n<td>Hex (...32)</td>\n<td>iad. Issuer Application Data.  <br />  <br />Sample value: 0110A74003020000000000000000000000FF</td>\n<td>CP</td>\n</tr>\n<tr>\n<td>card_trxn_track2</td>\n<td>Alphanumeric (19)</td>\n<td>Track2 Data  <br />  <br />Sample value: 5199110791234567D2312221000764555</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"provider-response-code\">Provider Response Code</h4>\n<p>The following 2-character response codes may be returned by the API in the <code>provider_response_code</code> field.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>00</td>\n<td>Approved or completed successfully</td>\n</tr>\n<tr>\n<td>01</td>\n<td>Refer to card issuer</td>\n</tr>\n<tr>\n<td>02</td>\n<td>Refer to card issuer, special condition</td>\n</tr>\n<tr>\n<td>03</td>\n<td>Invalid merchant</td>\n</tr>\n<tr>\n<td>04</td>\n<td>Pick-up card</td>\n</tr>\n<tr>\n<td>05</td>\n<td>Do not honor</td>\n</tr>\n<tr>\n<td>06</td>\n<td>Error</td>\n</tr>\n<tr>\n<td>07</td>\n<td>Pick-up card, special condition</td>\n</tr>\n<tr>\n<td>08</td>\n<td>Honor with identification</td>\n</tr>\n<tr>\n<td>09</td>\n<td>Request in progress</td>\n</tr>\n<tr>\n<td>10</td>\n<td>Approved, partial</td>\n</tr>\n<tr>\n<td>11</td>\n<td>Approved, VIP</td>\n</tr>\n<tr>\n<td>12</td>\n<td>Invalid transaction</td>\n</tr>\n<tr>\n<td>13</td>\n<td>Invalid amount</td>\n</tr>\n<tr>\n<td>14</td>\n<td>Invalid card number</td>\n</tr>\n<tr>\n<td>15</td>\n<td>No such issuer</td>\n</tr>\n<tr>\n<td>16</td>\n<td>Approved, update track 3</td>\n</tr>\n<tr>\n<td>17</td>\n<td>Customer cancellation</td>\n</tr>\n<tr>\n<td>18</td>\n<td>Customer dispute</td>\n</tr>\n<tr>\n<td>19</td>\n<td>Re-enter transaction</td>\n</tr>\n<tr>\n<td>20</td>\n<td>Invalid response</td>\n</tr>\n<tr>\n<td>21</td>\n<td>No action taken</td>\n</tr>\n<tr>\n<td>22</td>\n<td>Suspected malfunction</td>\n</tr>\n<tr>\n<td>23</td>\n<td>Unacceptable transaction fee</td>\n</tr>\n<tr>\n<td>24</td>\n<td>File update not supported</td>\n</tr>\n<tr>\n<td>25</td>\n<td>Unable to locate record</td>\n</tr>\n<tr>\n<td>26</td>\n<td>Duplicate record</td>\n</tr>\n<tr>\n<td>27</td>\n<td>File update edit error</td>\n</tr>\n<tr>\n<td>28</td>\n<td>File update file locked</td>\n</tr>\n<tr>\n<td>29</td>\n<td>File update failed</td>\n</tr>\n<tr>\n<td>30</td>\n<td>Format error</td>\n</tr>\n<tr>\n<td>31</td>\n<td>Bank not supported</td>\n</tr>\n<tr>\n<td>32</td>\n<td>Completed partially</td>\n</tr>\n<tr>\n<td>33</td>\n<td>Expired card, pick-up</td>\n</tr>\n<tr>\n<td>34</td>\n<td>Suspected fraud, pick-up</td>\n</tr>\n<tr>\n<td>35</td>\n<td>Contact acquirer, pick-up</td>\n</tr>\n<tr>\n<td>36</td>\n<td>Restricted card, pick-up</td>\n</tr>\n<tr>\n<td>37</td>\n<td>Call acquirer security, pick-up</td>\n</tr>\n<tr>\n<td>38</td>\n<td>PIN tries exceeded, pick-up</td>\n</tr>\n<tr>\n<td>39</td>\n<td>No credit account</td>\n</tr>\n<tr>\n<td>40</td>\n<td>Function not supported</td>\n</tr>\n<tr>\n<td>41</td>\n<td>Lost card</td>\n</tr>\n<tr>\n<td>42</td>\n<td>No universal account</td>\n</tr>\n<tr>\n<td>43</td>\n<td>Stolen card</td>\n</tr>\n<tr>\n<td>44</td>\n<td>No investment account</td>\n</tr>\n<tr>\n<td>45</td>\n<td>Account closed</td>\n</tr>\n<tr>\n<td>46</td>\n<td>Identification required</td>\n</tr>\n<tr>\n<td>47</td>\n<td>Identification cross-check required</td>\n</tr>\n<tr>\n<td>48</td>\n<td>No customer record</td>\n</tr>\n<tr>\n<td>51</td>\n<td>Not sufficient funds</td>\n</tr>\n<tr>\n<td>52</td>\n<td>No check account</td>\n</tr>\n<tr>\n<td>53</td>\n<td>No savings account</td>\n</tr>\n<tr>\n<td>54</td>\n<td>Expired card</td>\n</tr>\n<tr>\n<td>55</td>\n<td>Incorrect PIN</td>\n</tr>\n<tr>\n<td>56</td>\n<td>No card record</td>\n</tr>\n<tr>\n<td>57</td>\n<td>Transaction not permitted to cardholder</td>\n</tr>\n<tr>\n<td>58</td>\n<td>Transaction not permitted on terminal</td>\n</tr>\n<tr>\n<td>59</td>\n<td>Suspected fraud</td>\n</tr>\n<tr>\n<td>60</td>\n<td>Contact acquirer</td>\n</tr>\n<tr>\n<td>61</td>\n<td>Exceeds withdrawal limit</td>\n</tr>\n<tr>\n<td>62</td>\n<td>Restricted card</td>\n</tr>\n<tr>\n<td>63</td>\n<td>Security violation</td>\n</tr>\n<tr>\n<td>64</td>\n<td>Original amount incorrect</td>\n</tr>\n<tr>\n<td>65</td>\n<td>Exceeds withdrawal frequency</td>\n</tr>\n<tr>\n<td>66</td>\n<td>Call acquirer security</td>\n</tr>\n<tr>\n<td>67</td>\n<td>Hard capture</td>\n</tr>\n<tr>\n<td>68</td>\n<td>Financial Institution Unavailable</td>\n</tr>\n<tr>\n<td>69</td>\n<td>Advice received too late</td>\n</tr>\n<tr>\n<td>75</td>\n<td>PIN tries exceeded</td>\n</tr>\n<tr>\n<td>77</td>\n<td>Intervene, bank approval required</td>\n</tr>\n<tr>\n<td>78</td>\n<td>Intervene, bank approval required for partial amount</td>\n</tr>\n<tr>\n<td>90</td>\n<td>Cut-off in progress</td>\n</tr>\n<tr>\n<td>91</td>\n<td>Timeout – Status Unknown</td>\n</tr>\n<tr>\n<td>92</td>\n<td>Routing error</td>\n</tr>\n<tr>\n<td>93</td>\n<td>Violation of law</td>\n</tr>\n<tr>\n<td>94</td>\n<td>Duplicate transaction</td>\n</tr>\n<tr>\n<td>95</td>\n<td>Reconcile error</td>\n</tr>\n<tr>\n<td>96</td>\n<td>System malfunction</td>\n</tr>\n<tr>\n<td>98</td>\n<td>Exceeds cash limit</td>\n</tr>\n<tr>\n<td>XX</td>\n<td>Other undefined response reason in alphanumeric format</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"2e1c6eda-cb0e-4f8b-bc19-3978abf3b907","name":"Successful (Card Present)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{encrypted_source_card}}\",\n        \"auth_provider\": \"FidelityCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Collect - Test card transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"2348023431322\"\n        },\n        \"meta\": {\n            \"card_trxn_stan\": \"555434\",\n            \"card_trxn_surcharge\": 0,\n            \"card_trxn_unpredictable_number\": \"4BD95AE7\",\n            \"card_trxn_dedicated_filename\": \"A0000000041010\",\n            \"card_trxn_currency_code\": \"566\",\n            \"card_trxn_language_info\": \"en-GB\",\n            \"card_trxn_terminal_location\": \"Ikeja, Lagos\",\n            \"card_trxn_terminal_id\": \"2076NA61\",\n            \"card_trxn_terminal_type\": \"22\",\n            \"card_trxn_terminal_pos_condition_code\": \"00\",\n            \"card_trxn_terminal_pos_data_code\": \"511201513344002\",\n            \"card_trxn_terminal_pos_entry_mode\": \"011\",\n            \"card_trxn_terminal_pos_geo_code\": \"6.55746,3.38785\",\n            \"card_trxn_terminal_verification_result\": \"80008000\",\n            \"card_trxn_terminal_country_code\": \"566\",\n            \"card_trxn_terminal_capabilities\": \"E0F0C8\",\n            \"card_trxn_terminal_battery_info\": \"100\",\n            \"card_trxn_terminal_printer_status\": \"1\",\n            \"card_trxn_merchant_id\": \"MYMERCHANTID\",\n            \"card_trxn_merchant_location\": \"Ikeja, Lagos\",\n            \"card_trxn_ksn\": \"000002DDDDE00003\",\n            \"card_trxn_ksnd\": \"605\",\n            \"card_trxn_key_label\": \"000002\",\n            \"card_trxn_pin_type\": \"Dukpt\",\n            \"card_trxn_card_sequence_number\": \"001\",\n            \"card_trxn_aip\": \"5800\",\n            \"card_trxn_atc\": \"01FC\",\n            \"card_trxn_cryptogram\": \"86022BF56A40B2F5\",\n            \"card_trxn_cryptogram_info_data\": \"80\",\n            \"card_trxn_cvm_results\": \"440302\",\n            \"card_trxn_chip_condition_code\": \"0\",\n            \"card_trxn_iad\": \"0110A74003020000000000000000000000FF\",\n            \"card_trxn_transaction_date\": \"220624\",\n            \"card_trxn_transaction_type\": \"00\",\n            \"card_trxn_amount_authorized\": \"000000000100\",\n            \"card_trxn_amount_other\": \"000000000000\",\n            \"card_trxn_track2\": \"5199110791234567D2312221000764555\"\n        },\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Approved or completed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"FidelityCardService\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"provider_auth_token\": null,\n            \"paymentoptions\": [],\n            \"transaction_final_amount\": 10000,\n            \"reference\": \"46073082994722636\",\n            \"meta\": {}\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"b9b2b486-089f-4efb-a88f-1aeb6179dc96","name":"Successful (Card Not Present)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{encrypted_source_card}}\",\n        \"auth_provider\": \"FidelityCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Collect - Test card transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"2348023431322\"\n        },\n        \"meta\": {\n            \"card_trxn_stan\": \"330635\",\n            \"card_trxn_surcharge\": \"0\",\n            \"card_trxn_terminal_id\": \"2076NA61\",\n            \"card_trxn_terminal_pos_condition_code\": \"00\",\n            \"card_trxn_currency_code\": \"566\",\n            \"card_trxn_terminal_pos_data_code\": \"510101511344101\",\n            \"card_trxn_terminal_pos_entry_mode\": \"011\",\n            \"card_trxn_merchant_id\": \"07610000000PI91\",\n            \"card_trxn_merchant_location\": \"************************************LGNG\",\n            \"card_trxn_card_sequence_number\": \"001\",\n            \"card_trxn_terminal_geo_code\": null,\n            \"card_trxn_terminal_capabilities\": null,\n            \"card_trxn_terminal_verification_result\": null,\n            \"card_trxn_language_info\": null,\n            \"card_trxn_terminal_location\": null,\n            \"card_trxn_terminal_type\": null,\n            \"card_trxn_dedicated_filename\": null,\n            \"card_trxn_unpredicatable_number\": null,\n            \"card_trxn_terminal_printer_status\": null,\n            \"card_trxn_terminal_battery_info\": null,\n            \"card_trxn_terminal_country_code\": null,\n            \"card_trxn_ksn\": null,\n            \"card_trxn_ksnd\": null,\n            \"card_trxn_key_label\": null,\n            \"card_trxn_pin_type\": null,\n            \"card_trxn_aip\": null,\n            \"card_trxn_atc\": null,\n            \"card_trxn_cryptogram\": null,\n            \"card_trxn_cryptogram_info_data\": null,\n            \"card_trxn_cvm_results\": null,\n            \"card_trxn_iad\": null,\n            \"card_trxn_track2\": null\n        },\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Approved or completed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"FidelityCardService\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"provider_auth_token\": null,\n            \"paymentoptions\": [],\n            \"transaction_final_amount\": 10000,\n            \"reference\": \"46073082994722636\",\n            \"meta\": {}\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"b3195e8e-ac66-4f92-a9a9-5e68df0ebd02","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{encrypted_source_card}}\",\n        \"auth_provider\": \"FidelityCardService\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Collect - Test card transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"2348023431322\"\n        },\n        \"meta\": {\n            \"card_trxn_stan\": \"555434\",\n            \"card_trxn_surcharge\": 0,\n            \"card_trxn_unpredictable_number\": \"4BD95AE7\",\n            \"card_trxn_dedicated_filename\": \"A0000000041010\",\n            \"card_trxn_currency_code\": \"566\",\n            \"card_trxn_language_info\": \"en-GB\",\n            \"card_trxn_terminal_location\": \"Ikeja, Lagos\",\n            \"card_trxn_terminal_id\": \"2076NA61\",\n            \"card_trxn_terminal_type\": \"22\",\n            \"card_trxn_terminal_pos_condition_code\": \"00\",\n            \"card_trxn_terminal_pos_data_code\": \"511201513344002\",\n            \"card_trxn_terminal_pos_entry_mode\": \"011\",\n            \"card_trxn_terminal_pos_geo_code\": \"6.55746,3.38785\",\n            \"card_trxn_terminal_verification_result\": \"80008000\",\n            \"card_trxn_terminal_country_code\": \"566\",\n            \"card_trxn_terminal_capabilities\": \"E0F0C8\",\n            \"card_trxn_terminal_battery_info\": \"100\",\n            \"card_trxn_terminal_printer_status\": \"1\",\n            \"card_trxn_merchant_id\": \"MYMERCHANTID\",\n            \"card_trxn_merchant_location\": \"Ikeja, Lagos\",\n            \"card_trxn_ksn\": \"000002DDDDE00003\",\n            \"card_trxn_ksnd\": \"605\",\n            \"card_trxn_key_label\": \"000002\",\n            \"card_trxn_pin_type\": \"Dukpt\",\n            \"card_trxn_card_sequence_number\": \"001\",\n            \"card_trxn_aip\": \"5800\",\n            \"card_trxn_atc\": \"01FC\",\n            \"card_trxn_cryptogram\": \"86022BF56A40B2F5\",\n            \"card_trxn_cryptogram_info_data\": \"80\",\n            \"card_trxn_cvm_results\": \"440302\",\n            \"card_trxn_chip_condition_code\": \"0\",\n            \"card_trxn_iad\": \"0110A74003020000000000000000000000FF\",\n            \"card_trxn_transaction_date\": \"220624\",\n            \"card_trxn_transaction_type\": \"00\",\n            \"card_trxn_amount_authorized\": \"000000000100\",\n            \"card_trxn_amount_other\": \"000000000000\",\n            \"card_trxn_track2\": \"5199110791234567D2312221000764555\"\n        },\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Not sufficient funds\",\n    \"data\": {\n        \"options\": null,\n        \"provider_response_code\": \"51\",\n        \"provider\": \"FidelityCardService\",\n        \"errors\": [\n            {\n                \"code\": \"51\",\n                \"message\": \"Not sufficient funds\"\n            }\n        ],\n        \"error\": {\n            \"code\": \"51\",\n            \"message\": \"Not sufficient funds\"\n        },\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"68495965-6823-494c-9acd-6ef2aa9ff1e8"},{"name":"Collect - BioMandate","event":[{"listen":"test","script":{"id":"f9da3641-eebb-4e93-b0b0-e115afab8fab","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"83395107-f37c-496e-8fb4-607164a2db67","exec":[""],"type":"text/javascript"}}],"id":"48a7d77f-f80f-4947-bf2e-5e2542df4fb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": null\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling app can request or initiate payment from a customer. Provide a customer’s Fidelity bank account number, PayGatePlus forwards to selected Fidelity BioMandate provider, provider debits the linked account and credits beneficiary account tied to the app. This underlying provider does a BioMandate authorisation challenge on the customer, allowing the customer to create a BioMandate PIN to be used for subsequent transactions.</p>\n<p><strong>NOTE</strong>: Amount to be processed should be in <code>kobo</code> with decimal places.</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>PendingValidation</strong>: Requires BioMandate PIN, use <code>/v2/transact/validate</code> as <a href=\"#f1bdb553-68dd-4016-aeed-e4c3d1e27fe4\">follow up</a> call to complete transaction</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<h4 id=\"important-notice\">Important Notice</h4>\n<ul>\n<li>Special consideration needs to be placed on the <code>enrollment_url</code> field within the <code>meta</code> object, in the response payload for <code>PendingValidation</code></li>\n<li>If customer does not have a BioMandate PIN, the <code>enrollment_url</code> field would always contain a url string. Merchant needs to redirect customer to this url, for customer to go complete the BioMandate capture.</li>\n<li>If customer already has a BioMandate PIN, the <code>enrollment_url</code> field would have a <code>null</code> value.</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"73af3779-965e-4a56-977d-b3f631658da3","name":"Collect (PendingValidation)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"BioMandate\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {},\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"PendingValidation\",\n    \"message\": \"Create your BioMandate PIN via the SMS sent!\",\n    \"data\": {\n        \"provider_response_code\": \"900TO\",\n        \"provider\": \"BioMandate\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"2879521\",\n            \"transaction_final_amount\": \"10000\",\n            \"meta\": {\n                \"enrollment_url\": \"https://biomandate.paygateplus.ng/enrol\"\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"49f76c7b-da79-4387-b8f1-f89dcddce6a9","name":"Collect (Successful)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"BioMandate\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {},\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Request completed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"BioMandate\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"reference\": \"5338080\",\n            \"transaction_final_amount\": \"10000\",\n            \"provider_auth_token\": null,\n            \"paymentoptions\": [],\n            \"meta\": {}\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"0e514723-ec18-4d80-8f9f-9e0ed3de2fb4","name":"Collect (Failed)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_source_account_number}}\",\n        \"auth_provider\": \"BioMandate\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Inspect\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 10000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {},\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 18 Mar 2020 14:09:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"559"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Invalid response received from provider\",\n    \"data\": {\n        \"options\": null,\n        \"provider_response_code\": null,\n        \"provider\": \"Fidelity\",\n        \"errors\": [\n            {\n                \"code\": \"04\",\n                \"message\": \"invalid data\"\n            }\n        ],\n        \"error\": {\n            \"code\": \"04\",\n            \"message\": \"invalid data\"\n        },\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"48a7d77f-f80f-4947-bf2e-5e2542df4fb1"}],"id":"d7696129-5cf1-48ad-bb37-9a6fef800fe7","_postman_id":"d7696129-5cf1-48ad-bb37-9a6fef800fe7","description":""}],"id":"c8dd405c-2e64-4533-951c-cc2fd53a7225","_postman_id":"c8dd405c-2e64-4533-951c-cc2fd53a7225","description":""},{"name":"Enquiry","item":[{"name":"Get balance","event":[{"listen":"test","script":{"id":"ebe1cf7c-55c3-4b8c-85ed-e5c401853b0a","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"aa1f88de-92f2-439c-add4-20856191403f","exec":[""],"type":"text/javascript"}}],"id":"a20c5b2f-af58-4662-8100-6f442799dea5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"get_balance\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": null\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can get available balance for a given source.</p>\n<p><strong>NOTE</strong>: Amount in response is in <code>kobo</code>.</p>\n<p>Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WaitingForOTP</strong>: Requires OTP, use <code>/v2/transact/validate</code> as <a href=\"#b5c98f51-8e3e-4cb3-aa32-8a130d4bd014\">follow up</a> call to complete transaction</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"da2c82ce-b900-4e2a-8899-fafa976176ff","name":"Get balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"get_balance\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_id}}\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"account_number\": \"1780161243\",\n            \"available_balance\": 347272,\n            \"ledger_balance\": 347272,\n            \"minimum_balance\": 0,\n            \"account_class\": \"STFCUR\",\n            \"account_status\": \"ACCOUNT OPEN\",\n            \"currency\": \"NGN\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"a20c5b2f-af58-4662-8100-6f442799dea5"},{"name":"Get Statement","id":"5785c731-4081-4266-a73e-a8e976fb18ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\", \r\n  \"request_type\":\"get_statement\",\r\n  \"auth\": {\r\n    \"type\": \"bank.account\", \r\n    \"secure\": \"{{auth.bank.account}}\",\r\n    \"auth_provider\": \"Demoprovider\",\r\n    \"route_mode\": null\r\n  },\r\n  \"transaction\": {\r\n    \"mock_mode\": \"inspect\", \r\n    \"transaction_ref\": \"{{transaction-ref}}\", \r\n    \"transaction_desc\": \"A random transaction\", \r\n    \"transaction_ref_parent\": null, \r\n    \"amount\": 0,\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer_id}}\",\r\n    \t\"firstname\": \"Uju\",\r\n        \"surname\": \"Usmanu\",\r\n    \t\"email\": \"ujuusmanu@gmail.com\",\r\n    \t\"mobile_no\": \"234802343132\"\r\n    },\r\n    \"meta\":{\r\n    \t\"virtual_account\":\"1234567890\"\r\n    },\r\n    \"details\": {\r\n        \"start_date\": \"2019-06-01\",\r\n        \"end_date\": \"2019-06-01\"\r\n    }\r\n  }\r\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<h1 id=\"service-description\">Service description</h1>\n<p>With this service, the calling apps can get statements of accounts. Apps will collect the customer reference (account number, or any unique reference) they will like to obtain information on and forward to PaygatePlus. If authorisation details are required by a provider, apps will have to provide this. PaygatePlus will in turn forward to the provider’s dedicated implementation.</p>\n<p>Here's the call sequence specific to this service...</p>\n<ol>\n<li>Call <code>/transact</code> with the right auth details if required. See <a href=\"#encryption-of-secure-element\">here</a></li>\n<li>Provider responds with <code>WaitingForOTP</code> or <code>PendingValidation</code> if they require OTP verification</li>\n<li>Call <code>/transact/validate</code> to supply OTP if needed</li>\n<li>Provider responds with any of the completion codes <code>Successful</code> or <code>Failed</code>.</li>\n<li>To query the status of a transaction, call <code>/transact/query</code></li>\n</ol>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the response</li>\n<li>Read the <code>provider_response</code> Object</li>\n</ul>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WaitingForOTP</strong>: Display the <code>status.message</code> and collect the input from the user, then follow with a <code>/transact/validate</code></li>\n<li><strong>PendingValidation</strong>: Display the <code>status.message</code> and collect the input from the user, then follow with a <code>/transact/validate</code></li>\n<li><strong>Processing</strong>: Pulling the statement is taking a little longer than expected but is probably still executing in the background. Typically, the provider will send the final result via your webhook [see here (#60695d18-6d30-468f-ae5f-edee46d8c017)]</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<h4 id=\"request-body-elements\">Request body elements</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Requirement</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference for this API call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>string</td>\n<td>compulsory</td>\n<td>Set to <code>get_statement</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>string</td>\n<td>optional</td>\n<td>Depends on what the provider requires to get a statement. Most times, will be <code>bank.account</code>.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>string</td>\n<td>optional</td>\n<td>If a type is set, then encrypt the value here.</td>\n</tr>\n<tr>\n<td>auth.auth_provider</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The Provider against which you want to open the account. e.g. <code>GTBank</code></td>\n</tr>\n<tr>\n<td>auth.route_mode</td>\n<td>string</td>\n<td>optional</td>\n<td>Set to <code>null</code></td>\n</tr>\n<tr>\n<td>transaction.mock_mode</td>\n<td>string</td>\n<td>compulsory</td>\n<td>Set to <code>inspect</code> (for test mode) or <code>live</code> (for live mode)</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference for the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction.desc</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A short description or narration</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>string</td>\n<td>optional</td>\n<td>Can be set to <code>null</code>. But if you are repeating an prior transaction, you can set it to the <code>transaction_ref</code> of the former transaction to create a link for easy tracking.</td>\n</tr>\n<tr>\n<td>amount</td>\n<td>int</td>\n<td>compulsory</td>\n<td>Set to <code>0</code></td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>string</td>\n<td>compulsory</td>\n<td>A unique reference to identify this customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The firstname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The email of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.start_date</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The start date of the date range for which the statement is required. (yyyy-MM-dd)</td>\n</tr>\n<tr>\n<td>transaction.details.end_date</td>\n<td>string</td>\n<td>compulsory</td>\n<td>The end date of the date range for which the statement is required. (yyyy-MM-dd)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-body-elements\">Response body elements</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>Standard response. <strong>Successful</strong> or anything else. If the response is <code>WaitingForOTP</code> or <code>PendingValidation</code>, then display the <code>response.message</code>, collect the input from the user and follow with a <code>/transact/validate</code> API call. See here.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>A message or description of the response</td>\n</tr>\n<tr>\n<td>data.provider</td>\n<td>The provider that was used to process the request</td>\n</tr>\n<tr>\n<td>data.provider_response_code</td>\n<td>Response code as determined by the underlying provider</td>\n</tr>\n<tr>\n<td>data.provider_response.reference</td>\n<td>A reference from the provider for reconciliation purposes</td>\n</tr>\n<tr>\n<td>data.provider_response.closing_balance</td>\n<td>The closing balance at the end of the date range</td>\n</tr>\n<tr>\n<td>data.provider_response.opening_balance</td>\n<td>The opening balance at the beginning of the date range</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[]</td>\n<td>An array containing a list of transactions.</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].transaction_reference</td>\n<td>A reference for the transaction in the list</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].transaction_amount</td>\n<td>Transaction amount</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].balance</td>\n<td>Balance at the end of the transaction</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].transaction_type</td>\n<td><code>C</code> for credit. <code>D</code> for debit.</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].transaction_date</td>\n<td>Timestamp of the transaction in yyyy-MM-dd:hh-mm-ss</td>\n</tr>\n<tr>\n<td>data.provider_response.statement_list[].description</td>\n<td>A narration for the specific transaction in the list</td>\n</tr>\n<tr>\n<td>data.provider_response.meta</td>\n<td>A custom object that can hold any extra information the provider deems necessary in key vs value pairs.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"list-of-providers\">List of providers</h4>\n<p>For a list of providers that have published and implemented this service, please see</p>\n<p><a href=\"https://onepipe.io/explore/v2?service=open_account\">here</a></p>\n<h4 id=\"common-questions\">Common questions</h4>\n<p><strong>Question</strong>: Why do I need to specify <code>transaction.amount</code>when it's irrelevant here?</p>\n<p><strong>Answer</strong>: OnePipe APIs all try to follow a common standard such that all services require the same exact payload. It's the values within the payload that will then vary, service by service. In this case, just set it to <code>0</code>.</p>\n<p><strong>Question</strong>: What is the <code>meta</code> object in the request and response?</p>\n<p><strong>Answer</strong>: Some providers at times require or return special fields not covered by the standard. If you know what some of these fields and their values are you can set them in the request <code>meta</code> object and read them from the response <code>meta</code> object. Typically though, <code>null</code> is perfectly fine in most cases.</p>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"15d7798f-b0a9-4dee-8c0b-94e9bfb88643","name":"Get Statement - Successful","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\", \r\n  \"request_type\":\"get_statement\",\r\n  \"auth\": {\r\n    \"type\": \"bank.account\", \r\n    \"secure\": \"{{encrypted_secure}}\",\r\n    \"auth_provider\": \"FidelityVirtual\",\r\n    \"route_mode\": null\r\n  },\r\n  \"transaction\": {\r\n    \"mock_mode\": \"live\", \r\n    \"transaction_ref\": \"{{transaction-ref}}\", \r\n    \"transaction_desc\": \"A random transaction\", \r\n    \"transaction_ref_parent\": null, \r\n    \"amount\": 0,\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer_id}}\",\r\n    \t\"firstname\": \"Uju\",\r\n        \"surname\": \"Usmanu\",\r\n    \t\"email\": \"ujuusmanu@gmail.com\",\r\n    \t\"mobile_no\": \"234802343132\"\r\n    },\r\n    \"meta\":{\r\n    \t\"virtual_account\":\"1234567890\"\r\n    },\r\n    \"details\": {\r\n        \"start_date\": \"2019-06-01\",\r\n        \"end_date\": \"2019-06-01\",\r\n        \"otp_override\": true\r\n    }\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 15 May 2020 15:45:14 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx/1.17.8"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"closing_balance\": 1056109,\n            \"opening_balance\": 186279,\n            \"statement_list\": [\n                {\n                    \"transaction_reference\": \"788FTIB20045GJU\",\n                    \"transaction_amount\": 3000563,\n                    \"balance\": 1056109,\n                    \"transaction_type\": \"D\",\n                    \"transaction_date\": \"2020-02-14T00:00:00\",\n                    \"description\": \"MOB.BNKG:011/MUSA TOLULOPE/TRANSFER 30000 FROM 1780***243 TO 1077***364:000008200214190749669842598346\"\n                },\n                {\n                    \"transaction_reference\": \"382FTTP20045000J\",\n                    \"transaction_amount\": 3000,\n                    \"balance\": 4056672,\n                    \"transaction_type\": \"C\",\n                    \"transaction_date\": \"2020-02-14T00:00:00\",\n                    \"description\": \"MB: trans: Trf from CHIJIOKE JULIET JOHN to JOHN DOE JANE\"\n                },\n                {\n                    \"transaction_reference\": \"136n15a200450084\",\n                    \"transaction_amount\": 400,\n                    \"balance\": 3756672,\n                    \"transaction_type\": \"D\",\n                    \"transaction_date\": \"2020-02-14T00:00:00\",\n                    \"description\": \"SMS SERVICE UNCHARGED APPLIED JAN 2020-1780161243\"\n                }\n            ],\n            \"reference\": \"0000318222333334432\",\n            \"meta\": {\n                \"field_key\": \"field_value\"\n            }\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"8112bb1b-fa87-4582-b1db-9b099a3a740b","name":"Get Statement - WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\", \r\n  \"request_type\":\"get_statement\",\r\n  \"auth\": {\r\n    \"type\": \"bank.account\", \r\n    \"secure\": \"{{encrypted_secure}}\",\r\n    \"auth_provider\": \"FidelityVirtual\",\r\n    \"route_mode\": null\r\n  },\r\n  \"transaction\": {\r\n    \"mock_mode\": \"live\", \r\n    \"transaction_ref\": \"{{transaction-ref}}\", \r\n    \"transaction_desc\": \"A random transaction\", \r\n    \"transaction_ref_parent\": null, \r\n    \"amount\": 0,\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer_id}}\",\r\n    \t\"firstname\": \"Uju\",\r\n        \"surname\": \"Usmanu\",\r\n    \t\"email\": \"ujuusmanu@gmail.com\",\r\n    \t\"mobile_no\": \"234802343132\"\r\n    },\r\n    \"meta\":{\r\n    \t\"a_key\":\"a_meta_value_1\",\r\n    \t\"another_key\":\"a_meta_value_2\"\r\n    },\r\n    \"details\": {\r\n        \"start_date\": \"2019-06-01\",\r\n        \"end_date\": \"2019-06-01\"\r\n    }\r\n  }\r\n}"},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 15 May 2020 15:43:09 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx/1.17.8"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"WaitingForOTP\",\n    \"message\": \"Please enter the OTP sent to 2348022****08\",\n    \"data\": {\n        \"provider_response_code\": \"900T0\",\n        \"provider\": \"FidelityVirtual\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"},{"id":"0351dc0b-d5b8-4c09-b8b5-10a5d0c4b74a","name":"Get Statement - Failed","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"F5CB3C9028B8CAE185B6B892DEFE0995"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\", \r\n  \"request_type\":\"get_statement\",\r\n  \"auth\": {\r\n    \"type\": \"bank.account\", \r\n    \"secure\": \"{{auth.bank.account}}\",\r\n    \"auth_provider\": \"FidelityVirtual\",\r\n    \"route_mode\": null\r\n  },\r\n  \"transaction\": {\r\n    \"mock_mode\": \"live\", \r\n    \"transaction_ref\": \"{{transaction-ref}}\", \r\n    \"transaction_desc\": \"A random transaction\", \r\n    \"transaction_ref_parent\": null, \r\n    \"amount\": 0,\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer_id}}\",\r\n    \t\"firstname\": \"Uju\",\r\n        \"surname\": \"Usmanu\",\r\n    \t\"email\": \"ujuusmanu@gmail.com\",\r\n    \t\"mobile_no\": \"234802343132\"\r\n    },\r\n    \"meta\":{\r\n    \t\"a_key\":\"a_meta_value_1\",\r\n    \t\"another_key\":\"a_meta_value_2\"\r\n    },\r\n    \"details\": {\r\n        \"start_date\": \"2019-06-01\",\r\n        \"end_date\": \"2019-06-01\"\r\n    }\r\n  }\r\n}"},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 01 Jul 2020 23:12:54 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"581"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"Invalid request mode\",\n    \"data\": {\n        \"options\": null,\n        \"provider_response_code\": null,\n        \"provider\": null,\n        \"errors\": [\n            {\n                \"code\": \"01\",\n                \"message\": \"You are not yet enabled for go-live\"\n            }\n        ],\n        \"error\": {\n            \"code\": \"01\",\n            \"message\": \"You are not yet enabled for go-live\"\n        },\n        \"provider_response\": null,\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"5785c731-4081-4266-a73e-a8e976fb18ba"},{"name":"Lookup Account Min","event":[{"listen":"test","script":{"id":"af83a1ca-f5a6-47df-9ccf-3b086b0c3d64","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"5c18a353-2e3a-4979-b5f8-5b7c6f6836a6","exec":[""],"type":"text/javascript"}}],"id":"a24d63de-ef12-4c76-9be7-fb6edc6f0797","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"lookup_account_min\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"234802343132\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": null\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact","description":"<p>With this service, the calling apps can KYC a customer's account number. This service will only return minimal KYC information.</p>\n<p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a>.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WaitingForOTP</strong>: Requires OTP, use <code>/v2/transact/validate</code> as <a href=\"#f1bdb553-68dd-4016-aeed-e4c3d1e27fe4\">follow up</a> call to complete transaction</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"63b1044a-44a0-4d52-b029-7ed1f0ce293c","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"lookup_account_min\",\n    \"auth\": {\n        \"type\": \"bank.account\",\n        \"secure\": \"{{encrypted_account_number}}\",\n        \"auth_provider\": \"Fidelity\",\n        \"route_mode\": null\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"A random transaction\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"234802343132\",\n            \"firstname\": \"Uju\",\n            \"surname\": \"Usmanu\",\n            \"email\": \"ujuusmanu@gmail.com\",\n            \"mobile_no\": \"234802343132\"\n        },\n        \"meta\": {\n            \"a_key\": \"a_meta_value_1\",\n            \"b_key\": \"a_meta_value_2\"\n        },\n        \"details\": null\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 17 Mar 2020 19:51:51 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"677"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"customer_id\": \"0099933343\",\n            \"account_name\": \"JOHN JANE DOE\",\n            \"account_number\": \"1780161243\",\n            \"first_name\": \"JOHN \",\n            \"middle_name\": \"JANE\",\n            \"last_name\": \"DOE\",\n            \"gender\": \"Male\",\n            \"account_currency\": \"NGN\",\n            \"dob\": \"2003-04-18-00-00-00\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"a24d63de-ef12-4c76-9be7-fb6edc6f0797"}],"id":"ece89757-4574-4182-a729-813e9cf0389f","event":[{"listen":"prerequest","script":{"id":"3bd5e238-52e2-4563-ade3-a697636598ed","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"3fe412fe-8f8f-4d07-9d10-401c9ec24142","type":"text/javascript","exec":[""]}}],"_postman_id":"ece89757-4574-4182-a729-813e9cf0389f","description":""},{"name":"Utll","item":[{"name":"Validate Transaction","event":[{"listen":"test","script":{"id":"e78edaf2-92e3-4b5c-9507-583685a0531e","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// example using pm.response.to.be*","pm.test(\"response must be valid and have a body\", function () {","     // assert that the status code is 200","     pm.response.to.be.ok; // info, success, redirection, clientError,  serverError, are other variants","     // assert that the response has a valid JSON body","     pm.response.to.be.withBody;","     pm.response.to.be.json; // this assertion also checks if a body  exists, so the above check is not needed","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Successful\");","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"WaitingForOTP\");","});"],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"53ec5afc-4c03-4ef1-a2e8-1de987b20042","exec":["//import the MD5 hashing function","eval(pm.globals.get(\"md5\"));","","//Autogenerate request-ref and transaction-ref","var min = 10000000000000;","var max = 99999999999999;","var transRef = (Math.random() * (max - min) + min).round().toString();","var reqRef = transRef + '01';","pm.environment.set(\"request-ref\", reqRef);","pm.environment.set(\"transaction-ref\", transRef);","pm.environment.set(\"signature\", MD5(reqRef + ';'+ pm.environment.get(\"secret-key\")));","pm.globals.set(\"gl_transRef\", transRef);"],"type":"text/javascript"}}],"id":"b5c98f51-8e3e-4cb3-aa32-8a130d4bd014","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"collect\",\n    \"auth\": {\n        \"secure\": \"boif0gxwkZu3XYOwAD/MkA==\",\n        \"auth_provider\": \"Fidelity\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"67507990331863\"\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact/validate","description":"<p>Use this endpoint as a follow-up call for OTP validation. Specify the transaction ref of the transaction to be validated in the <code>transaction.transaction_ref</code> field.</p>\n<p>Replace the value <code>request_type</code> with the corresponding service name.</p>\n<p>The OTP must be encrypted with the Triple DES encryption algorithm and should be placed in the <code>auth.secure</code> field.</p>\n<p>For information on how to encrypt <code>auth.secure</code> value, see <a href=\"#encryption-of-secure-element\">here</a>.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact","validate"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"04d68a02-49c5-4883-805a-81710c0035ad","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" MD5Hash(request-ref;client-secret)","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request-ref\":\"000000003601\",//unique reference for this call\n  \"request-type\":\"airtime\",//set the value of 'type' to this\n  \"auth\": {\n    \"type\": \"card\",//set auth.type to this \n    \"secure\": \"{{auth.secure}}\"//encrypted card details\n  },\n  \"transaction\": {\n    \"amount\": \"13600\",//amount in kobo\n    \"transaction-ref\": \"0000000036\",//a unique ref for this transaction\n    \"transaction-desc\": \"Payment for services\",//a description\n    \"transaction-ref-parent\": \"\",//if this is a reattempt of an old trxn, put the ref of the old one here\n    \"customer\":{\n    \t\"customer-ref\": \"2348022221412\",//the mobile number to top up\n    \t\"firstname\": \"Okwe\",\n  \t\t\"surname\": \"Adye\",\n    \t\"email\": \"ope99oye@gmail.com\",\n    \t\"mobile-no\": \"2348099921412\"//the mobile number to top up\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Failed\",\n    \"message\": \"There was an error processing your transaction\",\n    \"data\": {\n        \"provider-responde-code\": \"91\",\n        \"provider\": \"Fidelity\",\n        \"errors\": [\n\t\t\t{\n\t\t\t\t\"code\": \"70013\",\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"70013\",\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\n\t\t\t}\n\t\t],\n\t\t\"error\": {\n\t\t\t\"code\": \"70013\",\n\t\t\t\"message\": \"70013 - R:Details of the primary error.\"\n\t\t},\n        \"charge-token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"da388ee5-02fa-4492-8fe3-f591ed87c49d","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{apiKey}}","type":"text"},{"key":"Signature","value":"{{MD5Hash(request-ref;client-secret)}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request-ref\":\"000000003601\",\n  \"request-type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{auth.secure}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13600\",\n    \"transaction-ref\": \"0000000036\",\n    \"transaction-desc\": \"Payment for services\",\n    \"transaction-ref-parent\": \"\",\n    \"customer\":{\n    \t\"customer-ref\": \"2348029921412\",\n    \t\"firstname\": \"Okwe\",\n  \t\t\"surname\": \"Adye\",\n    \t\"email\": \"ope99oye@gmail.com\",\n    \t\"mobile-no\": \"2348099921412\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v1/payments/basic"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"The transaction has been processed successully\",\n    \"data\": {\n    \t\"provider-responde-code\":\"00\",\n    \t\"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge-token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"8746193c-d507-4ac6-9aae-a8669fa5d652","name":"WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" MD5Hash(request-ref;client-secret)","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request-ref\":\"000000003601\",\n  \"request-type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{auth.secure}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13600\",\n    \"transaction-ref\": \"0000000036\",\n    \"transaction-desc\": \"Payment for services\",\n    \"transaction-ref-parent\": \"\",\n    \"customer\":{\n    \t\"customer-ref\": \"2348022221412\",\n    \t\"firstname\": \"Okwe\",\n  \t\t\"surname\": \"Adye\",\n    \t\"email\": \"ope99oye@gmail.com\",\n    \t\"mobile-no\": \"2348099921412\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"WaitingForOTP\",\n    \"message\": \"Please enter the OTP that was sent to 234****1234.\",\n    \"data\": {\n    \t\"provider-responde-code\":\"T0\",\n    \t\"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge-token\": null,\n        \"paymentoptions\": []\n    }\n}"}],"_postman_id":"b5c98f51-8e3e-4cb3-aa32-8a130d4bd014"},{"name":"Query Transaction","event":[{"listen":"test","script":{"id":"f3814448-5505-4415-9cca-f73bc784270d","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// example using pm.response.to.be*","pm.test(\"response must be valid and have a body\", function () {","     // assert that the status code is 200","     pm.response.to.be.ok; // info, success, redirection, clientError,  serverError, are other variants","     // assert that the response has a valid JSON body","     pm.response.to.be.withBody;","     pm.response.to.be.json; // this assertion also checks if a body  exists, so the above check is not needed","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Successful\");","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"WaitingForOTP\");","});"],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"12d02a31-232d-4815-80d1-e260f9638803","exec":["//import the MD5 hashing function","eval(pm.globals.get(\"md5\"));","","//Autogenerate request-ref and transaction-ref","var min = 10000000000000;","var max = 99999999999999;","var transRef = (Math.random() * (max - min) + min).round().toString();","var reqRef = transRef + '01';","pm.environment.set(\"request-ref\", reqRef);","pm.environment.set(\"transaction-ref\", transRef);","pm.environment.set(\"signature\", MD5(reqRef + ';'+ pm.environment.get(\"secret-key\")));","pm.globals.set(\"gl_transRef\", transRef);"],"type":"text/javascript"}}],"id":"87b0198d-a620-4556-8c84-a6002320197e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" F5CB3C9028B8CAE185B6B892DEFE0995"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"disburse\",\n    \"auth\": {\n        \"secure\": null,\n        \"auth_provider\": \"Fidelity\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}"},"url":"https://api.paygateplus.ng/v2/transact/query","description":"<p>Use this endpoint for querying transactions. Specify the transaction ref of the transaction to be queried in the <code>transaction.transaction_ref</code> field.</p>\n<p>Specify the service name in the <code>request_type</code> field.</p>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n","urlObject":{"path":["v2","transact","query"],"host":["https://api.paygateplus.ng"],"query":[],"variable":[]}},"response":[{"id":"1bf08389-3454-4a58-a4ef-55e5c132ccf3","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{apiKey}}","type":"text"},{"key":"Signature","value":"{{MD5Hash(request-ref;client-secret)}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"disburse\",\n    \"auth\": {\n        \"secure\": null,\n        \"auth_provider\": \"Fidelity\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.paygateplus.ng/v2/transact/query"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Transaction processed successfully\",\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"Fidelity\",\n        \"errors\": null,\n        \"error\": null,\n        \"provider_response\": {\n            \"destination_institution_code\": \"076\",\n            \"beneficiary_account_name\": \"JAMES BLUE\",\n            \"beneficiary_account_number\": \"0099880099\",\n            \"beneficiary_kyc_level\": \"\",\n            \"originator_account_name\": \"\",\n            \"originator_account_number\": \"1100009909\",\n            \"originator_kyc_level\": \"\",\n            \"narration\": \"A random transaction\",\n            \"transaction_final_amount\": 1000,\n            \"reference\": \"C3DA541CA20740659031949CD3441EBE\",\n            \"payment_id\": \"382FTTP2005901LD\"\n        },\n        \"client_info\": {\n            \"name\": null,\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": null,\n            \"logo_url\": null,\n            \"footer_text\": null,\n            \"show_options_icon\": false,\n            \"paginate\": false,\n            \"paginate_count\": 0,\n            \"options\": null,\n            \"merchant\": null,\n            \"colors\": null,\n            \"meta\": null\n        }\n    }\n}"}],"_postman_id":"87b0198d-a620-4556-8c84-a6002320197e"}],"id":"d3ba89f5-bedd-4a5d-b6d2-12d399dbbc62","_postman_id":"d3ba89f5-bedd-4a5d-b6d2-12d399dbbc62","description":""},{"name":"BEDC","item":[],"id":"ea21f258-f920-4876-bc9c-988261014c9a","_postman_id":"ea21f258-f920-4876-bc9c-988261014c9a","description":""}],"event":[{"listen":"prerequest","script":{"id":"02da251b-c7f5-4183-98ec-f217df5ca703","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"05385919-e602-4022-8682-b2cccfbdd4dd","type":"text/javascript","exec":[""]}}],"variable":[{"key":"url","value":"https://api.paygateplus.ng","type":"string"},{"key":"api_key","value":"93qb3RbJgRfZDb9BcmzG_cbcc214131d646b7adb7206f8589a878","type":"string"},{"key":"random-id","value":"{{reference}}","type":"string"},{"key":"signature","value":"F5CB3C9028B8CAE185B6B892DEFE0995","type":"string"}]}