{"info":{"_postman_id":"992bd16e-84dc-4ef6-8cad-7ab6bea23bba","name":"OnePipe v1 - Documentation","description":"<html><head></head><body><p>This suite of APIs provides access to an array of payment-related services like card charging, airtime, bill payment, instant loans and KYC lookup services. Some of these services come from multiple providers like Interswitch, Flutterwave and Paystack, but OnePipe wraps around them an abstraction layer with one major goal: To provide a  consistent interface to integrators regardless of underlying service provider. That way, you can switch between providers at any time, based on quality of service, business justification, etc. without starting a new integration project or changing your systems in any way.</p>\n<h1 id=\"want-to-try-it-quickly\">Want to try it quickly?</h1>\n<p>Fast try</p>\n<ol>\n<li>Click the <em>run in postman</em> button to import the collection.</li>\n<li>Base url: <code>https://409a9dcf-73e5-41bb-aa2e-ba6c286173a3.mock.pstmn.io</code></li>\n<li>Try the various endpoints against the mock server</li>\n</ol>\n<p>Actual transactions</p>\n<ol>\n<li>Send an email to integration @ onepipe.io</li>\n<li>We would contact you with a neatly prepped postman collection and instructions to follow</li>\n<li>Then grant you temporary access to a public sandbox</li>\n</ol>\n<h1 id=\"the-principles-behind-onepipe\">The principles behind OnePipe</h1>\n<ol>\n<li>Ability to add multiple providers for the same service</li>\n<li>A standard unified API interface encapsulating all feature set available across providers</li>\n<li>Ability to setup as many apps as possible and determine which provider should fulfill the service for each app. </li>\n<li>Planned: Rules based provider selection.</li>\n</ol>\n<p><img src=\"http://www.onepipe.io/docs/principles.jpg\" alt=\"The general principles behind OnePipe\"></p>\n<h1 id=\"index-of-services-providers\">Index of services &amp; providers</h1>\n<p>Here's the list of services versus providers available at the moment. It's a list that will grow with time as we complete more integrations.</p>\n<h2 id=\"charge\">Charge</h2>\n<p>Provide card details, OnePipe forwards to selected provider, provider debits the linked account. The underlying provider may prompt for OTP, therefore you’d supply the OTP via a follow-on call. If a charge is successful, you’d get back a charge-token with which you can initiate future transactions without providing card details afresh. Providers are:</p>\n<ol>\n<li>Paystack</li>\n<li>Rave by Flutterwave</li>\n<li>Quickteller</li>\n</ol>\n<h2 id=\"airtime\">Airtime</h2>\n<p>Provide card details, mobile number and network. OnePipe forwards to selected provider, provider debits the linked account and credits the attached number with airtime. The underlying provider may prompt for OTP, therefore you’d supply the OTP via a follow-on call. If a transaction is successful, you’d get back a charge-token with which you can initiate future transactions without providing card details afresh. Providers are:</p>\n<ol>\n<li>Quickteller</li>\n</ol>\n<h2 id=\"bill-payment\">Bill payment</h2>\n<p>Provide card details, customer id and a biller code. OnePipe forwards to selected provider, provider debits the linked account and makes the payment to the biller code provided. The underlying provider may prompt for OTP, therefore you’d supply the OTP via a follow-on call. If a transaction is successful, you’d get back a charge-token with which you can initiate future transactions without providing card details afresh. Providers are:</p>\n<ol>\n<li>Quickteller</li>\n</ol>\n<h2 id=\"micro-loan-request-instant\">Micro-loan request (instant)</h2>\n<p>After verifying a customer’s mobile number, provide same number and OnePipe will forward to underlying provider to evaluate what loan amounts (short term, instant loans) can be extended to the user. Customer selects one of the offers and you can forward back to the provider via OnePipe for the provider to credit the account. Usually instantly. Providers are:</p>\n<ol>\n<li>Interswitch Lending Services</li>\n</ol>\n<h2 id=\"estimated-risk-score-for-loans\">Estimated risk score for loans</h2>\n<p>After verifying a customer’s mobile number, provide same number and OnePipe will forward to underlying provider to evaluate what loan amounts (short term, instant loans) can be extended to the user as well as the estimated attendant risk. Providers are:</p>\n<ol>\n<li>SecondScore</li>\n</ol>\n<h2 id=\"linked-cards--accounts-lookup\">Linked cards &amp; accounts lookup</h2>\n<p>After verifying a customer’s mobile number, provide same number and OnePipe will forward to underlying provider to get a list of cards and accounts known with the customer on that provider’s platforms. Providers are:</p>\n<ol>\n<li>Interswitch Lending Services</li>\n</ol>\n<h2 id=\"linked-account-lookup\">Linked account lookup</h2>\n<p>Provide a customer’s card details and OnPipe will forward to the underlying provider to obtain the account number linked to it. Providers are:</p>\n<ol>\n<li>Quickteller</li>\n</ol>\n<h2 id=\"account-information\">Account information</h2>\n<p>Provide a customer’s bank account number and OnPipe will forward to the underlying provider to obtain metadata like name, etc. Providers are:</p>\n<ol>\n<li>Quickteller</li>\n</ol>\n<h1 id=\"getting-access-to-the-apis\">Getting access to the APIs</h1>\n<p>Access to the APIs can only be via any of the OnePipe partners. Banks, gateways and payment service providers. Once granted access under their account, you will receive an invite email to set your password.</p>\n<ol>\n<li>Set up your password</li>\n<li>Login with newly set password</li>\n<li>Generate your <strong>API key</strong> and <strong>secret</strong></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 root url currently sits at:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://api.onepipe.io\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><em><strong>Sample Authorization Header:</strong></em></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {api_key}\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</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 {{api_key}}\nSignature:{{MD5Hash(request_ref;client_secret)}}\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\":\"charge | airtime | bill-payment | transfer\",\n      \"auth\": {\n        \"type\": \"card | account | token | override\", \n        \"secure\": \"YKBOxtdD8kZHqG7JO0C9TZ\"\n      },\n      \"transaction\": {\n        \"amount\": \"10000\",\n        \"transaction_ref\": \"000001\",\n        \"transaction_desc\": \"Payment for services\",\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      }\n    }\n</code></pre>\n<p>|<em>Field</em>|<em>Type</em>|<em>Requirement</em>|<em>Description</em>|\n|request_ref|string|compulsory|Takes unique value for every request made to OnePipe|\n|request_type|string|compulsory|This should be set to the servicetransfer_funds|\n|auth.type|string|compulsory|Depending on the source of fund. This can be set to either bank.account, card, token orwallet|\n|auth.secure|string|compulsory|This is the encrypted value of the source of fund. Depending on the auth type, this can be either bank account, card details, token or wallet details. See [details|<a href=\"https://onepipe.atlassian.net/wiki/spaces/KB/pages/201555991/Encryption+in+OnePipe%5D\">https://onepipe.atlassian.net/wiki/spaces/KB/pages/201555991/Encryption+in+OnePipe]</a> on how to encrypt the secure field.|\n|auth.provider|string|compulsory|This should be set to the name of the Provider|\n|auth.route_mode|string|N/A|This can be set tonull|\n|transaction.mock_mode|string|optional|This can be set to either live or inspect. If left as null, value will fall back to the state of the service set on the console.|\n|transaction.transaction_desc|string|optional|Description of your transaction|\n|transaction.transaction_ref_parent|string|optional|Takes value of a (parent) transaction reference|\n|transaction.customer.customer_ref|string|compulsory|Identifier for customer|\n|transaction.customer.firstname|string|optional|First name of customer|\n|transaction.customer.surname|string|optional|Surname of customer|\n|transaction.customer.email|string|optional|Email address of customer|\n|transaction.customer.mobile_no|string|optional|Phone number of customer|\n|transaction.amount|big int|compulsory|This is the amount (kobo) to be transferred|\n|transaction.transaction_ref|string|compulsory|Takes unique value for every transaction call to OnePipe.|\n|transaction.meta|object|optional|Json object of your arbitrary transaction parameters|\n|transaction.details|object|varies per transaction type|JSON object of transaction type specific elements|</p>\n<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\": \"RAVE\",\n            \"errors\": [],\n            \"error\": null,\n            \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n            \"paymentoptions\": []\n        }\n    }\n</code></pre>\n<ul>\n<li><strong>status</strong>: Indicates the state of the request, whether successful, failed or anything in between</li>\n<li><strong>message</strong>: Provides a text description of the state of the request and at times a message for the customer</li>\n<li><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</li>\n<li><strong>provider_response_code</strong>: The actual response code receieved from the underlyig provider, e.g. <code>00</code> for Quickteller</li>\n<li><strong>provider</strong>: The provider that was used to process the request</li>\n<li><strong>errors</strong>: In case of a failed transaction, this contains the lists of errors that occurred while processing the transaction</li>\n<li><strong>error</strong>: This contain the most important error that hinders the successful completion of the transaction.\nWe 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.</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=\"onepipe-standard-status-codes\">OnePipe standard status codes</h1>\n<ul>\n<li><strong>Successful</strong>: For  all requests that were successfully processed</li>\n<li><strong>Failed</strong>: If a request fails. Read the errors object(s)</li>\n<li><strong>[Anything else]</strong>: This would vary per endpoint called. Applicable values would be in the documentation for that endpoint.</li>\n</ul>\n<h1 id=\"http-status-codes\">HTTP Status Codes</h1>\n<ul>\n<li><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</li>\n<li><strong>400</strong>: Data validation error occurred due to inconsistent data supplied by the client</li>\n<li><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.</li>\n<li><strong>500</strong>: An internal server error at our End, this should be reported if it persists.</li>\n</ul>\n<h1 id=\"encryption-of-secure-element\">Encryption of Secure element</h1>\n<p>For Custom Implementation of card or token Encryption, do use Triple DES Encryption Algorithm with your Client 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(\"{card.Pan};{card.Cvv};{card.Expdate};{card.Pin}\",secretKey)\n</code></pre><p><strong>NOTE</strong> Expiry date is MMyy</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\"));\n\nbyte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);\n\nfor (int j = 0, k = 16; j &lt; 8;) {\n    keyBytes[k++] = keyBytes[j++];\n}\n\nSecretKey secretKey = new SecretKeySpec(keyBytes, 0, 24, \"DESede\");\n\nIvParameterSpec iv = new IvParameterSpec(new byte[8]);\nCipher cipher = Cipher.getInstance(\"DESede/CBC/PKCS5Padding\");\n\ncipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);\n\nbyte[] plainTextBytes = toBeEncrypted.getBytes(\"UTF-16LE\");\nbyte[] cipherText = cipher.doFinal(plainTextBytes);\n\nString output = new String(Base64.encodeBase64(cipherText));\n\nreturn output;\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;\n\nbyte[] md5Bytes = md5.ComputeHash(Encoding.Unicode.GetBytes(key));\n\nbyte[] ivBytes = new byte[8];\n\n\ndes.Key = md5Bytes;\n\ndes.IV = ivBytes;\n\nbyte[] clearBytes = Encoding.Unicode.GetBytes(TextToEncrypt);\n\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}\n\nreturn encryptedText;\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    $source = mb_convert_encoding($encryption_key, 'UTF-16LE', 'UTF-8');\n\n    $key = md5($source, true);\n\n    $key .= substr($key, 0, 8);\n\n     // a 128 bit (16 byte) key\n     // append the first 8 bytes onto the end\n\n\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\n\n\n    $iv =  \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n    $encData = mcrypt_encrypt('tripledes', $key, $data, 'cbc',$iv);\n\n    echo base64_encode($encData);\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');\n\nfunction encrypt(sharedKey, plainText) {\n    const bufferedKey = Buffer.from(sharedKey, 'utf16le');\n\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\n    const cipher = crypto.createCipheriv('des-ede3-cbc', newKey, IV).setAutoPadding(true);\n    return cipher.update(plainText, 'utf8', 'base64') + cipher.final('base64');\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<h1 id=\"test-cards\">Test cards</h1>\n<ul>\n<li>Paystack - Test cards <a href=\"https://developers.paystack.co/docs/test-cards\">here</a></li>\n<li>Flutterwave - Test cards <a href=\"https://developer.flutterwave.com/docs/test-cards\">here</a></li>\n<li>Quickteller - Test cards <a href=\"https://sandbox.interswitchng.com/docbase/docs/interswitch-payment-gateway-mobile-inappsdk-implementation/test-cards/\">here</a>  =&gt;  Pan:5061040000000000306   Pin:1234   CVV:123  EXP:1901</li>\n</ul>\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":"Want to try it quickly?","slug":"want-to-try-it-quickly"},{"content":"The principles behind OnePipe","slug":"the-principles-behind-onepipe"},{"content":"Index of services & providers","slug":"index-of-services-providers"},{"content":"Getting access to the APIs","slug":"getting-access-to-the-apis"},{"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":"OnePipe standard status codes","slug":"onepipe-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"},{"content":"Test cards","slug":"test-cards"}],"owner":"6358444","collectionId":"992bd16e-84dc-4ef6-8cad-7ab6bea23bba","publishedId":"S11GRKVh","public":true,"customColor":{"top-bar":"1F3946","right-sidebar":"303030","highlight":"EF5B25"},"publishDate":"2019-07-04T12:23:06.000Z"},"item":[{"name":"Payments","item":[{"name":"OnePipe.js","item":[{"name":"Sample Page","id":"43341d23-06ce-4c45-8052-7c77d472cf3f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"<p>Here's a sample. </p>\n<p>You can use this as boilerplate for your own implementation.</p>\n<p>You can see it in action <a href=\"https://onepipe.io/boilerplate\">here</a>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-html\">\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;&lt;/title&gt;\n    &lt;meta charset=\"utf-8\" /&gt;\n    &lt;script src=\"https://js.onepipe.io/v1\"&gt;&lt;/script&gt;\n&lt;/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;This is a demo payment&lt;/h1&gt;\n    &lt;p&gt;Click the button to pay N10&lt;/p&gt;\n    &lt;button type=\"button\" onclick=\"OnePipePay()\"&gt;Click me!&lt;/button&gt;\n    &lt;script type=\"text/javascript\"&gt;\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: 'charge',\n                    api_key: '7d1IYiOKrm6BvEeMaTzc_bbbb45bf628b40919176ab26f74e5717',//API key from your console\n                    auth_provider: 'QTTransfer',\n                    transaction: {\n                        amount: 1000,\n                        currency: \"NGN\",\n                        transaction_ref: transRef,//generate a unique number\n                        transaction_desc: 'demo payment',\n                        customer: {\n                            customer_ref: '12345678800',//how you identify the customer\n                            firstname: 'Ope',\n                            surname: 'Adeoye',\n                            email: 'opeadeoye@gmail.com',\n                            mobile_no: '2348022454314'\n                        }\n                    },\n                    options:{\n                        close_popup: {\n                            card : \"onSuccess\"\n                        }\n                    }\n                },\n                callback: function (response) {\n                    \n                    //let's log the response\n                    console.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                    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\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    &lt;/script&gt;\n&lt;/body&gt;\n&lt;/html&gt;\n</code></pre>\n","urlObject":{"query":[],"variable":[]}},"response":[],"_postman_id":"43341d23-06ce-4c45-8052-7c77d472cf3f"}],"id":"62df2876-77c2-4d3b-bb5d-c245f13fccd9","description":"<p>If you find the REST APIs too complex, this mechanism is the fastest route to accepting payments on your website via OnePipe.</p>\n<p>The approach also lets you explicitly specify the provider you'd like to use to process your transaction. Supported providers include:</p>\n<ul>\n<li>Paystack</li>\n<li>Rave by Flutterway (RavePay)</li>\n<li>Quickteller</li>\n</ul>\n<p>See it in action <a href=\"https://demo.onepipe.io/product\">here</a> </p>\n<h4 id=\"steps-involved\">Steps involved</h4>\n<ul>\n<li>Include <code>&lt;script src=\"https://js.onepipe.io/v1/\"&gt;&lt;/script&gt;</code> in your page.</li>\n<li>Write a javascript function to process the payment. Let's call it <code>OnePipePay()</code>. The contents of this function will look like the below:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>function OnePipePay(){\n    var handler = OnePipePopup.setup({\n        requestData : {\n          request_ref: {{something unique &amp; numeric}},\n          request_type : 'charge',\n          api_key: '{{your API key}}',\n          auth_provider : {{PAYSTACK | RAVEPAY | QUICKTELLER}},\n          transaction: {\n              amount: {{amount in kobo}},\n              currency: \"NGN\",\n              transaction_ref: {{something unique &amp; numeric}},\n              transaction_desc: {{A description}},\n              customer:{\n                customer_ref: {{a customer ID if you have one}},\n                firstname: {{first name}},\n                surname: {{surname}},\n                email: {{email address}},\n                mobile_no: {{phone number in 234 format}} \n              }\n          },\n        },\n        callback: function(response){\n            //response.reference, response.status, response.message, response.paymentmethod\n            console.log(response);\n            alert('Transaction status: ' + response.status + '. Payment method: ' + response.paymentmethod + '. Ref: ' + response.reference + '. Message: ' + response.message);\n            },\n        onClose: function(){\n          alert('You cancelled the payment process');\n          }\n        });\n\n    handler.execute();\n  }\n</code></pre><ul>\n<li>For the applicable values of all the elements in <code>requestData</code>, please look at the <a href=\"#e3410174-c8bd-42ea-9c91-8c70a8a665df\">advanced endpoint</a></li>\n<li>Attach the function to your checkout button or form:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code> $(\"#frmCheckout\").on('submit', function(e){\n      e.preventDefault();\n      OnePipePay();\n  });\n</code></pre><ul>\n<li>This would trigger the payment dialog. </li>\n<li>Implement the <code>callback</code> function properly to process your order. The placeholder in the code block above (and extracted below) can serve as boilerplate:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>    callback: function(response){\n        console.log(response);//do something more meaningful\n        alert('Transaction status: ' + response.status + '. Payment method: ' + response.paymentmethod + '. Ref: ' + response.reference + '. Message: ' + response.message);\n    }\n</code></pre><ul>\n<li>On completion of the payment flow, your callback function will be triggered.</li>\n<li>Within your callback, read the value of <code>response.status</code> then make a call to the <a href=\"#3c082ddb-a51d-4df9-8fb7-dfb4865c3e32\">query endpoint</a> to validate the true status of the transaction</li>\n</ul>\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>Pending</strong></em>: Typically if the customer chose a payment method that can't be completed in real time. e.g. ATM.</td>\n</tr>\n<tr>\n<td>paymentmethod</td>\n<td>The payment screen supports card, ATM and Bank transfer at the moment. Possible values are: <br /><em><strong>Card</strong></em>: Use this <code>status</code> field to know what to do next. <br /><em><strong>QUICKTELLER.ATM</strong></em>: Mark the transaction as pending. Await validation &amp; notification before approving the transaction. <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><h4 id=\"worthy-of-note\">Worthy of note:</h4>\n<p>This component will be extended in future to suppport/wrap <em><strong>ALL</strong></em> API calls in OnePipe. There's a possiblity of breaking changes (which would be guarded against), but the documentation would be updated.</p>\n","event":[{"listen":"prerequest","script":{"id":"b2115f12-2b61-4fde-8170-6eab0b345dc8","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"025ef23b-1a79-40a0-bfb0-a81750c27e3b","type":"text/javascript","exec":[""]}}],"_postman_id":"62df2876-77c2-4d3b-bb5d-c245f13fccd9"},{"name":"Charge","item":[{"name":"Standard","event":[{"listen":"prerequest","script":{"id":"36874ac1-55e3-4e6f-b08e-6ce99e1aa6d4","exec":[""],"type":"text/javascript"}},{"listen":"test","script":{"id":"be337fe6-d33b-4b24-b9e2-1504580b3a9a","exec":[""],"type":"text/javascript"}}],"id":"c03fb298-ace3-49bb-bf7c-d54c91963f0e","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":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\", \n    \"auth_provider\": \"Paystack | RavePay | Quickteller\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}\n\n"},"url":"{{url}}/v1/payments/advanced/charge","description":"<p>With this you can debit a customer's card for a payment and obtain a token for future use if it works.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/advanced/charge</code></li>\n<li>Read the reponse<ul>\n<li>If the response says you need OTP, the response status would be <code>WaitingForOTP</code>. If so, prompt the user for OTP using the message field in the response you got</li>\n<li>Call <code>/v1/payments/otp</code></li>\n<li>Call <code>/v1/payments/query/[ref]</code> to check status</li>\n</ul>\n</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>: Requires OTP, call <code>/v1/payments/otp</code></li>\n<li><strong>PendingValidation</strong>: Requires extra information, prompt the user with the value in <code>response.message</code>, then call <code>/v1/payments/otp</code> with whatever they type in.</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<h4 id=\"full-list-of-supported-status-values\">Full list of supported status values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Successful</td>\n<td>Was processed successfully</td>\n</tr>\n<tr>\n<td>Failed</td>\n<td>A definite transaction failure. Read the error(s)</td>\n</tr>\n<tr>\n<td>PendingValidation</td>\n<td>Requires extra information, prompt the user with the value in <code>response.message</code>, then call <code>/v1/payments/otp</code> with whatever they type in</td>\n</tr>\n<tr>\n<td>Processing</td>\n<td>The attempt to debit never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>WaitingForOTP</td>\n<td>Still waiting for the OTP to be supplied. NOTE: If left too long, it's possible the OTP may have expired.</td>\n</tr>\n<tr>\n<td>ProcessingOTP</td>\n<td>The attempt to validate OTP never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>OfflineValidated</td>\n<td>An attempt to pay via an offline channel was initiated but hasn't been concluded.</td>\n</tr>\n<tr>\n<td>OfflineNotified</td>\n<td>The transaction has successfully been paid via an offline channel.</td>\n</tr>\n</tbody>\n</table>\n</div><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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Set this to determine the type of transaction that would be done. In this case '<code>charge</code>'.</td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Set this to determine if the encrypted authorization details supplied is a <code>card</code>, a <code>token</code>, an <code>account</code> or something else</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted authorization. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>auth.auth_provider</td>\n<td>Set the provider you would like to use in processing this transaction. Supported values are <code>Paystack</code>, <code>RavePay</code>, <code>Quickteller</code>. If this element is not provided, whatever you have configured on your console will be used.</td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>If this transaction is a retry of a former one, set this value to the transaction reference of the original</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems. Could be an account number or ID of sorts</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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>A response code for this request. See possible status values above.</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>data.provider_response_code</td>\n<td>The actual response code from the provider's API bubbled up to OnePipe</td>\n</tr>\n<tr>\n<td>data.provider</td>\n<td>The provider that was used to process request</td>\n</tr>\n<tr>\n<td>data.errors</td>\n<td>An array of error objects, in the event of an error</td>\n</tr>\n<tr>\n<td>data.error</td>\n<td>The single most important error object to bother about</td>\n</tr>\n<tr>\n<td>data.error.code</td>\n<td>The code for an error, as defined by the provider</td>\n</tr>\n<tr>\n<td>data.error.message</td>\n<td>The message or description of an error</td>\n</tr>\n<tr>\n<td>data.charge_token</td>\n<td>If the transaction was successful, you'd get a charge-token that can be used to initiate transactions in future without having to request authorization details again</td>\n</tr>\n<tr>\n<td>data.paymentoptions</td>\n<td>An array of possible alternative payment options if the transaction is not yet complete.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n<hr />\n","urlObject":{"path":["v1","payments","advanced","charge"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"45bf33d7-81a6-46a1-9620-7132739a7ef1","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":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\", \n    \"secure\": \"{{secure.card}}\" ,\n    \"auth_provider\": \"{{preffered.provider}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_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\": \"RAVEPAY\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"b9ae1e33-7ec5-4a18-b368-9b8bf0afeb2f","name":"WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api_key}}"},{"key":"Signature","type":"text","value":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\", \n    \"secure\": \"{{secure.card}}\" ,\n    \"auth_provider\": \"{{preffered.provider}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"RAVEPAY\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": []\n    }\n}"},{"id":"f9f642e7-aaee-43bc-97ff-70d81761e47f","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api_key}}"},{"key":"Signature","type":"text","value":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\", \n    \"secure\": \"{{secure.card}}\" ,\n    \"auth_provider\": \"{{preffered.provider}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"RAVEPAY\",\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}"}],"_postman_id":"c03fb298-ace3-49bb-bf7c-d54c91963f0e"}],"id":"1f706211-08bb-45f5-a161-8f91d40d22ab","_postman_id":"1f706211-08bb-45f5-a161-8f91d40d22ab","description":""},{"name":"Notifications","item":[{"name":"Transaction Notification","event":[{"listen":"test","script":{"id":"da0493d9-93a3-490f-addc-8427b48ce71c","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"a7c8b15d-45b0-42cd-87f5-9112817d8e7e","exec":[""],"type":"text/javascript"}}],"id":"29f56ab5-9623-45e2-b8af-2969834d1dc9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\": \"6399537450697101\",\r\n  \"request_type\": \"transaction_notification\",\r\n  \"requester\": \"{{Provider}}\",\r\n  \"mock_mode\": \"Live\",\r\n  \"details\": {\r\n    \"amount\": \"30000\",\r\n    \"transaction_type\": \"payment\",\r\n    \"provider\": \"{{Provider}}\",\r\n    \"transaction_ref\": \"BFIGHJBFGG\",\r\n    \"customer_ref\": \"23490660818\",\r\n    \"customer_email\": \"akin@onepipe.io\",\r\n    \"customer_firstname\": \"Akinkunmi\",\r\n    \"customer_surname\": \"Olunloye\",\r\n    \"customer_mobile_no\": \"2349066870818\",\r\n    \"data\": \"{{actual_data_from_provider}}\"\r\n  },\r\n  \"app_info\": {\r\n    \"app_code\": \"{{calling_app_code}}\"\r\n  }\r\n}"},"url":"","description":"<p>With this, you'd expose a webhook url, that will receive a <code>POST</code> message from OnePipe 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 OnePipe console.</p>\n<p><img src=\"http://www.onepipe.io/docs/webhook.png\" alt=\"Setting up your  webhook\" /></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>{{Provider Name}}</code> representing the provider or bank where this service occurred.</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>payment</code></td>\n</tr>\n<tr>\n<td>details.provider</td>\n<td>This will contain <code>{{Provider Name}}</code></td>\n</tr>\n<tr>\n<td>details.transaction_ref</td>\n<td>A unique reference for this specific transaction.</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems.</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>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 the raw data as received directly from the provider. The content will vary per provider and require you to understand the format of the data from each provider if you need the 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><p><strong>NOTE</strong>: You will also recieve <code>Signature</code> header with which you can authenticate that the call came from OnePipe. Please see information on how the <code>Signature</code> header is computed <a href=\"#authentication-headers\">here</a> </p>\n<hr />\n","urlObject":{"query":[],"variable":[]}},"response":[{"id":"2205e959-37d8-4223-9b2f-17b4b60e9e6b","name":"Transaction Notification - success","originalRequest":{"method":"POST","header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\r\n  \"request_ref\": \"6399537450697101\",\r\n  \"request_type\": \"transaction_notification\",\r\n  \"requester\": \"{{Provider}}\",\r\n  \"mock_mode\": \"Live\",\r\n  \"details\": {\r\n    \"amount\": \"30000\",\r\n    \"transaction_type\": \"payment\",\r\n    \"provider\": \"{{Provider}}\",\r\n    \"transaction_ref\": \"BFIGHJBFGG\",\r\n    \"customer_ref\": \"23490660818\",\r\n    \"customer_email\": \"akin@onepipe.io\",\r\n    \"customer_firstname\": \"Akinkunmi\",\r\n    \"customer_surname\": \"Olunloye\",\r\n    \"customer_mobile_no\": \"2349066870818\",\r\n    \"data\": \"{{actual_data_from_provider}}\"\r\n  },\r\n  \"app_info\": {\r\n    \"app_code\": \"1234567\"\r\n  }\r\n}"}],"_postman_id":"29f56ab5-9623-45e2-b8af-2969834d1dc9"},{"name":"Account Opening","event":[{"listen":"test","script":{"id":"da0493d9-93a3-490f-addc-8427b48ce71c","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"a7c8b15d-45b0-42cd-87f5-9112817d8e7e","exec":[""],"type":"text/javascript"}}],"id":"50c5254f-bc64-4989-9d9f-bc2189433434","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"request_ref\": \"{{request-ref}}\",\r\n    \"request_type\": \"account opening\",\r\n    \"auth\": {\r\n        \"auth_provider\": \"Gamma||Monnify\"\r\n    },\r\n    \"transaction\": {\r\n        \"mock_mode\": \"Live\",\r\n        \"transaction_ref\": \"{{transaction-ref}}\",\r\n        \"transaction_desc\": \"Account Opening transaction\",\r\n        \"transaction_ref_parent\": \"\",\r\n        \"amount\": 0,\r\n        \"customer\": {\r\n            \"customer_ref\": \"234908122410\",\r\n            \"firstname\": \"Akinkunmi\",\r\n            \"surname\": \"Olunloye\",\r\n            \"email\": \"roqak1@gmail.com\",\r\n            \"mobile_no\": \"2348052680773\"\r\n        },\r\n        \"meta\": {\r\n            \"expires_on\":\"2090-12-31\",\r\n            \"use_frequency\": \"3\",\r\n            \"max_amount\":\"1000\",\r\n            \"min_amount\":\"200\",\r\n            \"bvn\": \"22216834855\"\r\n        },\r\n        \"details\": {\r\n            \"name_on_account\": \"Akinkunmi Olunloye\"\r\n        }\r\n    }\r\n}"},"url":"{{url}}/v2/transact","description":"<p>With this call, customers can supply their name, phone number and BVN to open a bank account.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v2/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>data</code> object</li>\n<li><code>data.provider</code> is the provider that processed the account opening request</li>\n<li><code>data.provider_response</code> is the response object from the provider(Bank) that processed the account opening request</li>\n<li><code>data.provider_response.accountReference</code> is the account reference from the bank</li>\n<li><code>data.provider_response.accountName</code> is the name attached to the new account</li>\n<li><code>data.provider_response.currencyCode</code> is the Currency Code of the account</li>\n<li><code>data.provider_response.customerEmail</code> is the email attached to the new account</li>\n<li><code>data.provider_response.accountNumber</code> is the generated account number</li>\n<li><code>data.provider_response.bankName</code> is the name of the bank which the account was created</li>\n<li><code>data.provider_response.bankCode</code> is the CBN code of the new account created. You can see CBN Codes <a href=\"https://sandbox.interswitchng.com/docbase/docs/autogate-file-transfer/appendix/bank-cbn-codes/\">here</a>.</li>\n<li><code>data.provider_response.status</code> is the status of the account created either it's ACTIVE or INACTIVE.</li>\n<li><code>data.provider_response.createdOn</code> the day in which the account was created</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>Element</th>\n<th>Description</th>\n<th>Required?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request_ref</td>\n<td>A unique reference for this specific API call. Must be uniquely generated for every single call</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>account opening</code></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer, Also the mobile number to be attached to the account</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.details.name_on_account</td>\n<td>Name of the customer, this is to be attached to the account</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>transaction.meta.expires_on</td>\n<td>Account's expiry date</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.meta.use_frequency</td>\n<td>Number of times the account can be used</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.meta.max_amount</td>\n<td>Maximum amount the account can hold</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.meta.min_amount</td>\n<td>Minimum amount the account can hold</td>\n<td>No</td>\n</tr>\n<tr>\n<td>transaction.meta.bvn</td>\n<td>BVN to be attached to the account</td>\n<td>No</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 <strong>Failed</strong>.</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</td>\n<td>Details of the new Acoount</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v2","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"ec40dac8-850c-4aa3-ab1c-7ed761c0a4e2","name":"Account Opening - success","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":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"request_ref\": \"{{request-ref}}\",\r\n    \"request_type\": \"account opening\",\r\n    \"auth\": {\r\n        \"auth_provider\": \"Gamma||Monnify\"\r\n    },\r\n    \"transaction\": {\r\n        \"mock_mode\": \"Live\",\r\n        \"transaction_ref\": \"{{transaction-ref}}\",\r\n        \"transaction_desc\": \"Account Opening transaction\",\r\n        \"transaction_ref_parent\": \"\",\r\n        \"amount\": 0,\r\n        \"customer\": {\r\n            \"customer_ref\": \"234908122410\",\r\n            \"firstname\": \"Akinkunmi\",\r\n            \"surname\": \"Olunloye\",\r\n            \"email\": \"roqak1@gmail.com\",\r\n            \"mobile_no\": \"2348052680773\"\r\n        },\r\n        \"meta\": {\r\n            \"expires_on\":\"2090-12-31\",\r\n            \"use_frequency\": \"3\",\r\n            \"max_amount\":\"1000\",\r\n            \"min_amount\":\"200\",\r\n            \"bvn\": \"22216834855\"\r\n        },\r\n        \"details\": {\r\n            \"name_on_account\": \"Akinkunmi Olunloye\"\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"Successful\",\r\n    \"message\": \"Transaction processed successfully\",\r\n    \"data\": {\r\n        \"provider_response_code\": \"200\",\r\n        \"provider\": \"Gamma\",\r\n        \"errors\": null,\r\n        \"error\": null,\r\n        \"provider_response\": {\r\n            \"contractCode\": null,\r\n            \"accountReference\": \"20246618836451\",\r\n            \"accountName\": \"Akinkunmi Olunloye\",\r\n            \"currencyCode\": \"NGN\",\r\n            \"customerEmail\": \"roqak1@gmail.com\",\r\n            \"accountNumber\": \"4000003603\",\r\n            \"bankName\": null,\r\n            \"bankCode\": null,\r\n            \"collectionChannel\": null,\r\n            \"reservationReference\": null,\r\n            \"reservedAccountType\": null,\r\n            \"status\": \"ACTIVE\",\r\n            \"createdOn\": \"2020-03-24 19:24:40\",\r\n            \"incomeSplitConfig\": [],\r\n            \"restrictPaymentSource\": null\r\n        },\r\n        \"client_info\": {\r\n            \"name\": null,\r\n            \"id\": null,\r\n            \"bank_cbn_code\": null,\r\n            \"bank_name\": null,\r\n            \"console_url\": null,\r\n            \"js_background_image\": null,\r\n            \"css_url\": null,\r\n            \"logo_url\": null,\r\n            \"footer_text\": null,\r\n            \"show_options_icon\": false,\r\n            \"paginate\": false,\r\n            \"paginate_count\": 0,\r\n            \"options\": null,\r\n            \"merchant\": null,\r\n            \"colors\": null,\r\n            \"meta\": null\r\n        }\r\n    }\r\n}"}],"_postman_id":"50c5254f-bc64-4989-9d9f-bc2189433434"}],"id":"f1d60170-2767-47ee-961c-d0ca85e9825f","description":"<p>In these instances, app developers can expose a webhook such that when activities occur against your bank account, or an account that you have access to, you will be notified immediately. </p>\n<p>There is also the potential for app developers to call an endpoint to generate an account number that has the capabilities for such notifications already profiled. </p>\n<p>This is useful for a new wave of payment approaches that businesses are starting to explore:</p>\n<ol>\n<li>Open an account and map it to a customer or specific transaction</li>\n<li>Ask customers to transfer to that account</li>\n<li>Get notified once a credit or debit hits that account</li>\n<li>Process the service that the customer was supposed to pay for</li>\n<li>Monies are \"swept\" from that account into yours after a while.</li>\n</ol>\n","event":[{"listen":"prerequest","script":{"id":"1f4b6d02-685e-4e45-bd2a-beb38216f465","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"802fe0fc-4082-4496-8451-597ec46abcdf","type":"text/javascript","exec":[""]}}],"_postman_id":"f1d60170-2767-47ee-961c-d0ca85e9825f"},{"name":"Utils","item":[{"name":"Query Transaction","event":[{"listen":"test","script":{"id":"bdb0d4cf-f963-4d1b-913b-350e1db953b1","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"b738ee67-47fa-4f76-8318-44f856d0a6d7","exec":[""],"type":"text/javascript"}}],"id":"3c082ddb-a51d-4df9-8fb7-dfb4865c3e32","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"}],"url":"{{url}}/v1/payments/query/{{transaction-ref}}","description":"<p>For transactions that responded with success, it is <strong>strongly</strong> recommended that you follow up with this call to ascertain the true state.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/query/[ref]</code></li>\n</ul>\n<h4 id=\"possible-status-values\">Possible status values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Processing</td>\n<td>The attempt to debit never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>WaitingForOTP</td>\n<td>Still waiting for the OTP to be supplied. NOTE: If left too long, it's possible the OTP may have expired.</td>\n</tr>\n<tr>\n<td>ProcessingOTP</td>\n<td>The attempt to validate OTP never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>Successful</td>\n<td>Was processed successfully</td>\n</tr>\n<tr>\n<td>Failed</td>\n<td>A definite transaction failure. Read the error(s)</td>\n</tr>\n<tr>\n<td>OfflineValidated</td>\n<td>An attempt to pay via an offline channel was initiated but hasn't been concluded.</td>\n</tr>\n<tr>\n<td>OfflineNotified</td>\n<td>The transaction has successfully been paid via an offline channel.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","payments","query","{{transaction-ref}}"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"fac66663-e3bb-476d-aafd-8a342e124e19","name":"Query Transaction - success","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Timestamp","value":"1776321813"}],"url":"{{url}}/v1/payments/query/{{transaction-ref}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 23:13:13 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"status\": \"Successful\",\r\n    \"message\": \"The transaction was processed successfully\",\r\n    \"data\":{\r\n\t    \"provider_response_code\": \"00\",\r\n\t    \"charge_status\": \"Processing | WaitingForOTP | ProcessingOTP | Successful | Failed | OfflineValidated | OfflineNotified\",\r\n\t    \"provider\": \"Quickteller\",\r\n\t    \"errors\": null,\r\n\t    \"error\": null,\r\n\t    \"charge_token\":\"Kz5Dev7BenV9HmLNB\"\r\n    }\r\n}\r\n"}],"_postman_id":"3c082ddb-a51d-4df9-8fb7-dfb4865c3e32"},{"name":"Validate OTP","event":[{"listen":"test","script":{"id":"918cdff4-1543-4539-b405-2f83e58b6b10","exec":["pm.test(\"Valid response\", function () {","     pm.response.to.be.ok; ","     pm.response.to.be.json; ","});","","pm.test(\"Return success\", function () {","    var jsonData = pm.response.json();","    pm.expect(jsonData.status).to.eql(\"Successful\");","});",""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"6a12c7e5-6a42-4fb2-ae03-ae64b933c9f9","exec":[""],"type":"text/javascript"}}],"id":"ff5b26da-7263-4b32-ae71-648affbb30e7","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n\t\"request_ref\":\"{{request-ref}}\",\r\n\t\"transaction_ref\": \"{{transaction-ref}}\",\r\n\t\"secure\": \"{{the-supplied-OTP}}\"\r\n}"},"url":"{{url}}/v1/payments/otp","description":"<p>For transactions that require second factor authentication, call this endpoint to pass in the OTP that was sent to the user.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/otp</code></li>\n</ul>\n<h4 id=\"full-list-of-supported-status-values\">Full list of supported status values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Processing</td>\n<td>The attempt to debit never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>WaitingForOTP</td>\n<td>Still waiting for the OTP to be supplied. NOTE: If left too long, it's possible the OTP may have expired.</td>\n</tr>\n<tr>\n<td>ProcessingOTP</td>\n<td>The attempt to validate OTP never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>Successful</td>\n<td>Was processed successfully</td>\n</tr>\n<tr>\n<td>Failed</td>\n<td>A definite transaction failure. Read the error(s)</td>\n</tr>\n<tr>\n<td>OfflineValidated</td>\n<td>An attempt to pay via an offline channel was initiated but hasn't been concluded.</td>\n</tr>\n<tr>\n<td>OfflineNotified</td>\n<td>The transaction has successfully been paid via an offline channel.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","payments","otp"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"c3384edc-f570-43af-8f3a-77034b0e28c0","name":"Transact OTP validate - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n\t\"request_ref\":\"{{request-ref}}\",\r\n\t\"transaction_ref\": \"{{transaction-ref}}\",\r\n\t\"secure\": \"{{the-supplied-OTP}}\"\r\n}"},"url":"{{url}}/v1/payments/otp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:29:20 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\n\t\"status\": \"Successful\",\n    \"message\": \"Transaction {{transaction-ref}} was validated successfully\",\n    \"data\":{\n\t    \"provider_response_code\": \"00\",\n\t    \"charge_status\": \"Successful\",\n\t    \"provider\": \"RAVEPAY\",\n\t    \"errors\": null,\n\t    \"error\": null,\n\t    \"transaction_ref\":\"{{transaction-ref}}\",\n\t    \"charge_token\":\"Kz5Dev7BenV9HmLNB\",\n\t    \"paymentoptions\": []\n    }\n}\n"}],"_postman_id":"ff5b26da-7263-4b32-ae71-648affbb30e7"}],"id":"e3f4f6bb-e392-4718-8bb5-20327f9a8fd5","_postman_id":"e3f4f6bb-e392-4718-8bb5-20327f9a8fd5","description":""}],"id":"00abe690-2706-4b0a-a541-fbc5fcf2bcca","description":"<h1 id=\"overview\">Overview</h1>\n<p>The payment related endpoints are covered here. At they moment, they include: charge, airtime, bill payment and OTP validation for all transactions that require it. Also included is an endpoint for double-checking a transaction status.</p>\n","event":[{"listen":"prerequest","script":{"id":"fadb2130-7fdd-476a-aee7-2ec450088e9d","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"07313b5f-0530-477a-966f-6e3390d5bea5","type":"text/javascript","exec":[""]}}],"_postman_id":"00abe690-2706-4b0a-a541-fbc5fcf2bcca"},{"name":"Loan Scores","item":[{"name":"Get Score","event":[{"listen":"test","script":{"id":"da0493d9-93a3-490f-addc-8427b48ce71c","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"a7c8b15d-45b0-42cd-87f5-9112817d8e7e","exec":[""],"type":"text/javascript"}}],"id":"093721b8-2169-4cb6-9cee-39df8ea1e6f0","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":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"transaction\": {\n    \"amount\": \"10000\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"currency\": \"NGN\",\n    \"algo_code\": \"markovstats1.0\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mmobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/loans/score","description":"<p>With this call, you can pass in a customer's mobile number, and in return you'd get an <strong>estimated loan</strong> risk score denoting the maximum amount that may be offered to the user as a loan.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/loans/score</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>score</code> object</li>\n<li><code>score.amount</code> is the estimated amount that can be risked for this user</li>\n<li><code>score.confidence</code> is the percentage confidence associated with the estimate in <code>amount</code>. If the figure there is less than  10, multiply by 10 to make it a percentage. If the number is greated than 10, then it's a percentage confidence score.</li>\n<li><code>algo-code</code> is the algorithm that was used in the estimate</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo that the user originally requested</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Insert the customer's mobile number here</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","loans","score"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"89f5195c-1016-4525-aff5-1ec2e39fe5c0","name":"Get score - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"transaction\": {\n    \"amount\": \"10000\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"currency\": \"NGN\",\n    \"algo_code\": \"markovstats1.0\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mmobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/loans/score"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Operation was successful\",\n    \"data\": {\n        \"provider_response_code\": \"N/A\",\n        \"algocode\": \"markovstats1.0\",\n        \"errors\": null,\n        \"error\": null,\n        \"score\": {\n            \"customerid\": \"673AFC8CEDDC6C72F3FA9EAFD4225D\",\n            \"name\": null,\n            \"amount\": \"21300\",\n            \"confidence\": \"4\",\n            \"currency\": \"NGN\"\n        }\n    }\n}"}],"_postman_id":"093721b8-2169-4cb6-9cee-39df8ea1e6f0"},{"name":"Push User History","event":[{"listen":"test","script":{"id":"a198ee8f-3477-4d04-b4e2-f16b036f569e","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"9a402121-a608-4d28-bcb2-0f524fa01b95","exec":[""],"type":"text/javascript"}}],"id":"1a42df4b-f11e-47f9-8d35-3def6210c398","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"beneficiary\": {\n  \t\"firstname\": \"{{customer.firstname}}\",\n  \t\"surname\": \"{{customer.surname}}\",\n    \"email\": \"{{customer.email}}\",\n    \"mobile_no\": \"{{customer.mobile-no}}\",\n    \"id\": \"{{customer.mobile-no}}\"\n  },\n  \"loans\": [\n    {\n\t  \"id\":\"LOAN0001\",\n      \"currency\":\"NGN\",\n      \"amount\": 1000000, \n      \"tenure\": 14,\n      \"createdOn\": \"12-30-2017\",\n      \"dueDate\": \"1-31-2018\",\n\t  \"status\": \"open\", \n\t  \"credit_score\":{\n\t\t\"userid\": \"2348022221412\",\n    \t\"name\": \"John Doe\",\n    \t\"aggregate-score\": \"82\",\n    \t\"max_risk\": 25000,\n    \t\"currency\": \"NGN\"\n\t  },\n      \"payments\": [\n        {\n          \"id\": 1,\n          \"dueDate\": \"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,          \n          \"status\": \"on-time\"          \n        },\n\t\t{\n          \"id\": 2,\n          \"dueDate\":\"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,           \n          \"status\": \"on-time\"          \n        },\n\t\t{\n          \"id\": 3,\n          \"dueDate\": \"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,          \n          \"status\": \"on-time\"          \n        }\n      ]\n    }\n  ]\n}"},"url":"{{url}}/v1/loans/history","description":"<p>With this call, you can contribute performance data to the scoring algorithms. It pushes in actual loan behaviour history of the user over time. Data is used to retrain and recaliberate the models under which this user has featured or been scored before.</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","urlObject":{"path":["v1","loans","history"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"0ce38d23-d50e-43b7-a245-859a1d8065af","name":"Push User History - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"{{signature}}"},{"key":"apikey","value":"{{APIKey}}"},{"key":"token","value":"{{authtoken}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"beneficiary\": {\n  \t\"firstname\": \"{{customer.firstname}}\",\n  \t\"surname\": \"{{customer.surname}}\",\n    \"email\": \"{{customer.email}}\",\n    \"mobile_no\": \"{{customer.mobile-no}}\",\n    \"id\": \"{{customer.mobile-no}}\"\n  },\n  \"loans\": [\n    {\n\t  \"id\":\"LOAN0001\",\n      \"currency\":\"NGN\",\n      \"amount\": 1000000, \n      \"tenure\": 14,\n      \"createdOn\": \"12-30-2017\",\n      \"dueDate\": \"1-31-2018\",\n\t  \"status\": \"open\", \n\t  \"credit_score\":{\n\t\t\"userid\": \"2348022221412\",\n    \t\"name\": \"John Doe\",\n    \t\"aggregate-score\": \"82\",\n    \t\"max_risk\": 25000,\n    \t\"currency\": \"NGN\"\n\t  },\n      \"payments\": [\n        {\n          \"id\": 1,\n          \"dueDate\": \"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,          \n          \"status\": \"on-time\"          \n        },\n\t\t{\n          \"id\": 2,\n          \"dueDate\":\"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,           \n          \"status\": \"on-time\"          \n        },\n\t\t{\n          \"id\": 3,\n          \"dueDate\": \"1-31-2018\",\n\t\t  \"paymentDate\": \"1-31-2018\",\n\t\t  \"amountExpected\": 15000,\n          \"amountPaid\": 15000,          \n          \"status\": \"on-time\"          \n        }\n      ]\n    }\n  ]\n}"},"url":"{{url}}/v1/loans/history"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"User history updated\",\n    \"data\": {\n        \"provider_response_code\": \"N/A\",\n        \"algocode\": null,\n        \"errors\": null,\n        \"error\": null,\n        \"score\": {\n            \"customerid\": \"673AFC8CEDDC6C72F3FA9EAFD4225D\",\n            \"name\": null,\n            \"amount\": null,\n            \"confidence\": null,\n            \"currency\": null\n        }\n    }\n}"}],"_postman_id":"1a42df4b-f11e-47f9-8d35-3def6210c398"}],"id":"c7972a08-45ba-49f7-b7b2-2db4c08b2244","description":"<p>With this call, you can pass in a customer's mobile number, and in return you'd get an <strong>estimated loan</strong> risk score denoting the maximum amount that may be offered to the user as a loan. If the provider supports it, you can improve the underlying algorithm by submitting updates of the users loan behaviour over time.</p>\n<h5 id=\"sequence-of-calls\">Sequence of calls</h5>\n<ul>\n<li>Primary call: <code>/v1/loans/score</code></li>\n<li>Secondary call: <code>/v1/loans/pushuserhistory</code> to update the data that drives the scoring</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"1f4b6d02-685e-4e45-bd2a-beb38216f465","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"802fe0fc-4082-4496-8451-597ec46abcdf","type":"text/javascript","exec":[""]}}],"_postman_id":"c7972a08-45ba-49f7-b7b2-2db4c08b2244"},{"name":"Loan request","item":[{"name":"Get Loan Offers","event":[{"listen":"test","script":{"id":"37fd872b-b7e9-49b8-80c8-a3fc0f59ff68","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"753d9a96-6fcd-4c4d-b1fc-d698c0b72cb3","exec":[""],"type":"text/javascript"}}],"id":"0d6d600d-8bd2-4b0c-b0d3-7168e50d6881","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"transaction\": {\r\n    \"amount\": \"1200000000000\",\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"Payment for services\",\r\n    \"service_type\": \"MONEY\",\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}\r\n\r\n"},"url":"{{url}}/v1/loans/offers","description":"<p>With this call, you can pass in a customer's mobile number, and in return you'd get an array of <strong>estimated</strong> loan amounts from the provider(s).</p>\n<h4 id=\"relevant-endpoint\">Relevant endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/loans/offers</code></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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo that the user originally requested</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.service_type</td>\n<td>The only supported type at the moment is <code>MONEY</code></td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Insert the customer's mobile number here</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse. Proceed if response is <code>OffersDelivered</code> or <code>Successful</code></li>\n<li>Read the <code>offers</code> array and present tthe options to your user</li>\n<li><code>offers[].offerId</code> is a unique ID for this offer as determined by the provider. Please note this down for use in subsequent <code>accept Offer</code> call</li>\n<li><code>offers[].amountOffered</code> is amount in kobo as applicable for this offer</li>\n<li><code>offers[].interest</code> is the interest in percent that will be charged by the provider</li>\n<li><code>offers[].amountPayable</code> is the amount the provider expects the customer to pay back on due date</li>\n<li><code>offers[].tenure</code> is the loan tenure, in days</li>\n<li><code>offers[].expiryDate</code> is the actual date the provider expects the loan to be paid back</li>\n<li><code>offers[].currency</code> the currency code for the loan. Only Naira (566) is supported at the moment</li>\n<li><code>offers[].providerCode</code> is a unique code for the provider. Please note this down for use in subsequent <code>accept Offer</code> call</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>OffersDelivered</strong>: Success</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\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","urlObject":{"path":["v1","loans","offers"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"42135185-1d2f-4286-b97d-0d8601a6bb30","name":"Get loan offers - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}}"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"transaction\": {\r\n    \"amount\": \"1200000000000\",\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"Payment for services\",\r\n    \"service_type\": \"MONEY\",\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}\r\n\r\n"},"url":"{{url}}/v1/loans/offers"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"OffersDelivered\",\n    \"message\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"provider\": \"ILS\",\n        \"offers\": [\n            {\n                \"offerId\": \"101638163628490752\",\n                \"amountOffered\": \"500000\",\n                \"interest\": 15,\n                \"amountPayable\": \"575000\",\n                \"tenure\": 14,\n                \"expiryDate\": \"Sunday, February 24, 2019\",\n                \"currency\": \"566\",\n                \"providerCode\": \"AFA\"\n            },\n            {\n                \"offerId\": \"pt-4108389\",\n                \"amountOffered\": \"1890000\",\n                \"interest\": 15,\n                \"amountPayable\": \"2173500\",\n                \"tenure\": 14,\n                \"expiryDate\": \"Saturday, February 23, 2019\",\n                \"currency\": \"566\",\n                \"providerCode\": \"MNI\"\n            },\n            {\n                \"offerId\": \"1741207\",\n                \"amountOffered\": \"800000\",\n                \"interest\": 0,\n                \"amountPayable\": \"917600\",\n                \"tenure\": 14,\n                \"expiryDate\": \"Saturday, February 23, 2019\",\n                \"currency\": \"566\",\n                \"providerCode\": \"FER\"\n            }\n        ]\n    }\n}"}],"_postman_id":"0d6d600d-8bd2-4b0c-b0d3-7168e50d6881"},{"name":"Accept Loan Offer","event":[{"listen":"test","script":{"id":"ca17011d-c75d-4b3d-b920-9f3c4b3eb972","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"7492e662-a4c1-4448-afcf-44256a393563","exec":[""],"type":"text/javascript"}}],"id":"8e64e1b1-79eb-42c7-9fc0-f1bc5a792753","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":" {{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"auth\": {\r\n    \"type\": \"card\",\r\n    \"secure\": \"{{secure.card}}\"\r\n  },\r\n  \"transaction\": {\r\n  \t\"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"A loan\",\r\n    \"offer_id\": \"{{chosen-offer-id}}\",\r\n    \"provider_code\": \"{{provider-code-of-chosen-offer}}\",\r\n    \"account_number\": \"{{transaction.account-number}}\",\r\n    \"bank_code\": \"{{transaction.bank-code}}\",\r\n    \"customer\": {\r\n\t  \t\"firstname\": \"{{customer.firstname}}\",\r\n\t  \t\"surname\": \"{{customer.surname}}\",\r\n\t    \"email\": \"{{customer.email}}\",\r\n\t    \"mobile_no\": \"{{customer.mobile-no}}\",\r\n\t    \"customer_ref\": \"{{customer.mobile-no}}\"\r\n\t  }\r\n  }\r\n}"},"url":"{{url}}/v1/loans/accept","description":"<p>This call follows a <em><strong>Get offers</strong></em> call. You'd pass in a transaction-ref and the chosen offer, and the loan request will be passed to the provider for processing.</p>\n<p>You'd also pass in the mechanism through which the user would pay back in the <code>auth.secure</code> element.</p>\n<h4 id=\"relevant-endpoint\">Relevant endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/loans/accept</code></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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>The mode of repayment for this user. Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>The encrypted version of the user's chosen card details. This is the card with which (s)he plans to pay back. Please see <strong>encryption of the secure element</strong></td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be the same value as was used during the get offers call.</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.offer_id</td>\n<td>The offer_id value of the chosen offer. Taken from the previous Get Offers call.</td>\n</tr>\n<tr>\n<td>transaction.provider_code</td>\n<td>The provider_code value on the chosen offer. Taken from the previous Get Offers call.</td>\n</tr>\n<tr>\n<td>transaction.account_number</td>\n<td>The account number to credit for the loan if approved.</td>\n</tr>\n<tr>\n<td>transaction.bank_code</td>\n<td>The CBN code of the bank where this account_number resides. See <strong>CBN bank codes</strong> section.</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Insert the customer's mobile number here</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"possible-status-values\">Possible status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>OffersDelivered</strong>: Success</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\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","urlObject":{"path":["v1","loans","accept"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"16ba70f6-b081-47f8-98e8-dbf6905425f2","name":"Accept loan offer - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"auth\": {\r\n    \"type\": \"card\",\r\n    \"secure\": \"{{secure.card}}\"\r\n  },\r\n  \"transaction\": {\r\n  \t\"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"A loan\",\r\n    \"offer_id\": \"{{chosen-offer-id}}\",\r\n    \"provider_code\": \"{{provider-code-of-chosen-offer}}\",\r\n    \"account_number\": \"{{transaction.account-number}}\",\r\n    \"bank_code\": \"{{transaction.bank-code}}\",\r\n    \"customer\": {\r\n\t  \t\"firstname\": \"{{customer.firstname}}\",\r\n\t  \t\"surname\": \"{{customer.surname}}\",\r\n\t    \"email\": \"{{customer.email}}\",\r\n\t    \"mobile_no\": \"{{customer.mobile-no}}\",\r\n\t    \"customer_ref\": \"{{customer.mobile-no}}\"\r\n\t  }\r\n  }\r\n}"},"url":"{{url}}/v1/loans/accept"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"provider_responde_code\": \"00\",\n        \"provider\": \"ILS\",\n        \"offer_id\": \"kk4108393\",\n        \"errors\": null,\n        \"error\": null\n    }\n}"}],"_postman_id":"8e64e1b1-79eb-42c7-9fc0-f1bc5a792753"},{"name":"Loan Status","event":[{"listen":"test","script":{"id":"7b22aec7-efa8-45fb-8386-9f021c457ce7","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"7ec2647a-a9e1-42a5-b9d1-714c4906d941","exec":[""],"type":"text/javascript"}}],"id":"0eb3fcbf-608d-448b-8555-3e7b4f99d333","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"transaction\": {\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"Am I owing?\",\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}\r\n\r\n"},"url":"{{url}}/v1/loans/status","description":"<p>With this call, you can pass in the reference of a former loan transaction to get it's status.</p>\n<h4 id=\"relevant-endpoint\">Relevant endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/loans/status</code></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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Insert the customer's mobile number here</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse. Proceed if response is <code>Successful</code>.</li>\n<li>Read the <code>loans</code> array to see the active loans if any</li>\n<li><code>loans[].id</code> is a unique ID for this loan</li>\n<li><code>loans[].offerId</code> is a unique ID for the offer that led to the loan</li>\n<li><code>loans[].custometId</code> is a unique ID for thecustomer. Typically, phone number</li>\n<li><code>loans[].providerId</code> is the ID of the provider that appproved the loan</li>\n<li><code>loans[].channelId</code> is the id of the channel when the loan occured</li>\n<li><code>loans[].channelCode</code> is the channel where the loan occured</li>\n<li><code>loans[].status</code> Pay special attention to this. Status will be <strong>Open</strong> for an active loan</li>\n<li><code>loans[].tenure</code> is the duration of the loan. In days</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>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\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","urlObject":{"path":["v1","loans","status"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"0481c5f5-4134-4386-ac05-6f49a55b5088","name":"Loan Status - has no loan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"transaction\": {\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"Am I owing?\",\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\r\n    \t\"firstname\": \"Ope\",\r\n  \t\t\"surname\": \"Adeoye\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}\r\n\r\n"},"url":"{{url}}/v1/loans/status"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": null,\n    \"data\": {\n        \"provider_responde_code\": \"00\",\n        \"loan_status\": \"Successful\",\n        \"provider\": \"ILS\",\n        \"errors\": null,\n        \"error\": null,\n        \"loans\": []\n    }\n}"},{"id":"8d4a87a4-117d-4e64-ac1f-ebf54f46cf5a","name":"Loan Status - has loan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"transaction\": {\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"transaction_desc\": \"Am I owing?\",\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}\r\n\r\n"},"url":"{{url}}/v1/loans/status"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Mon, 22 Oct 2018 12:26:40 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."}],"cookie":[{"expires":"Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":true,"domain":"localhost","path":"/","secure":false,"value":"fNsey9X40j74PAKMicfOdIZ0ElYb1VFkJwxnvWTha9tH7YHT_WIBR_8wAzAtzIMo3tiQX_3E3kvhcGYom41r3kiZRQ2Ngb27SyKIzhAZfCO9QT-9iND5mZCXHu-DvmfEU8N33reIwEcfID3Jqe4WLJeQXciw443vz_bjnutQiBFDedZFdHDoUa8lgBl8W3sauxl0T9aRk5qR5u-Jf2EhZXKEdK4MvCPaJnoHHEkVIIXwnTxWUw_laS_wlNJiNElEvkYPowJQJSlSbmZ_oUGqu75qTugkigjl5pd2N2AcnA-zjRXOeT_eUfTWJy72GyiKNhEc8Xbf9DzyMouaeTZSZYyx2nCdrIHBDt9JMUhraAi1V0jdYE3VAgXKkv-k9OlkKc-b4FDpPMupcOJLkf7GxuiaU-A1Lm9PV5qhRK2b6xqOVcKf8gVfFOHaAE93xjWo8Z-JOpZWGfwU4NFQbYGCZ4Vf7oasZqmL9y4LNUwq4r0LsD3XeGQZ5KyPcc1OL8qnpoWQX6gNa65LtOTldnfNqQ","key":".AspNet.Cookies"},{"expires":"Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":false,"domain":"localhost","path":"/","secure":false,"value":"ugodm99769dm09oe47nknitih0","key":"PHPSESSID"},{"expires":"Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":true,"domain":"localhost","path":"/","secure":false,"value":"CfDJ8C6kIr7LwYROiu7CVkCnwMnBOlzrRHRoIxvEz3vuyltZqdImskgTbdhwOoobMooyXILF3h8GWzffsueJDMcgZ3DVFZnz09x3GcbE4kwGqpiJJYG-9lZZQ-qSXVJ8wSbgYVxtrj_y-cv84BLC8IvWobE","key":".AspNetCore.Antiforgery.ydilhDycFJk"}],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"the transaction was successful\",\n    \"data\": {\n        \"provider_responde_code\": \"00\",\n        \"loan_status\": \"Successful\",\n        \"provider\": \"MNI\",\n        \"errors\": null,\n        \"error\": null,\n        \"loans\": [\n            {\n                \"id\": 675247,\n                \"offerId\": \"pt-2249529\",\n                \"customerId\": \"2348022221412\",\n                \"providerId\": 3,\n                \"providerCode\": \"MNI\",\n                \"channelId\": 13,\n                \"channelCode\": \"ILB\",\n                \"status\": \"Open\",\n                \"amount\": 100000,\n                \"amountPayable\": 115000,\n                \"tenure\": 14,\n                \"dueDate\": 1541062368573,\n                \"terms\": null,\n                \"currency\": \"566\",\n                \"customerDebitMethod\": 57,\n                \"customerCreditMethod\": 5,\n                \"providerLoanId\": \"pt-266927\",\n                \"interest\": 15,\n                \"dateCreated\": 1539856368880\n            }\n        ]\n    }\n}"}],"_postman_id":"0eb3fcbf-608d-448b-8555-3e7b4f99d333"}],"id":"a43dd941-711a-434b-8b85-cf794256b0fa","description":"<p>With this service, you can get a loan for a customer (with their phone number as primary identification) based on an <strong>estimated risk score</strong> as determined by the provider directly.</p>\n<h5 id=\"sequence-of-calls\">Sequence of calls</h5>\n<ul>\n<li>First call: <code>/v1/loans/offers</code></li>\n<li>Display the offers to the customer and (s)he selects one</li>\n<li>Second call: <code>/v1/loans/accept</code> with the chosen offer and provider </li>\n<li>Third call: <code>/v1/loans/status</code> to ascertain the state of the loan</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"96bbda57-1198-40f2-9ca5-1aa30c170740","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"491f8062-3a01-4cd3-9ca6-5d86eee91d5e","type":"text/javascript","exec":[""]}}],"_postman_id":"a43dd941-711a-434b-8b85-cf794256b0fa"},{"name":"Lookup","item":[{"name":"Linked account","event":[{"listen":"test","script":{"id":"16ffe7b1-e5fb-41b4-93ac-5f57e8148e31","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"64fff7e2-e29b-46cd-9fb1-692fe5dbfdae","exec":[""],"type":"text/javascript"}}],"id":"214711c4-57dd-4a9d-b64d-97c0730cdfab","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"auth\": {\r\n    \"type\": \"card\",\r\n    \"secure\": \"{{secure.card}}\"\r\n  },\r\n  \"transaction\": {\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{transaction.account-number}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/cardaccount","description":"<p>With this, you can check account connected to customers card details</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/lookup/cardaccount</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>account</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted card details. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.account.id</td>\n<td>A unique id for the linked account</td>\n</tr>\n<tr>\n<td>data.account.bank_code</td>\n<td>The CBN bank code of the linked account</td>\n</tr>\n<tr>\n<td>data.account.bank_name</td>\n<td>The name of the bank</td>\n</tr>\n<tr>\n<td>data.account.card_type</td>\n<td>The brand of the card</td>\n</tr>\n<tr>\n<td>data.account.account_number</td>\n<td>The account number of the account linked to the card</td>\n</tr>\n<tr>\n<td>data.account.balance</td>\n<td>If available, this would contain the balance on the account in ##,###.00 format</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","lookup","cardaccount"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"c12cc385-2001-4c18-b087-a02fed4a92fc","name":"Linked account - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"auth\": {\r\n    \"type\": \"card\",\r\n    \"secure\": \"{{secure.card}}\"\r\n  },\r\n  \"transaction\": {\r\n    \"customer\":{\r\n    \t\"customer_ref\": \"{{transaction.account-number}}\",\r\n    \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\t\"surname\": \"{{customer.surname}}\",\r\n    \t\"email\": \"{{customer.email}}\",\r\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    }\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/cardaccount"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": null,\n    \"data\": {\n        \"provider\": \"Quickteller\",\n        \"provider_response_code\": \"\",\n        \"errors\": null,\n        \"error\": null,\n        \"account\": {\n            \"id\": \"50617644717007\",\n            \"card_type\": \"Verve\",\n            \"balance\": \"20,770.99\",\n            \"account_number\": \"6200000766\"\n        }\n    }\n}"}],"_postman_id":"214711c4-57dd-4a9d-b64d-97c0730cdfab"},{"name":"Linked cards","event":[{"listen":"test","script":{"id":"1743e7d6-2532-418d-97da-efe3a00e5842","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"9570ea0b-57d9-4ae1-90cd-1569c412a87b","exec":[""],"type":"text/javascript"}}],"id":"4db45b14-9c54-418a-a5e6-21f9833baaa5","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"customer\": {\r\n  \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\"surname\": \"{{customer.surname}}\",\r\n    \"email\": \"{{customer.email}}\",\r\n    \"mobile_no\": \"{{customer.mobile-no}}\",\r\n    \"customer_ref\": \"{{customer.id}}\"\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/cards","description":"<p>With this you can provide a phone number of a customer, and OnePipe will provide an array of cards and accounts linked to that phone number. Where available, that is.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/lookup/cards</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse. If successful...</li>\n<li>Read the <code>data.accounts</code> and <code>data.cards</code> arrays</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.accounts[].id</td>\n<td>A unique id for the linked account</td>\n</tr>\n<tr>\n<td>data.accounts[].bank_code</td>\n<td>The CBN bank code of the linked account</td>\n</tr>\n<tr>\n<td>data.accounts[].bank_name</td>\n<td>The name of the bank</td>\n</tr>\n<tr>\n<td>data.accounts[].masked_account_number</td>\n<td>The account number, masked.</td>\n</tr>\n<tr>\n<td>data.cards[].identifier</td>\n<td>A unique identifier for the linked card</td>\n</tr>\n<tr>\n<td>data.cards[].masked_pan</td>\n<td>The card number of the linked card. Masked.</td>\n</tr>\n<tr>\n<td>data.cards[].require_cvv</td>\n<td>true or false. Determines if an attempt to debit this card will require the CVV2</td>\n</tr>\n<tr>\n<td>data.cards[].require_expiry</td>\n<td>true or false. Determines if an attempt to debit this card will require the expiry date</td>\n</tr>\n<tr>\n<td>data.cards[].require_pin</td>\n<td>true or false. Determines if an attempt to debit this card will require the user's PIN</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","lookup","cards"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"0ee899d5-5e84-4664-822b-c6dbcc28e43b","name":"Linked cards - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n  \"customer\": {\r\n  \t\"firstname\": \"{{customer.firstname}}\",\r\n  \t\"surname\": \"{{customer.surname}}\",\r\n    \"email\": \"{{customer.email}}\",\r\n    \"mobile_no\": \"{{customer.mobile-no}}\",\r\n    \"customer_ref\": \"{{customer.id}}\"\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/cards"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"string\",\n    \"data\": {\n\t    \"provider\": \"QUICKTELLER\",\n\t    \"provider_response_code\": \"00\",\n\t    \"errors\": null,\n\t    \"error\": null,\n\t    \"accounts\": [\n\t\t    {\n\t\t    \t\"id\": \"1234\",\n\t\t\t\t\"bank_code\": \"ABC\",\n\t\t\t\t\"bank_name\" : \"GTBank PLC\",\n\t\t\t\t\"masked_account_number\": \"09***000\"\n\t\t    },\n\t\t    {\n\t\t    \t\"id\": \"1234\",\n\t\t\t\t\"bank_code\": \"ABC\",\n\t\t\t\t\"bank_name\" : \"GTBank PLC\",\n\t\t\t\t\"masked_account_number\": \"09***000\"\n\t\t    }\n\t\t],\n\t\t\"cards\":[\n\t\t    {\n\t\t    \t\"identifier\": \"12349899999999999\",\n\t\t\t\t\"masked_pan\": \"09***000\",\n\t\t\t\t\"require_cvv\": true,\n\t\t\t\t\"require_expiry\": true,\n\t\t\t\t\"require_pin\": true\n\t\t    },\n\t\t    {\n\t\t    \t\"identifier\": \"12349899999999999\",\n\t\t\t\t\"masked_pan\": \"09***000\",\n\t\t\t\t\"require_cvv\": true,\n\t\t\t\t\"require_expiry\": true,\n\t\t\t\t\"require_pin\": true\n\t\t    }\n\t\t]\n    }\n}"}],"_postman_id":"4db45b14-9c54-418a-a5e6-21f9833baaa5"},{"name":"Account info","event":[{"listen":"test","script":{"id":"1e87c7d7-a5e1-490a-bd4b-5653d4e4c026","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"a2b87253-1721-4974-96c0-85810b8d87c7","exec":[""],"type":"text/javascript"}}],"id":"3818ffb5-d60b-4ea6-a0fc-425f7259fb76","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n    \"transaction\": {\r\n    \t\"account_number\": \"{{transaction.account-number}}\",\r\n    \t\"bank_code\": \"{{transaction.bank-code}}\",\r\n    \t\"customer\":{\r\n\t    \t\"customer_ref\": \"{{transaction.account-number}}\",\r\n\t    \t\"firstname\": \"Ope\",\r\n\t  \t\t\"surname\": \"Adeoye\",\r\n\t    \t\"email\": \"{{customer.email}}\",\r\n\t    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    \t}\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/accountinfo","description":"<p>With this you can provide a customer's account number + bank, and in return, receive KYC information on the account.</p>\n<h4 id=\"relevant-api-call\">Relevant API call</h4>\n<ul>\n<li>Primary call: <code>/v1/lookup/accountinfo</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>account_info</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>transaction.account_number</td>\n<td>The account number to lookup</td>\n</tr>\n<tr>\n<td>transaction.bank_code</td>\n<td>The CBN bank code of the bank where the account resides. See the <a href=\"#bank-cbn-codes\">bank CBN codes</a> section</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.account_info.id</td>\n<td>A unique id for the account</td>\n</tr>\n<tr>\n<td>data.account_info.accountNumber</td>\n<td>The account number</td>\n</tr>\n<tr>\n<td>data.account_info.lastName</td>\n<td>the Surname of the user or account (if corporate account)</td>\n</tr>\n<tr>\n<td>data.account_info.firstName</td>\n<td>the first name of the user or account (if corporate account)</td>\n</tr>\n<tr>\n<td>data.account_info.otherNames</td>\n<td>the middle of the user or account (if corporate account)</td>\n</tr>\n<tr>\n<td>data.account_info.accountType</td>\n<td><strong>00</strong> for default<br /> <strong>10</strong> for current<br /> <strong>20</strong> for savings</td>\n</tr>\n<tr>\n<td>data.account_info.accountCurrency</td>\n<td>The currency code of the account.</td>\n</tr>\n<tr>\n<td>data.account_info.addrLine1</td>\n<td>Address provided to the bank for the account</td>\n</tr>\n<tr>\n<td>data.account_info.addrLine2</td>\n<td>Address provided to the bank for the account</td>\n</tr>\n<tr>\n<td>data.account_info.city</td>\n<td>City where the account was opened</td>\n</tr>\n<tr>\n<td>data.account_info.phone</td>\n<td>Phone number registered with the account</td>\n</tr>\n<tr>\n<td>data.account_info.stateCode</td>\n<td>The state code where the account was opened.</td>\n</tr>\n<tr>\n<td>data.account_info.countryCode</td>\n<td>Country code. NG for Nigeria.</td>\n</tr>\n<tr>\n<td>data.account_info.idNumber</td>\n<td>The ID number provided by the bank. Either driver's license, BVN, etc.</td>\n</tr>\n<tr>\n<td>data.account_info.idType</td>\n<td>The type of ID that the number above represents. BVN, Driver's license, Passport</td>\n</tr>\n<tr>\n<td>data.account_info.nationality</td>\n<td>Nationality of the user</td>\n</tr>\n<tr>\n<td>data.account_info.countryOfBirth</td>\n<td>Country of birth of the account owner</td>\n</tr>\n<tr>\n<td>data.account_info.dob</td>\n<td>Date of birth of the account owner</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","lookup","accountinfo"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"aecbe727-c851-4117-be0c-65ee132e70ec","name":"Account info - success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Timestamp","value":"1776321813"}],"body":{"mode":"raw","raw":"{\r\n  \"request_ref\":\"{{request-ref}}\",\r\n    \"transaction\": {\r\n    \t\"account_number\": \"{{transaction.account-number}}\",\r\n    \t\"bank_code\": \"{{transaction.bank-code}}\",\r\n    \t\"customer\":{\r\n\t    \t\"customer_ref\": \"{{transaction.account-number}}\",\r\n\t    \t\"firstname\": \"Ope\",\r\n\t  \t\t\"surname\": \"Adeoye\",\r\n\t    \t\"email\": \"{{customer.email}}\",\r\n\t    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n    \t}\r\n  }\r\n}"},"url":"{{url}}/v1/lookup/accountinfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Successful\",\n    \"data\": {\n        \"provider\": \"ILS\",\n        \"provider_response_code\": \"\",\n        \"errors\": null,\n        \"error\": null,\n        \"account_info\": {\n            \"id\": \"\",\n            \"accountNumber\": \"0000023140\",\n            \"accountName\": \"UJU ABUBAKAR\",\n            \"lastName\": \"ABUBAKAR\",\n            \"firstName\": \"UTHMAN\",\n            \"otherNames\": \"UJU\",\n            \"accountType\": \"20\",\n            \"accountCurrency\": \"566\",\n            \"addrLine1\": \"21, KOLEDOWO AVENUE\",\n            \"addrLine2\": \"AJASCO LANE\",\n            \"city\": \"Abeokuta\",\n            \"phone\": null,\n            \"postalCode\": null,\n            \"stateCode\": null,\n            \"countryCode\": \"NG\",\n            \"idNumber\": \"22000114258\",\n            \"idType\": \"BVN\",\n            \"nationality\": null,\n            \"countryOfBirth\": \"NIGERIA\",\n            \"countryOfIssue\": \"Nigeria\",\n            \"dob\": \"15/06/1999\",\n            \"expiryDate\": \"\"\n        }\n    }\n}"}],"_postman_id":"3818ffb5-d60b-4ea6-a0fc-425f7259fb76"},{"name":"Card Account Info","id":"8e95f802-b4b4-4bab-bfb8-b3d64d917563","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"60520909999\",\n  \"auth\": {\n    \"type\": \"card\", \n    \"secure\": \"{{secure.card}}\",\n    \"pan\":\"{{card.pan}}\"\n  },\n  \"customer\": {\n    \"email\": \"{{customer.email}}\",\n    \"mobile_no\": \"{{customer.mobile-no}}\",\n    \"id\": \"{{customer.id}}\"\n  }\n}\n"},"url":"https://next.api.onepipe.io/v1/lookup/cardaccountinfo","description":"<p>[EXPERIMENTAL] Given the details of a card, this API will return the account &amp; KYC info linked to it. And where possible the balance on the acccount.</p>\n<h5 id=\"sequence-of-calls\">Sequence of calls</h5>\n<ul>\n<li>Primary call: <code>https://next.api.onepipe.io/v1/lookup/cardaccountinfo</code></li>\n</ul>\n<h5 id=\"interpreting-the-response\">Interpreting the response</h5>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>account</code> Object</li>\n</ul>\n<h5 id=\"possible-response-codes\">Possible response codes</h5>\n<ul>\n<li><strong>00</strong>: Success</li>\n<li><strong>message</strong> One or more errors occurred. (Invalid card encryption)</li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\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","urlObject":{"protocol":"https","path":["v1","lookup","cardaccountinfo"],"host":["next","api","onepipe","io"],"query":[],"variable":[]}},"response":[{"id":"9bc72c5c-08e8-4b4b-b8ba-4b132f74187d","name":"Card account info (Response)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"60520909999\",\n  \"auth\": {\n    \"type\": \"card\", \n    \"secure\": \"{{secure.card}}\",\n    \"pan\":\"{{card.pan}}\"\n  },\n  \"customer\": {\n    \"email\": \"{{customer.email}}\",\n    \"mobile_no\": \"{{customer.mobile-no}}\",\n    \"id\": \"{{customer.id}}\"\n  }\n}\n"},"url":"https://next.api.onepipe.io/v1/lookup/cardaccountinfo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Transfer-Encoding","value":"chunked"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"X-Powered-By","value":"ASP.NET"},{"key":"Date","value":"Wed, 09 Jan 2019 09:48:04 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"00\",\n    \"message\": \"Successful\",\n    \"account_info\": {\n        \"id\": \"\",\n        \"accountNumber\": \"6234784766\",\n        \"accountName\": \"UJU ABU\",\n        \"lastName\": \"UJU\",\n        \"firstName\": \"ABBAKAR\",\n        \"otherNames\": null,\n        \"accountType\": \"N/A\",\n        \"accountCurrency\": null,\n        \"addrLine1\": \"21 CRESCENT ZENITH BANK ADENIYI AKOKA  LAGOS\",\n        \"addrLine2\": null,\n        \"city\": null,\n        \"phone\": null,\n        \"postalCode\": null,\n        \"stateCode\": null,\n        \"countryCode\": null,\n        \"idNumber\": \"null\",\n        \"idType\": \"null\",\n        \"nationality\": null,\n        \"countryOfBirth\": \"null\",\n        \"countryOfIssue\": \"null\",\n        \"dob\": \"null\",\n        \"expiryDate\": \"null\",\n        \"card_type\": \"Verve\",\n        \"balance\": \"20,770.99\",\n        \"bank\": \"Access\",\n        \"bankCode\": \"044\"\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"8e95f802-b4b4-4bab-bfb8-b3d64d917563"}],"id":"35132a93-739a-47ec-8438-7d5444104008","description":"<h3 id=\"overview\">Overview</h3>\n<p>OnePipe provides a set of value-added APIs to 'lookup' information on customers or payment instruments. From the ability to know the account linked to a card and it's balance, to the KYC information on an account, to cards previously known with a phone number. Etc.</p>\n<p>This segment describes these endpoints and how to use them.</p>\n","event":[{"listen":"prerequest","script":{"id":"2e130af5-aecf-4e9b-a0f7-1e9c4f4dfcf6","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8e44ae04-1d78-4435-a47b-ab20543f43dc","type":"text/javascript","exec":[""]}}],"_postman_id":"35132a93-739a-47ec-8438-7d5444104008"},{"name":"BETA","item":[{"name":"Lookup","item":[{"name":"BVN Lookup","id":"826db549-6f73-4c9a-a87d-4d9d8434df06","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"bvn_lookup\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": null,\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"bvn\": \"{{bvn}}\",\n            \"otp_validation\": false\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can do KYC with the customer's bvn</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>provider_response</code> Object</li>\n</ul>\n<h4 id=\"possible-response-status-values\">Possible response status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>WatingForOTP</strong>: Pending OTP Validation</li>\n<li><strong>Failed</strong>: Failure</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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>bvn_lookup</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>null</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.bvn</td>\n<td>BVN to look up</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>transaction.details.otp_validation</td>\n<td>Boolean. Default is <code>false</code>. If set to <code>true</code> an OTP will be sent to the phone number attached to the bvn.</td>\n</tr>\n<tr>\n<td></td>\n<td></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 <strong>WaitingForOTP</strong> or <strong>Failed</strong>.</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</td>\n<td>Object of KYC details</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"0edeed45-0467-4a6f-9d51-cd045671afe0","name":"BVN Lookup (WaitingForOTP)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"bvn_lookup\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": null,\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"bvn\": \"{{bvn}}\",\n            \"otp_validation\": true\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"WaitingForOTP\",\n    \"message\": \"Kindly enter the OTP sent to 234708****908.\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"10\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": null,\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": \"https://onepipe.io/images/mtn_logo.jpg\",\n            \"logo_url\": \"https://console.onepipe.io/img/logo.png\",\n            \"footer_text\": \"Secured by <strong>[Chosen Partner]</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\",\n                \"QUICKTELLER.PAYPOINT\"\n            ],\n            \"primary_color\": \"#FDCA30\",\n            \"secondary_color\": \"#FDCA30\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#FDCA30\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #fdca2f 86.99%, #FDCA30 74.1%)\",\n            \"payment_option_color\": \"#000000\",\n            \"payment_option_active_color\": \"#e69921\",\n            \"app_color\": \"#FDCA30\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"},{"id":"ce7da7f8-cd35-4e52-b53d-646972c3981f","name":"BVN Lookup (Successful)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"bvn_lookup\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": null,\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"bvn\": \"{{bvn}}\",\n            \"otp_validation\": true\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"BVN Validation Successful\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": {\n            \"firstName\": \"John\",\n            \"middleName\": \"Jane\",\n            \"lastName\": \"Doe\",\n            \"dateOfBirth\": \"15-Dec-1990\",\n            \"phoneNumber1\": \"09011111112\",\n            \"phoneNumber2\": \"\",\n            \"registrationDate\": \"10-Jan-2015\",\n            \"enrollmentBank\": \"100\",\n            \"enrollmentBranch\": \"MATORI\",\n            \"email\": \"john.doe@gmail.com\",\n            \"gender\": \"Male\",\n            \"levelOfAccount\": \"Level 2 - Medium Level Accounts\",\n            \"lgaOfOrigin\": \"Iseyin\",\n            \"lgaOfResidence\": \"Ikeja\",\n            \"maritalStatus\": \"Single\",\n            \"nin\": \"00990090090\",\n            \"nameOnCard\": \"John Doe Jane\",\n            \"nationality\": \"Nigeria\",\n            \"residentialAddress\": \"23, Loren Joe Street\",\n            \"stateOfOrigin\": \"Bauchi State\",\n            \"stateOfResidence\": \"Lagos State\",\n            \"title\": \"Mr\",\n            \"watchListed\": \"NO\",\n            \"bvn\": \"0000099999}\",\n            \"base64Image\": \"{{base64String}}\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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            \"options\": [],\n            \"primary_color\": null,\n            \"secondary_color\": null,\n            \"primary_button_color\": null,\n            \"modal_background_color\": null,\n            \"payment_option_color\": null,\n            \"payment_option_active_color\": null,\n            \"app_color\": null\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"826db549-6f73-4c9a-a87d-4d9d8434df06"},{"name":"BVN Lookup (Validate OTP)","id":"8e25e21d-a7c4-4ed4-bb57-8713679706e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"bvn_lookup\",\n    \"auth\": {\n        \"secure\": \"{{encrypted-otp}}\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>The same endpoint is used to validate OTP for BVN Lookup.</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>provider_response</code> Object</li>\n</ul>\n<h4 id=\"possible-response-status-values\">Possible response status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>Failed</strong>: Failure</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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>bvn_lookup</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>null</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>This should hold your encrypted OTP string</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>Reference to the transaction that needs otp validation</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.</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</td>\n<td>Object of KYC details</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"16c3159e-6a78-46c3-b376-9d06f2cdccf0","name":"BVN Lookup (Validate OTP)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"bvn_lookup\",\n    \"auth\": {\n        \"secure\": \"{{encrypted-otp}}\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"BVN Validation Successful\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": {\n            \"firstName\": \"John\",\n            \"middleName\": \"Jane\",\n            \"lastName\": \"Doe\",\n            \"dateOfBirth\": \"15-Dec-1990\",\n            \"phoneNumber1\": \"09011111112\",\n            \"phoneNumber2\": \"\",\n            \"registrationDate\": \"10-Jan-2015\",\n            \"enrollmentBank\": \"100\",\n            \"enrollmentBranch\": \"MATORI\",\n            \"email\": \"john.doe@gmail.com\",\n            \"gender\": \"Male\",\n            \"levelOfAccount\": \"Level 2 - Medium Level Accounts\",\n            \"lgaOfOrigin\": \"Iseyin\",\n            \"lgaOfResidence\": \"Ikeja\",\n            \"maritalStatus\": \"Single\",\n            \"nin\": \"00990090090\",\n            \"nameOnCard\": \"John Doe Jane\",\n            \"nationality\": \"Nigeria\",\n            \"residentialAddress\": \"23, Loren Joe Street\",\n            \"stateOfOrigin\": \"Bauchi State\",\n            \"stateOfResidence\": \"Lagos State\",\n            \"title\": \"Mr\",\n            \"watchListed\": \"NO\",\n            \"bvn\": \"0000099999}\",\n            \"base64Image\": \"{{base64String}}\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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            \"options\": [],\n            \"primary_color\": null,\n            \"secondary_color\": null,\n            \"primary_button_color\": null,\n            \"modal_background_color\": null,\n            \"payment_option_color\": null,\n            \"payment_option_active_color\": null,\n            \"app_color\": null\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"8e25e21d-a7c4-4ed4-bb57-8713679706e4"},{"name":"Account (Number) Info Lookup","id":"61f93f12-a62b-483f-bc74-a48b59a7288f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"account_number_lookup\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": null,\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"Look up\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"account_number\": \"2041387444\",\n            \"bank_code\": \"011\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can do KYC with the customer's account number</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</li>\n<li>Read the <code>provider_response</code> Object</li>\n</ul>\n<h4 id=\"possible-response-status-values\">Possible response status values</h4>\n<ul>\n<li><strong>Successful</strong>: Success</li>\n<li><strong>Failed</strong>: Failure</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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>bvn_lookup</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>null</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>null</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.account_number</td>\n<td>Account Number to Look Up</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>transaction.details.bank_code</td>\n<td>CBN bank code</td>\n</tr>\n<tr>\n<td></td>\n<td></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 <strong>Failed</strong>.</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</td>\n<td>Object of KYC details</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"36887440-39a9-4b83-bb4e-e2c5e79c3cfe","name":"Account (Number) Lookup","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"account_number_lookup\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": null,\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"Look up\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"account_number\": \"2041387444\",\n            \"bank_code\": \"011\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": null,\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": {\n            \"account_number\": \"2041387444\",\n            \"account_name\": \"JOHN JANE DOE\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"61f93f12-a62b-483f-bc74-a48b59a7288f"}],"id":"ad59e0a6-0d13-41a4-9966-a11a4cb88ea0","description":"<h3 id=\"overview\">Overview</h3>\n<p>You can carry out KYC with the BVN lookup service.</p>\n<p>This segment describes the service endpoint and how to use it.</p>\n","event":[{"listen":"prerequest","script":{"id":"30049ae7-af66-4083-a39b-ebc5fbbc019b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"aa18169e-f889-4c38-a7c2-2de233275fbc","type":"text/javascript","exec":[""]}}],"_postman_id":"ad59e0a6-0d13-41a4-9966-a11a4cb88ea0"},{"name":"Prepaid","item":[{"name":"Issue Card","id":"9378a5f1-2b67-482d-9968-c5b77d8b720e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid card issue\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": null,\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request for prepaid card\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"name_on_card\": \"Opeyemi Olaniroko Adamu\",\n            \"address_line_1\": \"23 Ebinpejo Lane\",\n            \"address_line_2\": \"Idumota\",\n            \"address_city\": \"Lagos\",\n            \"address_state\": \"Lagos\",\n            \"address_postal_code\": \"12301\",\n            \"address_country_code\": \"NG\",\n            \"card_currency_code\": \"NGN\",\n            \"card_default_pin\": \"1234\"\n        },\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can issue prepaid cards to your customers.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>prepaid card issue</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>null</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.card_no_masked</td>\n<td>Masked card PAN</td>\n</tr>\n<tr>\n<td>data.provider_response.secure</td>\n<td>Card details in the format {card.Pan};{card.Cvv};{card.Expdate(year_month)};{card.Pin}</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"de56f776-68b9-49b7-bbeb-7af9523d2168","name":"Issue Card","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid card issue\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": null,\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request for prepaid card\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"name_on_card\": \"Opeyemi Olaniroko Adamu\",\n            \"address_line_1\": \"23 Ebinpejo Lane\",\n            \"address_line_2\": \"Idumota\",\n            \"address_city\": \"Lagos\",\n            \"address_state\": \"Lagos\",\n            \"address_postal_code\": \"12301\",\n            \"address_country_code\": \"NG\",\n            \"card_currency_code\": \"NGN\",\n            \"card_default_pin\": \"1234\"\n        },\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"Card issued successfully!\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"Verve\",\n        \"provider_response\": {\n            \"card_no_masked\": \"506100xxxxxx4998\",\n            \"card_sequence_no\": \"001\",\n            \"name_on_card\": \"Opeyemi O. Adamu\",\n            \"address_line_1\": \"23 Ebinpejo Lane\",\n            \"address_line_2\": \"Idumota\",\n            \"address_city\": \"Lagos\",\n            \"address_state\": \"Lagos\",\n            \"address_postal_code\": \"23401\",\n            \"address_country_code\": \"NGN\",\n            \"card_currency_code\": \"566\",\n            \"issuer_cbn_code\": \"43\",\n            \"safe_token_response\": \"9000\",\n            \"secure\": \"5061000104424453498;545;2239;1234\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"9378a5f1-2b67-482d-9968-c5b77d8b720e"},{"name":"Fund Card","id":"f1db816f-354a-4aa6-888c-43769ffef318","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"fund prepaid\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Fund my card\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 55000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"bin\": \"566100\"\n        },\n        \"meta\": {\n            \"reason\": \"need cash\",\n            \"location\": \"Yaba\",\n            \"channel\": \"ussd\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can fund prepaid cards.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>fund prepaid</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted card details. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo to fund card with</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"c840053c-3489-45cd-8ae4-24844336c81d","name":"Fund Card","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"fund prepaid\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Fund my card\",\n        \"transaction_ref_parent\": \"\",\n        \"amount\": 55000,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"bin\": \"566100\"\n        },\n        \"meta\": {\n            \"reason\": \"need cash\",\n            \"location\": \"Yaba\",\n            \"channel\": \"ussd\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing | WaitingForOTP | ProcessingOTP | Successful-Failed | OfflineValidating | OfflineValidated | OfflineNotifying | OfflineNotified\",\n    \"message\": \"The transaction has been processed successully\",\n    \"data\": {\n    \t\"provider_responde_code\":\"00\",\n    \t\"provider\": \"RAVE\",\n        \"errors\": null,\n        \"error\": null,\n        \"paymentoptions\": [],\n        \"provider_response\":{}\n    }\n}"}],"_postman_id":"f1db816f-354a-4aa6-888c-43769ffef318"},{"name":"Balance","id":"1143857f-27a6-4795-a614-de8aab1b505f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid balance\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"View balance\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {},\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can check balance of a prepaid card.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>prepaid balance</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted card details. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.available_balance</td>\n<td>Balance in kobo</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"5eaba3e2-6d3f-44ce-8e91-c15cd99ac3c1","name":"Balance","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid balance\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"View balance\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {},\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 13:06:31 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"The transaction has been processed successfully\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": null,\n        \"charge_status\": null,\n        \"provider\": \"Verve\",\n        \"provider_response\": {\n            \"ledger_balance\": \"0\",\n            \"available_balance\": \"0\",\n            \"goods_limit\": \"25000000\",\n            \"goods_nr_trans_limit\": \"10\",\n            \"cash_limit\": \"25000000\",\n            \"cash_nr_trans_limit\": \"10\",\n            \"payment_limit\": \"25000000\",\n            \"payment_nr_trans_limit\": \"10\",\n            \"card_not_present_limit\": \"25000000\",\n            \"deposit_credit_limit\": \"25000000\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"1143857f-27a6-4795-a614-de8aab1b505f"},{"name":"PIN Reset","id":"ec94793f-7f7f-49bc-a193-96897dafbf77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid pin re-issue\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request pin re-issue\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {},\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can reset/re-issue PIN of a prepaid card.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>prepaid pin re-issue</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted card details. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</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.</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.pin</td>\n<td>Newly issued PIN</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"423cc55e-9e07-4be9-aed6-f83b7b52e515","name":"PIN Reset","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid pin re-issue\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request pin re-issue\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {},\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 13:23:12 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"The transaction has been processed successfully\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"Verve\",\n        \"provider_response\": {\n            \"pin\": \"3205\",\n            \"pin_offset\": \"3912\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"ec94793f-7f7f-49bc-a193-96897dafbf77"},{"name":"PIN Change","id":"85d35d5d-07bd-4b09-8666-f1812af054e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid pin change\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request pin change\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"new_pin\": \"1234\"\n        },\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can change PIN of a prepaid card.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>prepaid pin change</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Only <code>card</code> is supported at the moment.</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted card details. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.new_pin</td>\n<td>New PIN to be attached to the card</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.</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</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"28e04e72-9acb-42ef-bd50-5676756272f5","name":"PIN Change","originalRequest":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"prepaid pin change\",\n    \"auth\": {\n        \"type\": \"card\",\n        \"secure\": \"{{secure}}\",\n        \"auth_provider\": \"Verve\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Request pin change\",\n        \"transaction_ref_parent\": \"\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"new_pin\": \"1234\"\n        },\n        \"meta\": {\n            \"key1\": \"value\",\n            \"key2\": \"value\",\n            \"key3\": \"value\"\n        }\n    }\n}"},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 13:28:06 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"The transaction has been processed successfully\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"204\",\n        \"charge_status\": null,\n        \"provider\": \"Verve\",\n        \"provider_response\": null,\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"85d35d5d-07bd-4b09-8666-f1812af054e2"}],"id":"e268fb21-8774-4863-a760-13b20844b89d","description":"<h3 id=\"overview\">Overview</h3>\n<p>Need to hold deposits from your customers in a regulatory compliant way? Prepaid cards APIs available. You can issue prepaid cards, fund cards, check balance, reset PIN and change PIN of issued cards.</p>\n<p>This segment describes these endpoints and how to use them.</p>\n","event":[{"listen":"prerequest","script":{"id":"30049ae7-af66-4083-a39b-ebc5fbbc019b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"aa18169e-f889-4c38-a7c2-2de233275fbc","type":"text/javascript","exec":[""]}}],"_postman_id":"e268fb21-8774-4863-a760-13b20844b89d"},{"name":"Disbursement","item":[{"name":"Funds Transfer","id":"8f666fb5-47e6-412c-87a9-170d8e759e2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":""},"url":"{{url}}/v1/generic/transact","description":"<p>With this, you can transfer funds from your client bank account to other bank accounts.</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>disbursement</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>null</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>null</td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in <code>kobo</code> to transfer</td>\n</tr>\n<tr>\n<td>transaction.customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>transaction.customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>transaction.details.destination_account</td>\n<td>NUBAN destination account number</td>\n</tr>\n<tr>\n<td>transaction.details.bank_code</td>\n<td>Bank code of destination account</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 <strong>WaitingForOTP</strong> or <strong>Failed</strong>.</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.session_id</td>\n<td>This id is the generated id from NIBSS</td>\n</tr>\n<tr>\n<td>data.provider_response.payment_reference</td>\n<td>This is the transaction reference used</td>\n</tr>\n</tbody>\n</table>\n</div><p>If status is <code>WaitingForOTP</code>, it means this transaction requires an OTP validation leg, and an OTP has been sent to the phone number attached to your app.</p>\n<p><strong>NOTE</strong>: Note that this is a one-time call.</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","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"13146da8-9576-42c5-bc40-cf7b7d472681","name":"Funds Transfer (Successful)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"disbursement\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": \"1000\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"destination_account\": \"{{destination.account}}\",\n            \"bank_code\": \"{{destination.bank.code}}\",\n            \"processed_with\":\"nip\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"NIP Transfer: Transaction Successful\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": {\n            \"session_id\": \"000022200225154318222333334432\",\n            \"destination_institution_code\": \"000016\",\n            \"beneficiary_account_name\": \"JOHN DOE JAMES\",\n            \"beneficiary_account_number\": \"3056433222\",\n            \"beneficiary_kyc_level\": \"3\",\n            \"originator_account_name\": \"James Jane\",\n            \"originator_account_number\": \"0001131256\",\n            \"originator_kyc_level\": \"1\",\n            \"narration\": \"My narration\",\n            \"payment_reference\": \"6528864\",\n            \"amount\": \"1000\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"},{"id":"92f8ab01-ce4c-4484-842f-53b9a0d0d7c0","name":"Funds Transfer (Processing)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"disbursement\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": \"1000\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"destination_account\": \"{{destination.account}}\",\n            \"bank_code\": \"{{destination.bank.code}}\",\n            \"processed_with\":\"nip\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Processing\",\n    \"message\": \"Your Request has been received and will be processed shortly!\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"transaction_final_amount\": null,\n        \"response_timestamp\": null,\n        \"provider_response\": {\n            \"payment_reference\": \"{{transaction-ref}}\",\n            \"amount\": \"1000\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"},{"id":"ea8b512a-2d86-4f17-b0ef-065c37da8a9f","name":"Funds Transfer (WaitingForOTP)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"disbursement\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"SunTrust\"\n    },\n    \"transaction\": {\n        \"amount\": \"1000\",\n        \"transaction_ref\": \"{{ref}}\",\n        \"transaction_desc\": \"My narration\",\n        \"transaction_ref_parent\": null,\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        },\n        \"details\": {\n            \"destination_account\": \"{{destination.account}}\",\n            \"destination_bank_code\": \"{{destination.bank.code}}\",\n            \"processed_with\":\"nip\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"WaitingForOTP\",\n    \"message\": \"Kindly enter the OTP sent to 234708****908.\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"10\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": null,\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\n            \"id\": null,\n            \"bank_cbn_code\": null,\n            \"bank_name\": null,\n            \"console_url\": null,\n            \"js_background_image\": null,\n            \"css_url\": \"https://onepipe.io/images/mtn_logo.jpg\",\n            \"logo_url\": \"https://console.onepipe.io/img/logo.png\",\n            \"footer_text\": \"Secured by <strong>[Chosen Partner]</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\",\n                \"QUICKTELLER.PAYPOINT\"\n            ],\n            \"primary_color\": \"#FDCA30\",\n            \"secondary_color\": \"#FDCA30\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#FDCA30\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #fdca2f 86.99%, #FDCA30 74.1%)\",\n            \"payment_option_color\": \"#000000\",\n            \"payment_option_active_color\": \"#e69921\",\n            \"app_color\": \"#FDCA30\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"8f666fb5-47e6-412c-87a9-170d8e759e2e"},{"name":"Funds Transfer (Query Transaction)","id":"ad2ddfd3-d1bd-4427-9245-6f2a482987f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":""},"url":"{{url}}/v1/generic/transact/query","description":"<p>Use this endpoint to query a funds transfer/disbursement transaction.</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact/query</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>: Transaction was successful.</li>\n<li><strong>Processing</strong>: Transaction is still being processed.</li>\n<li><strong>Failed</strong>: Transaction failed due to one or more reasons. Read the accompanying message for details.</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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>disbursement</code></td>\n</tr>\n<tr>\n<td>auth</td>\n<td>null</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>Reference to the transaction that needs otp validation</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.</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.session_id</td>\n<td>This id is the generated id from NIBSS</td>\n</tr>\n<tr>\n<td>data.provider_response.originator_account_number</td>\n<td>This is the source account number</td>\n</tr>\n<tr>\n<td>data.provider_response.beneficiary_account_number</td>\n<td>This is the destination account number</td>\n</tr>\n<tr>\n<td>data.provider_response.destination_institution_code</td>\n<td>This is the destination institution code</td>\n</tr>\n<tr>\n<td>data.provider_response.amount</td>\n<td>This is the transaction amount (in kobo) processed</td>\n</tr>\n<tr>\n<td>data.provider_response.payment_reference</td>\n<td>This is the transaction reference used</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact","query"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"5a6881cc-e50a-434d-bfc3-80260b2d6927","name":"Funds Transfer (Query)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"disbursement\",\n    \"auth\": null,\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact/query"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"NIP Transfer: Transaction Successful\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"transaction_final_amount\": \"1000\",\n        \"response_timestamp\": \"07/26/2020 10:36:36\",\n        \"provider_response\": {\n            \"session_id\": \"000022208767614609442521196651\",\n            \"beneficiary_account_number\": \"1190888767\",\n            \"destination_institution_code\": \"057\",\n            \"originator_account_number\": \"0099887675\",\n            \"narration\": \"My narration\",\n            \"payment_reference\": \"{{transaction-ref}}\",\n            \"amount\": \"1000\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"ad2ddfd3-d1bd-4427-9245-6f2a482987f6"},{"name":"Funds Transfer (Validate OTP)","id":"ef14a2d8-432b-4efd-aae1-14671529e10c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":"{{signature}}"},{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":""},"url":"{{url}}/v1/generic/transact","description":"<p>The same endpoint is used to validate OTP for Funds Transfer</p>\n<h4 id=\"endpoint\">Endpoint</h4>\n<ul>\n<li>Primary call: <code>/v1/generic/transact</code></li>\n</ul>\n<h4 id=\"interpreting-the-response\">Interpreting the response</h4>\n<ul>\n<li>Read the reponse</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Service identifier - <code>disbursement</code></td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>null</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>This should hold your encrypted OTP string</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>Reference to the transaction that needs otp validation</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.</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.session_id</td>\n<td>This id is the generated id from NIBSS</td>\n</tr>\n<tr>\n<td>data.provider_response.payment_reference</td>\n<td>This is the transaction reference used</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","generic","transact"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"7a9708b6-14b8-433a-8db6-6dc2af7121eb","name":"Funds Transfer (Validate OTP)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"request_ref\": \"{{ref}}\",\n    \"request_type\": \"disbursement\",\n    \"auth\": {\n        \"secure\": \"{{encrypted-otp}}\"\n    },\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/v1/generic/transact"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 20 Aug 2019 12:09:17 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Successful\",\n    \"message\": \"NIP Transfer: Transaction Successful\",\n    \"code\": null,\n    \"data\": {\n        \"provider_response_code\": \"00\",\n        \"charge_status\": null,\n        \"provider\": \"SunTrust\",\n        \"provider_response\": {\n            \"session_id\": \"000022200225154318222333334432\",\n            \"destination_institution_code\": \"000016\",\n            \"beneficiary_account_name\": \"JOHN DOE JAMES\",\n            \"beneficiary_account_number\": \"3056433222\",\n            \"beneficiary_kyc_level\": \"3\",\n            \"originator_account_name\": \"James Jane\",\n            \"originator_account_number\": \"0001131256\",\n            \"originator_kyc_level\": \"1\",\n            \"narration\": \"My narration\",\n            \"payment_reference\": \"6528864\",\n            \"amount\": \"1000\"\n        },\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": null,\n        \"client_info\": {\n            \"name\": \"TrustPay\",\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\": \"https://trustpay.onepipe.io/img/trustpay_logo_console.png\",\n            \"footer_text\": \"Brought to you by <strong>SunTrust Bank</strong>\",\n            \"options\": [\n                \"BANK.TRANSFER\",\n                \"CARD\"\n            ],\n            \"primary_color\": \"#b37038\",\n            \"secondary_color\": \"#b37038\",\n            \"modal_logo_url\": null,\n            \"primary_button_color\": \"#b37038\",\n            \"modal_background_color\": \"linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)\",\n            \"payment_option_color\": \"rgba(76, 61, 47, 0.08)\",\n            \"payment_option_active_color\": \"rgba(31, 31, 31, 0.25)\",\n            \"app_color\": \"#b37038\"\n        }\n    },\n    \"errors\": null,\n    \"error\": null\n}"}],"_postman_id":"ef14a2d8-432b-4efd-aae1-14671529e10c"}],"id":"0acddb51-6493-4890-b731-82e8eeb3f7b9","description":"<h3 id=\"overview\">Overview</h3>\n<p>Need to carry out funds transfer? Transfer API is available. You can transfer funds from your client bank account to other bank accounts (Intra &amp; Inter).</p>\n<p>This segment describes these endpoint and how to use it.</p>\n","event":[{"listen":"prerequest","script":{"id":"30049ae7-af66-4083-a39b-ebc5fbbc019b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"aa18169e-f889-4c38-a7c2-2de233275fbc","type":"text/javascript","exec":[""]}}],"_postman_id":"0acddb51-6493-4890-b731-82e8eeb3f7b9"}],"id":"4ac2f637-61cc-439b-ab29-b5d023838378","_postman_id":"4ac2f637-61cc-439b-ab29-b5d023838378","description":""},{"name":"UPCOMING...","item":[{"name":"Airtime","item":[{"name":"Airtime","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":"c400f80d-ec61-44d3-bc85-eb481a3d6a26","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":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13500\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Airtime test\",\n    \"transaction_ref_parent\": \"\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/basic","description":"<p>With this you can debit a customer's card and top up a provided number with airtime.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/basic</code></li>\n<li>Read the reponse<ul>\n<li>If the response says you need OTP, the response status would be <code>WaitingForOTP</code>. If so, prompt the user for OTP using the message field in the response you got</li>\n<li>Call <code>/v1/payments/otp</code></li>\n<li>Call <code>/v1/payments/query/[ref]</code> to check status</li>\n</ul>\n</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>: Requires OTP, call <code>/v1/payments/otp</code></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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Set this to determine the type of transaction that would be done. In this case '<code>airtime</code>'.</td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Set this to determine if the encrypted authorization details supplied is a <code>card</code>, a <code>token</code>, an <code>account</code> or something else</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted authorization. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>If this transaction is a retry of a former one, set this value to the transaction reference of the original</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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>A response code for this request. See possible status values above.</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>data.provider_response_code</td>\n<td>The actual response code from the provider's API bubbled up to OnePipe</td>\n</tr>\n<tr>\n<td>data.provider</td>\n<td>The provider that was used to process request</td>\n</tr>\n<tr>\n<td>data.errors</td>\n<td>An array of error objects, in the event of an error</td>\n</tr>\n<tr>\n<td>data.error</td>\n<td>The single most important error object to bother about</td>\n</tr>\n<tr>\n<td>data.error.code</td>\n<td>The code for an error, as defined by the provider</td>\n</tr>\n<tr>\n<td>data.error.message</td>\n<td>The message or description of an error</td>\n</tr>\n<tr>\n<td>data.charge_token</td>\n<td>If the transaction was successful, you'd get a charge-token that can be used to initiate transactions in future without having to request authorization details again</td>\n</tr>\n<tr>\n<td>data.paymentoptions</td>\n<td>An array of possible alternative payment options if the transaction is not yet complete.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"worthy-of-note\">Worthy of note</h4>\n<p>The Telco would be inferred from the mobile number. Needless to say, this would make airtime transactions for ported numbers fail. In future, we'd provide the ability to explicitly specify the Telco via a <code>transaction.payment_code</code> value.</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","urlObject":{"path":["v1","payments","basic"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"08110003-5bdf-49e3-b668-64d9f867a403","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":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13500\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Airtime test\",\n    \"transaction_ref_parent\": \"\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/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\": \"Quickteller\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"4b93c706-2dd0-4791-9654-5cec650ecf85","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13500\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Airtime test\",\n    \"transaction_ref_parent\": \"\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"Quickteller\",\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":"9d9d746f-64b1-4a7b-a96e-a8fc09a665e6","name":"WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" {{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"airtime\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13500\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Airtime test\",\n    \"transaction_ref_parent\": \"\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.mobile-no}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}"},"url":"{{url}}/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"Quickteller\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": []\n    }\n}"}],"_postman_id":"c400f80d-ec61-44d3-bc85-eb481a3d6a26"}],"id":"f1cecf31-c146-4cda-af13-a6e4e3998cc5","_postman_id":"f1cecf31-c146-4cda-af13-a6e4e3998cc5","description":""},{"name":"Bill payment","item":[{"name":"Bill payment","event":[{"listen":"test","script":{"id":"a9315b22-3c5c-47d3-9af6-0214011b75dc","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"bbc09267-2200-4f16-8db5-6d3d1569d680","exec":[""],"type":"text/javascript"}}],"id":"4ad61006-d1fa-4706-8401-8fa10357c3d7","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"bill-payment\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13000\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\",\n    \"payment_code\":\"{{transaction.bills.payment-code}}\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{transaction.bills.customer-id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}\n\n\n"},"url":"{{url}}/v1/payments/basic","description":"<p>With this you can debit a customer's card and pay a bill on their behalf</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/basic</code></li>\n<li>Read the reponse<ul>\n<li>If the response says you need OTP, the response status would be <code>WaitingForOTP</code>. If so, prompt the user for OTP using the message field in the response you got</li>\n<li>Call <code>/v1/payments/otp</code></li>\n<li>Call <code>/v1/payments/query/[ref]</code> to check status</li>\n</ul>\n</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>: Requires OTP, call <code>/v1/payments/otp</code></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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Set this to determine the type of transaction that would be done. In this case '<code>bill-payment</code>'.</td>\n</tr>\n<tr>\n<td>auth.type</td>\n<td>Set this to determine if the encrypted authorization details supplied is a <code>card</code>, a <code>token</code>, an <code>account</code> or something else</td>\n</tr>\n<tr>\n<td>auth.secure</td>\n<td>Encrypted authorization. See <a href=\"#encryption-of-secure-element\">here</a></td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>If this transaction is a retry of a former one, set this value to the transaction reference of the original</td>\n</tr>\n<tr>\n<td>transaction.payment_code</td>\n<td>A unique code for identifying the biller. At the moment the supported list of payment codes is static but we are working to make them available via an endpoint soon.</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</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>A response code for this request. See possible status values above.</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>data.provider_response_code</td>\n<td>The actual response code from the provider's API bubbled up to OnePipe</td>\n</tr>\n<tr>\n<td>data.provider</td>\n<td>The provider that was used to process request</td>\n</tr>\n<tr>\n<td>data.errors</td>\n<td>An array of error objects, in the event of an error</td>\n</tr>\n<tr>\n<td>data.error</td>\n<td>The single most important error object to bother about</td>\n</tr>\n<tr>\n<td>data.error.code</td>\n<td>The code for an error, as defined by the provider</td>\n</tr>\n<tr>\n<td>data.error.message</td>\n<td>The message or description of an error</td>\n</tr>\n<tr>\n<td>data.charge_token</td>\n<td>If the transaction was successful, you'd get a charge-token that can be used to initiate transactions in future without having to request authorization details again</td>\n</tr>\n<tr>\n<td>data.paymentoptions</td>\n<td>An array of possible alternative payment options if the transaction is not yet complete.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","payments","basic"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"9a083ddd-0cf8-42b8-a7f3-50398949f314","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" {{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"bill-payment\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13000\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\",\n    \"payment_code\":\"{{transaction.bills.payment-code}}\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{transaction.bills.customer-id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}\n\n\n"},"url":"{{url}}/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"Quickteller\",\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":"a197c51e-5f5e-496e-9eda-167013df8824","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":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"bill-payment\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13000\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\",\n    \"payment_code\":\"{{transaction.bills.payment-code}}\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{transaction.bills.customer-id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}\n\n\n"},"url":"{{url}}/v1/payments/basic"},"status":"OK","code":200,"_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\": \"Quickteller\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"dd44951b-6028-4ca8-b066-55a5a3a0ae13","name":"WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" {{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"request_type\":\"bill-payment\",\n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\"\n  },\n  \"transaction\": {\n    \"amount\": \"13000\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\",\n    \"payment_code\":\"{{transaction.bills.payment-code}}\",\n    \"customer\":{\n    \t\"customer_ref\": \"{{transaction.bills.customer-id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  }\n}\n\n\n"},"url":"{{url}}/v1/payments/basic"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"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\": \"Quickteller\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": null,\n        \"paymentoptions\": []\n    }\n}"}],"_postman_id":"4ad61006-d1fa-4706-8401-8fa10357c3d7"}],"id":"4259a5ed-0a32-4267-bd0c-28f415c9d41e","_postman_id":"4259a5ed-0a32-4267-bd0c-28f415c9d41e","description":""},{"name":"Webhooks","item":[{"name":"Validation","event":[{"listen":"prerequest","script":{"id":"45423f1e-b1f6-457c-8d51-07f4826714f2","exec":[""],"type":"text/javascript"}}],"id":"53b1dbfe-4407-40dd-ac4a-06de972ee85d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Signature","type":"text","value":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{api-key}}\",\r\n    \"requester\": \"ONECHAPP.ME | PAYDIRECT\"\r\n}\r\n\r\n\r\n"},"url":"{{client-url}}/validate","description":"<p>Please look at the <a href=\"#e882c8b8-ca49-4293-9d87-766fc4319dea\">options endpoint</a> and the <a href=\"#e3410174-c8bd-42ea-9c91-8c70a8a665df\">advanced endpoint</a>.</p>\n<h4 id=\"as-a-result-of-prior-calls-to-these-endpoints\">As a result of prior calls to these endpoints:</h4>\n<ul>\n<li><strong>Payments could originate from an offline channel</strong>: Just before payment is accepted on those offline channels, OnePipe will call this webhook to request latest transaction status and details.</li>\n<li><strong>OnePipe can follow-up on delayed payments</strong>: You can also include a <code>follow_up_reminders</code> array to signify a sequence of reminders to nudge the customer to complete a payment if they haven't by a set timeframe. Before executing those reminders, OnePipe will call this endpoint first.</li>\n</ul>\n<p>Below is the structure of the payload you should expect and how to respond.</p>\n<p>Please note that the header will contain an MD5Hash of the transaction reference and your client secret separated by a semi colon. Use this to validate that the request is from OnePipe</p>\n<p><strong>Signature Header</strong>: <code>Signature: MD5Hash(transaction-ref;client-secret)</code></p>\n<p><strong>Please respond like below</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\n{\n    \"status\": \"Successful\",\n    \"message\": \"The transaction is awaiting payment\",\n    \"transaction\": {\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"Payment for services\",\n        \"amount\":20000,\n        \"status\": \"WaitingForOTP\",\n        \"follow_up\":\"true\",\n        \"customer\": {\n            \"customer_ref\": \"{{customer.id}}\",\n            \"firstname\": \"{{customer.firstname}}\",\n            \"surname\": \"{{customer.surname}}\",\n            \"email\": \"{{customer.email}}\",\n            \"mobile_no\": \"{{customer.mobile-no}}\"\n        }\n    }\n}\n\n</code></pre><h4 id=\"the-meaning-of-the-fields-in-your-response\">The meaning of the fields in your response</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>Just use this to state whether the API call was successful. WARNING: This is not the status of the transaction itself. Supported values would be <code>Successful</code> or 'Failed`.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>A message or description. May be displayed at the offline channel.</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>Return the transaction_ref. Same as was passed in to you.</td>\n</tr>\n<tr>\n<td>transaction.transsaction_desc</td>\n<td>Original description of the transaction. May be displayed at the offline channel.</td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount expected to be collected at the offline channel.</td>\n</tr>\n<tr>\n<td>transaction.status</td>\n<td>The ACTUAL STATUS of the transaction at the moment. Signifying if it's been paid via some other method or if it's been cancelled. This is the real intent of this API call. Supported values are:<br /> Any of the <em><strong>standard responses</strong></em> you could have received from calling the <code>Query</code> endpoint on OnePipe <br /><em><strong>Cancelled</strong></em>: You can also respond with this to indicate that the transaction is cancelled.</td>\n</tr>\n<tr>\n<td>transaction.follow_up</td>\n<td>Set to <code>true</code> if you'd like to keep your follow up config (from the original call) active. Otherwise, set to false.</td>\n</tr>\n<tr>\n<td>transaction.customer</td>\n<td>This is the standard customer object as sent in via your original API call to initiate the transaction.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["validate"],"host":["{{client-url}}"],"query":[],"variable":[]}},"response":[{"id":"7ead566a-0ad2-4d5c-b250-d6a621fe731a","name":"Validate-WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{api-key}}\",\r\n    \"requester\": \"ONECHAPP.ME | PAYDIRECT\"\r\n}\r\n\r\n\r\n"},"url":"{{client-url}}/validate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:20:00 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"status\": \"Successful\",\r\n    \"message\": \"The transaction is awaiting payment\",\r\n    \"transaction\": {\r\n\t    \"transaction_ref\": \"{{transaction-ref}}\",\r\n\t    \"transaction_desc\": \"Payment for services\",\r\n\t    \"amount\":20000,\r\n\t    \"status\": \"WaitingForOTP\",\r\n\t    \"follow_up\":\"true\",\r\n\t    \"customer\": {\r\n\t    \t\"customer_ref\": \"{{customer.id}}\",\r\n\t    \t\"firstname\": \"{{customer.firstname}}\",\r\n\t  \t\t\"surname\": \"{{customer.surname}}\",\r\n\t    \t\"email\": \"{{customer.email}}\",\r\n\t    \t\"mobile_no\": \"{{customer.mobile-no}}\"\r\n\t    }\r\n    }\r\n}\r\n"}],"_postman_id":"53b1dbfe-4407-40dd-ac4a-06de972ee85d"},{"name":"Notification","id":"cfc0680e-e32b-47ce-adef-4c42dd52dbe5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Signature","type":"text","value":"{{signature}}"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{apie-key}}\",\r\n    \"requester\": \"QUICKTELLER.ATM\",\r\n    \"payment\":{\r\n    \t\"original_amount\":1000,\r\n    \t\"paid_amount\":1000,\r\n    \t\"method\":\"cash | card | account\",\r\n    \t\"provider\":\"RAVE | PAYSTACK | QUICKTELLER | PAYDIRECT | QTTRANSFER\",\r\n    \t\"payment_ref\":\"iwwiwueieueiue\",\r\n    \t\"channel\":\"ATM | ONECHAPP.CHAT | etc\",\r\n    \t\"location_name\": \"Ikeja branch\",\r\n    \t\"location_address\": \"Ikeja branch\",\r\n    \t\"location_city\": \"Ikeja branch\",\r\n    \t\"location_state\": \"Ikeja branch\",\r\n    \t\"payment_date\": \"yyyyMMddhhmmss\"\r\n    }\r\n}"},"url":"{{client-url}}/notify","description":"<p>Please look at the <a href=\"#e882c8b8-ca49-4293-9d87-766fc4319dea\">options endpoint</a> and the <a href=\"#e3410174-c8bd-42ea-9c91-8c70a8a665df\">advanced endpoint</a>.</p>\n<h4 id=\"as-a-result-of-prior-calls-to-these-endpoints\">As a result of prior calls to these endpoints:</h4>\n<ul>\n<li><strong>Payments could originate from an offline channel</strong>: When payments are completed via an offline channel, OnePipe will call this endpoint to notify you of completion.</li>\n</ul>\n<p>Below is the structure of the payload you should expect and how to respond.</p>\n<p>Please note that the header will contain an MD5Hash of the transaction reference and your client secret separated by a semi colon. Use this to validate that the request is from OnePipe</p>\n<p><strong>Signature Header</strong>: <code>Signature: MD5Hash(transaction-ref;client-secret)</code></p>\n<p><strong>Please respond like below</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n    \"status\": \"Successful\",\n    \"message\": \"A message signifying payment received.\"\n}\n</code></pre>","urlObject":{"path":["notify"],"host":["{{client-url}}"],"query":[],"variable":[]}},"response":[{"id":"f5d86ec6-f515-44dd-8ed8-d237bd1739dc","name":"Notification-Ack","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{api-key}}\",\r\n    \"requester\": \"QUICKTELLER.ATM\",\r\n    \"payment\":{\r\n    \t\"original_amount\":1000,\r\n    \t\"paid_amount\":1000,\r\n    \t\"method\":\"cash | card | account\",\r\n    \t\"provider\":\"RAVE | PAYSTACK | QUICKTELLER | PAYDIRECT | QTTRANSFER\",\r\n    \t\"payment_ref\":\"iwwiwueieueiue\",\r\n    \t\"channel\":\"ATM | ONECHAPP.CHAT | etc\",\r\n    \t\"location_name\": \"Ikeja branch\",\r\n    \t\"location_address\": \"Ikeja branch\",\r\n    \t\"location_city\": \"Ikeja branch\",\r\n    \t\"location_state\": \"Ikeja branch\",\r\n    \t\"payment_date\": \"yyyyMMddhhmmss\"\r\n    }\r\n}"},"url":"{{client-url}}/listen/notify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:20:00 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"status\": \"Successful\",\r\n    \"message\": \"Ack.\"\r\n}"}],"_postman_id":"cfc0680e-e32b-47ce-adef-4c42dd52dbe5"},{"name":"Follow-up-notification","id":"9f76cc7a-7f34-4b45-9257-15657ccea8b9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{api-key}}\",\r\n    \"follow_up_reminder\": {\r\n\t\t\"minutes_overdue\": 50,\r\n\t\t\"message\": \"Some form of message to tell the person to pay\",\r\n\t\t\"message_channel\":\"pwa-push | email | sms | facebook | twitter | whatsapp\",\r\n\t\t\"status\": \"sent | delivered | failed\"\r\n\t}\r\n}"},"url":"{{client-url}}/follow-up-notif","description":"<p>Please look at the <a href=\"#e882c8b8-ca49-4293-9d87-766fc4319dea\">options endpoint</a> and the <a href=\"#e3410174-c8bd-42ea-9c91-8c70a8a665df\">advanced endpoint</a>.</p>\n<h4 id=\"as-a-result-of-prior-calls-to-these-endpoints\">As a result of prior calls to these endpoints:</h4>\n<ul>\n<li><strong>OnePipe can follow-up on delayed payments</strong>: You can include a <code>follow-up-reminders</code> array to signify a sequence of reminders to nudge the customer to complete a payment if they haven't by a set timeframe. After executing a reminders, OnePipe will call this endpoint to let you know the status.</li>\n</ul>\n<p>Below is the structure of the payload you should expect and how to respond.</p>\n<p>Please note that the header will contain an MD5Hash of the transaction reference and your client secret separated by a semi colon. Use this to validate that the request is from OnePipe</p>\n<p><strong>Signature Header</strong>: <code>Signature: MD5Hash(transaction-ref;client-secret)</code></p>\n<p><strong>Please respond like below</strong>\nBasically, just acknowledge receipt</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n    \"status\": \"successful\",\n    \"message\": \"Ack.\"\n}\n</code></pre>","urlObject":{"path":["follow-up-notif"],"host":["{{client-url}}"],"query":[],"variable":[]}},"response":[{"id":"7014b7e5-50f2-4274-99b1-02855678fb73","name":"follow-up-notif-Ack","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"{{transaction-ref}}\",\r\n    \"client_api_key\":\"{{api-key}}\",\r\n    \"follow_up_reminder\": {\r\n\t\t\"minutes_overdue\": 50,\r\n\t\t\"message\": \"Some form of message to tell the person to pay\",\r\n\t\t\"message_channel\":\"pwa-push | email | sms | facebook | twitter | whatsapp\",\r\n\t\t\"status\": \"sent | delivered | failed\"\r\n\t}\r\n}"},"url":"{{client-url}}/followup-notif"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:20:00 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"status\": \"successful\",\r\n    \"message\": \"Ack.\"\r\n}\r\n"}],"_postman_id":"9f76cc7a-7f34-4b45-9257-15657ccea8b9"}],"id":"2a6c99b5-1128-4ba8-a044-bff92ff67011","event":[{"listen":"prerequest","script":{"id":"39f35406-cc5a-4783-973d-fecb2ba20b79","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"abd251b8-089a-4255-9bb2-bfa7636c34ba","type":"text/javascript","exec":[""]}}],"_postman_id":"2a6c99b5-1128-4ba8-a044-bff92ff67011","description":""},{"name":"Payments","item":[{"name":"Charge","item":[{"name":"Options","event":[{"listen":"test","script":{"id":"3c055150-66b7-41a4-a080-87468af1ab85","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"3b554136-0136-4529-94b2-9289c6526904","exec":[""],"type":"text/javascript"}}],"id":"e882c8b8-ca49-4293-9d87-766fc4319dea","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":"{{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"transaction\": {\n    \"amount\": \"1300\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\", \n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\", \n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/options/charge","description":"<p>The general concept is: Don't lose the sale. The objective is to be able to fulfill the transactions both online and offline; or generallly speaking: 'later'.</p>\n<h4 id=\"here-are-the-scenarios\">Here are the scenarios</h4>\n<p><em><strong>Payment failover</strong></em></p>\n<ul>\n<li>User attempts a payment but it fails</li>\n<li>Your system calls this endpoint</li>\n<li>Your system gets back an array of 5-10 alternative payment options. Including ATM, Agents, Bank branch, etc. With specific instructions on how to complete the transaction at each.</li>\n<li>Your system picks the most relevant (or all) and informs the user that they can still complete the payment via any of the alternative channels</li>\n<li>User goes to the channel and presents a payment reference number</li>\n<li>OnePipe connects to your system in realtime to verify the payment</li>\n<li>Customer makes the payment at the alternative channel</li>\n<li>After payment, OnePipe connects to your system to notify you</li>\n</ul>\n<p><em><strong>Payment follow ups</strong></em></p>\n<ul>\n<li>User starts a payment on your channel</li>\n<li>Your system calls this endpoint</li>\n<li>For whatever reason user abandons cart and doesn't complete the payment</li>\n<li>OnePipe waits x minutes/hours/days and pings back the user, nudging them to complete the payment</li>\n<li>OnePipe can repeat the above as many times as you specify and at whatever intervals</li>\n</ul>\n<p><em><strong>Here's how it works</strong></em></p>\n<p>You can call this endpoint with a particular transaction's details, and OnePipe will respond with an array of possible options with which the customer can fulfill the payment afterwards.. </p>\n<p>The options availble at the moment include</p>\n<ul>\n<li>ATMs that have the Quickteller service</li>\n<li>Bank branches that have the PAYDirect service (W.I.P.)</li>\n<li>Paypoint Agents (W.I.P.)</li>\n<li>Other 3rd party cash agents (W.I.P)</li>\n<li>A Twitter chatbot</li>\n<li>A Generic standalone chatbot</li>\n<li>A Facebook Messenger chatbot</li>\n<li>A WhatsApp chatbot (W.I.P.)</li>\n</ul>\n<p>We are constantly looking for more possible payment options, therefore this list will be a growing one. As it increases, the documentation will be updated.</p>\n<p>On calling this endpoint, the customer would receive a text message with instructions to view the available options. You'd also get back an array of the supported options.</p>\n<p>You can also include a <code>follow_up_reminders</code> array to signify a sequence of reminders to nudge the customer to complete a payment if they haven't by a set timeframe.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/options/charge</code></li>\n<li>Read the reponse and retrieve the <code>data.paymentoptions</code> array.</li>\n</ul>\n<h4 id=\"what-could-happen-afterwards\">What could happen afterwards</h4>\n<ul>\n<li>If a payment originates via an offline channel, OnePipe will call your validation url before accepting that payment. Please read about validation <a href=\"#53b1dbfe-4407-40dd-ac4a-06de972ee85d\">here</a></li>\n<li>Once a payment is completed at an offline channel, OnePipe will call your notification url to let you know. Please read about notification url <a href=\"#cfc0680e-e32b-47ce-adef-4c42dd52dbe5\">here</a>.</li>\n<li>If OnePipe executes a follow-up on your behalf, it would call your follow-up-notif endpoint to let you know the status. Please read about implementing the follow-up-notification webhook <a href=\"#9f76cc7a-7f34-4b45-9257-15657ccea8b9\">here</a>.</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>[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>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. Must be uniquely generated for every single call</td>\n</tr>\n<tr>\n<td>request_type</td>\n<td>Set this to determine the type of transaction that would be done. Supported values are <code>charge</code>, <code>airtime</code>, <code>bill-payment</code></td>\n</tr>\n<tr>\n<td>transaction.amount</td>\n<td>Amount in kobo</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref</td>\n<td>A unique reference for this specific transaction. Must be unique for this call. You could simply set this to same value as the request_ref</td>\n</tr>\n<tr>\n<td>transaction.transaction_desc</td>\n<td>A description of the transaction</td>\n</tr>\n<tr>\n<td>transaction.transaction_ref_parent</td>\n<td>If this transaction is a retry of a former one, set this value to the transaction reference of the original</td>\n</tr>\n<tr>\n<td>customer.customer_ref</td>\n<td>A unique reference with which you identify this customer on your systems. Could be an account number or ID of sorts</td>\n</tr>\n<tr>\n<td>customer.firstname</td>\n<td>First name of the customer</td>\n</tr>\n<tr>\n<td>customer.surname</td>\n<td>Surname of the customer</td>\n</tr>\n<tr>\n<td>customer.email</td>\n<td>Email address of the customer</td>\n</tr>\n<tr>\n<td>customer.mobile_no</td>\n<td>Mobile number of the customer</td>\n</tr>\n<tr>\n<td>options.validation_url</td>\n<td>An endpoint you'd expose. OnePipe will call this endpoint to validate that a trxn is yet to be paid before attempting to process via any of the offline channels</td>\n</tr>\n<tr>\n<td>options.notification_url</td>\n<td>An endpoint you'd expose. OnePipe will call this endpoint after a payment has been processed at an offline (or alternative) channel to let you know to close off the transaction</td>\n</tr>\n<tr>\n<td>options.redirect_url</td>\n<td>A url you will expose. In the event that OnePipe processes the transaction at an online channel and you'd like to redirect the user to some page on your site afterwards</td>\n</tr>\n<tr>\n<td>options.follow_up</td>\n<td>Set this to true if you'd like the follow up feature</td>\n</tr>\n<tr>\n<td>options.follow_up_reminders []</td>\n<td>An array of timed reminders you'd like to trigger if the user is yet to pay. OnePipe will call your {validation_url} before administering a follow up reminder</td>\n</tr>\n<tr>\n<td>options.follow_up_reminders[].minutes_overdue</td>\n<td>How many minutes after the original transaction timestamp should the follow up behaviour trigger?</td>\n</tr>\n<tr>\n<td>options.follow_up_reminders[].message</td>\n<td>The message to deliver to the user when this follow-up is triggered</td>\n</tr>\n<tr>\n<td>options.follow_up_reminders[].message_channel</td>\n<td>Channel to deliver the message through. Supported values are push notifications <code>pwa-push</code> (for customers who activated the payment assistant chatbot) and emails <code>email</code> at the moment</td>\n</tr>\n<tr>\n<td>options.follow_up_reminders[].action</td>\n<td>And endpoint you'd expose. OnePipe will ping this endpoint after sending a reminder to let you know that it has</td>\n</tr>\n<tr>\n<td>options.meta[]</td>\n<td>A series of key-value pairs that you can tag the transaction with. This would be used to create all sorts of advanced reports for you</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>A response code for this request. See possible status values above.</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>data.provider_response_code</td>\n<td>The actual response code from the provider's API bubbled up to OnePipe</td>\n</tr>\n<tr>\n<td>data.provider</td>\n<td>The provider that was used to process request</td>\n</tr>\n<tr>\n<td>data.errors</td>\n<td>An array of error objects, in the event of an error</td>\n</tr>\n<tr>\n<td>data.error</td>\n<td>The single most important error object to bother about</td>\n</tr>\n<tr>\n<td>data.error.code</td>\n<td>The code for an error, as defined by the provider</td>\n</tr>\n<tr>\n<td>data.error.message</td>\n<td>The message or description of an error</td>\n</tr>\n<tr>\n<td>data.paymentoptions</td>\n<td>An array of possible alternative payment options if the transaction is not yet complete.</td>\n</tr>\n<tr>\n<td>data.paymentoptions[].option</td>\n<td>A keyword to describe this option</td>\n</tr>\n<tr>\n<td>data.paymentoptions[].action</td>\n<td>A url which when clicked will trigger the option. Some options may not have this.</td>\n</tr>\n<tr>\n<td>data.paymentoptions[].message</td>\n<td>A message to deliver to the customer to let them to know to take the required action</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","payments","options","charge"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"bbf576de-9744-401d-8934-32bb8aea345c","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"transaction\": {\n    \"amount\": \"1300\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\", \n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\", \n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/options/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:26:35 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"Successful\",\r\n    \"message\": \"the transaction was successful\",\r\n    \"data\":{\r\n    \t\"provider_responde_code\":\"00\",\r\n\t    \"errors\": null,\r\n\t    \"error\": null,\r\n\t    \"paymentoptions\": [\r\n\t    \t{\r\n\t\t    \t\"option\": \"ONECHAPP.ME\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also click this link to pay very quickly and chat with me to answer your questions. {https://onechapp.me/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.WHATSAPP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via WhatsApp very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/wa/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.FB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Facebook Messenger very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/fb/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.TWITTER\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Twitter very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/tw/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.ATM\",\r\n\t\t\t\t\"message\": \"Choose Quickteller on the ATM. Select 'Pay bills'. Select 'Others'. When asked for biller ref, enter {{options.atm-payment-code}}. When asked for customer reference, enter {{transaction.transaction-ref}}. Afterwards follow the prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.WEB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_Quickteller.com/{options.web-biller-name}}}\",\r\n\t\t\t\t\"message\": \"Go to Quickteller.com/{options.web-biller-name}. Then provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.APP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_download quickteller app}}\",\r\n\t\t\t\t\"message\": \"Launch the Quickteller app. Search for {options.app-biller-name}. Provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.USSD\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_open dialer to the right code}}\",\r\n\t\t\t\t\"message\": \"Dial *322*1*{{options.ussd-payment-code}}*{{transaction.amount}}# and follow the prompt.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"INTERSWITCH.BRANCHES\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any bank branch, ask for the PAYDirect desk and say you would like to make a OnePipe payment via PAYDirect. When asked what payment item, please say {options.branch-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.PAYPOINT\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any Quickteller Paypoint agent and say you would like to make a OnePipe payment. When asked what payment item, please say {options.agent-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"BANK.TRANSFER\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Please transfer to {{beneficiary.account-number}} in {{beneficiary.account-bank-name}} on behalf of {{account-name}}. Please use {{transaction.transaction-ref}} as the narration\"\r\n\t\t    }\r\n\t\t]\r\n\t }\r\n}"},{"id":"d1da53cc-f1f0-4648-ac7e-e3f5919de806","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","type":"text","value":"Bearer {{api-key}}"},{"key":"Signature","type":"text","value":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\",\n  \"transaction\": {\n    \"amount\": \"1300\",\n    \"transaction_ref\": \"{{transaction-ref}}\",\n    \"transaction_desc\": \"Payment for services\",\n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\", \n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\", \n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/options/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"Failed\",\r\n    \"message\": \"An error occured\",\r\n    \"data\":{\r\n    \t\"provider_responde_code\":\"00\",\r\n\t    \"errors\": [\r\n\t\t\t{\r\n\t\t\t\t\"code\": \"70013\",\r\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"code\": \"70013\",\r\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"error\": {\r\n\t\t\t\"code\": \"70013\",\r\n\t\t\t\"message\": \"70013 - R:Details of the primary error.\"\r\n\t\t},\r\n\t    \"paymentoptions\": []\r\n\t }\r\n}"}],"_postman_id":"e882c8b8-ca49-4293-9d87-766fc4319dea"},{"name":"Advanced","event":[{"listen":"test","script":{"id":"b14654f3-d441-401f-9b5b-9f1ea044c5e1","exec":[""],"type":"text/javascript"}},{"listen":"prerequest","script":{"id":"57eab74e-efc9-48c7-b45a-12e388306fe1","exec":[""],"type":"text/javascript"}}],"id":"e3410174-c8bd-42ea-9c91-8c70a8a665df","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":" {{signature}}"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\", \n    \"auth_provider\": \"Paystack\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\",\n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\",\n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa_push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/advanced/charge","description":"<p>With this endpoint, you can debit a customer's card for a payment and obtain a token for future use if successful. You can also embed an <code>options</code> object to take advatage of the failover &amp; follow-up mechanisms available with OnePipe. Please take a look at <code>Advanced - options</code>. This endpoint basically combines that with a <code>Basic - charge</code>.</p>\n<p>The endpoint also lets you explicitly specify the provider you'd like to use to process your transaction. Supported providers include:</p>\n<ul>\n<li>Paystack</li>\n<li>Rave by Flutterway (RavePay)</li>\n<li>Quickteller</li>\n</ul>\n<p>If you don't specify one, it would default to the provider you have configured on your console.</p>\n<h4 id=\"sequence-of-calls\">Sequence of calls</h4>\n<ul>\n<li>Primary call: <code>/v1/payments/advanced/charge</code></li>\n<li>Read the reponse<ul>\n<li>If the response says you need OTP, the response status would be <code>WaitingForOTP</code>. If so, prompt the user for OTP using the message field in the response you got</li>\n<li>Call <code>/v1/payments/otp</code></li>\n<li>Call <code>/v1/payments/query/[ref]</code> to check status</li>\n<li>If you get <strong>anything</strong> other than Successful, you'd have a <code>data.paymentoptions</code> array in the response. To see what you can do with this, please look at <a href=\"#e882c8b8-ca49-4293-9d87-766fc4319dea\">the options endpoint</a></li>\n</ul>\n</li>\n</ul>\n<h4 id=\"what-could-happen-afterwards\">What could happen afterwards</h4>\n<ul>\n<li>If a payment originates via an offline channel, OnePipe will call your validation url before accepting that payment. Please read about validation <a href=\"#53b1dbfe-4407-40dd-ac4a-06de972ee85d\">here</a></li>\n<li>Once a payment is completed at an offline channel, OnePipe will call your notification url to let you know. Please read about notification url <a href=\"#cfc0680e-e32b-47ce-adef-4c42dd52dbe5\">here</a>.</li>\n<li>If OnePipe executes a follow-up on your behalf, it would call your follow-up-notif endpoint to let you know the status. Please read about implementing the follow-up-notification webhook <a href=\"#9f76cc7a-7f34-4b45-9257-15657ccea8b9\">here</a>.</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>: Requires OTP, call <code>/v1/payments/otp</code></li>\n<li><strong>[Anything else]</strong>: Error. Read the errors object(s)</li>\n</ul>\n<h4 id=\"full-list-of-supported-status-values\">Full list of supported status values</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Processing</td>\n<td>The attempt to debit never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>WaitingForOTP</td>\n<td>Still waiting for the OTP to be supplied. NOTE: If left too long, it's possible the OTP may have expired.</td>\n</tr>\n<tr>\n<td>ProcessingOTP</td>\n<td>The attempt to validate OTP never came back with a response. WARNING: Don't take this to mean the transaction failed.</td>\n</tr>\n<tr>\n<td>Successful</td>\n<td>Was processed successfully</td>\n</tr>\n<tr>\n<td>Failed</td>\n<td>A definite transaction failure. Read the error(s)</td>\n</tr>\n<tr>\n<td>OfflineValidated</td>\n<td>An attempt to pay via an offline channel was initiated but hasn't been concluded.</td>\n</tr>\n<tr>\n<td>OfflineNotified</td>\n<td>The transaction has successfully been paid via an offline channel.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>NOTE</strong>: Please see information on how to compute the <code>Signature</code> header <a href=\"#authentication-headers\">here</a> </p>\n","urlObject":{"path":["v1","payments","advanced","charge"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"20a1937c-2565-4dc1-925b-af46135591ce","name":"Successful","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer {{api-key}}"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\", \n    \"auth_provider\": \"Paystack\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\",\n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\",\n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa_push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Sun, 09 Sep 2018 22:26:35 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Server","value":"Kestrel","name":"Server","description":"A name for the server"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"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\": \"RAVE\",\n        \"errors\": null,\n        \"error\": null,\n        \"charge_token\": \"Kz5Dev7BenV9HmLNB\",\n        \"paymentoptions\": []\n    }\n}"},{"id":"53e3d448-e952-4d79-9bcb-e20f42bae2fc","name":"WaitingForOTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":"{{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\", \n    \"auth_provider\": \"Paystack\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\",\n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\",\n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa_push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}\n\n"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"WaitingForOTP\",\r\n    \"message\": \"Please enter the OTP that was sent to 234****1234.\",\r\n    \"data\":{\r\n    \t\"provider_responde_code\":\"T0\",\r\n    \t\"provider\": \"RAVEPAY\",\r\n\t    \"errors\": null,\r\n\t    \"error\": null,\r\n\t    \"paymentoptions\": [\r\n\t    \t{\r\n\t\t    \t\"option\": \"ONECHAPP.ME\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also click this link to pay very quickly and chat with me to answer your questions. {https://onechapp.me/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.WHATSAPP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via WhatsApp very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/wa/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.FB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Facebook Messenger very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/fb/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.TWITTER\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Twitter very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/tw/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.ATM\",\r\n\t\t\t\t\"message\": \"Choose Quickteller on the ATM. Select 'Pay bills'. Select 'Others'. When asked for biller ref, enter {{options.atm-payment-code}}. When asked for customer reference, enter {{transaction.transaction-ref}}. Afterwards follow the prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.WEB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_Quickteller.com/{options.web-biller-name}}}\",\r\n\t\t\t\t\"message\": \"Go to Quickteller.com/{options.web-biller-name}. Then provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.APP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_download quickteller app}}\",\r\n\t\t\t\t\"message\": \"Launch the Quickteller app. Search for {options.app-biller-name}. Provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.USSD\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_open dialer to the right code}}\",\r\n\t\t\t\t\"message\": \"Dial *322*1*{{options.ussd-payment-code}}*{{transaction.amount}}# and follow the prompt.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"INTERSWITCH.BRANCHES\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any bank branch, ask for the PAYDirect desk and say you would like to make a OnePipe payment via PAYDirect. When asked what payment item, please say {options.branch-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.PAYPOINT\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any Quickteller Paypoint agent and say you would like to make a OnePipe payment. When asked what payment item, please say {options.agent-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"BANK.TRANSFER\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Please transfer to {{beneficiary.account-number}} in {{beneficiary.account-bank-name}} on behalf of {{account-name}}. Please use {{transaction.transaction-ref}} as the narration\"\r\n\t\t    }\r\n\t\t]\r\n\t }\r\n}"},{"id":"fba0e20b-7cf8-422e-986c-253d3f7cc282","name":"Failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{api-key}}","type":"text"},{"key":"Signature","value":" {{signature}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"request_ref\":\"{{request-ref}}\", \n  \"request_type\":\"charge\", \n  \"auth\": {\n    \"type\": \"card\",\n    \"secure\": \"{{secure.card}}\", \n    \"auth_provider\": \"Paystack\"\n  },\n  \"transaction\": {\n    \"amount\": \"105000\", \n    \"transaction_ref\": \"{{transaction-ref}}\", \n    \"transaction_desc\": \"Payment for services\", \n    \"transaction_ref_parent\": \"\", \n    \"customer\":{\n    \t\"customer_ref\": \"{{customer.id}}\",\n    \t\"firstname\": \"{{customer.firstname}}\",\n  \t\t\"surname\": \"{{customer.surname}}\",\n    \t\"email\": \"{{customer.email}}\",\n    \t\"mobile_no\": \"{{customer.mobile-no}}\"\n    }\n  },\n  \"options\": {\n  \t\"validation_url\":\"{{validation-url}}\",\n  \t\"notication_url\":\"{{notification-url}}\",\n  \t\"redirect_url\": \"{{redirect-url}}\",\n  \t\"follow_up\": \"true\",\n  \t\"follow_up_reminders\": [\n\t  \t{\n\t\t\t\"minutes_overdue\": 30,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa-push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 40,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"email\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}, \n\t\t{\n\t\t\t\"minutes_overdue\": 50,\n\t\t\t\"message\": \"Some form of message to tell the person to pay\",\n\t\t\t\"message_channel\":\"pwa_push\",\n\t\t\t\"action\": \"{{follow-up-url}}\"\n\t\t}\n\t],\n  \t\"meta\": [\n\t\t{\"location\":\"Lagos\"},\n\t\t{\"age\":\"below 18\"},\n\t\t{\"product_category\":\"data bundle\"}\n\t]\n  }\n}"},"url":"{{url}}/v1/payments/advanced/charge"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"Failed\",\r\n    \"message\": \"There was an error processing your transaction\",\r\n    \"data\":{\r\n    \t\"provider_responde_code\": \"91\",\r\n        \"provider\": \"Quickteller\",\r\n\t    \"errors\": [\r\n\t\t\t{\r\n\t\t\t\t\"code\": \"70013\",\r\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"code\": \"70013\",\r\n\t\t\t\t\"message\": \"70013 - R:Details of this error\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"error\": {\r\n\t\t\t\"code\": \"70013\",\r\n\t\t\t\"message\": \"70013 - R:Details of the primary error.\"\r\n\t\t},\r\n\t    \"paymentoptions\": [\r\n\t    \t{\r\n\t\t    \t\"option\": \"ONECHAPP.ME\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also click this link to pay very quickly and chat with me to answer your questions. {https://onechapp.me/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.WHATSAPP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via WhatsApp very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/wa/98ihju}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.FB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Facebook Messenger very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/fb/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"ONECHAPP.TWITTER\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_start_OneChapp_payment_intent}}\",\r\n\t\t\t\t\"message\": \"Hello {name}, for the payment of {amount} for {description}, you can pay to our {bank}, {account} account. You can also pay us via Twitter very quickly and chat with me to answer your questions. Just click here {https://onechapp.me/tw/98ihju}. The transaction reference is {{transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.ATM\",\r\n\t\t\t\t\"message\": \"Choose Quickteller on the ATM. Select 'Pay bills'. Select 'Others'. When asked for biller ref, enter {{options.atm-payment-code}}. When asked for customer reference, enter {{transaction.transaction-ref}}. Afterwards follow the prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.WEB\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_Quickteller.com/{options.web-biller-name}}}\",\r\n\t\t\t\t\"message\": \"Go to Quickteller.com/{options.web-biller-name}. Then provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.APP\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_download quickteller app}}\",\r\n\t\t\t\t\"message\": \"Launch the Quickteller app. Search for {options.app-biller-name}. Provide {{transaction.transaction-ref}}. Afterwards, follow prompts to complete.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.USSD\",\r\n\t\t    \t\"action\": \"{{a_deeplink_to_open dialer to the right code}}\",\r\n\t\t\t\t\"message\": \"Dial *322*1*{{options.ussd-payment-code}}*{{transaction.amount}}# and follow the prompt.\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"INTERSWITCH.BRANCHES\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any bank branch, ask for the PAYDirect desk and say you would like to make a OnePipe payment via PAYDirect. When asked what payment item, please say {options.branch-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"QUICKTELLER.PAYPOINT\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Visit any Quickteller Paypoint agent and say you would like to make a OnePipe payment. When asked what payment item, please say {options.agent-biller-name} then provide {{transaction.transaction-ref}}\"\r\n\t\t    },\r\n\t\t    {\r\n\t\t    \t\"option\": \"BANK.TRANSFER\",\r\n\t\t    \t\"action\": \"{{empty}}\",\r\n\t\t\t\t\"message\": \"Please transfer to {{beneficiary.account-number}} in {{beneficiary.account-bank-name}} on behalf of {{account-name}}. Please use {{transaction.transaction-ref}} as the narration\"\r\n\t\t    }\r\n\t\t]\r\n\t }\r\n}"}],"_postman_id":"e3410174-c8bd-42ea-9c91-8c70a8a665df"}],"id":"8ba1f073-da5c-42a3-a017-e7fb641f6eba","_postman_id":"8ba1f073-da5c-42a3-a017-e7fb641f6eba","description":""}],"id":"86f244f0-b095-4923-acc1-cc39b7ba5302","_postman_id":"86f244f0-b095-4923-acc1-cc39b7ba5302","description":""}],"id":"cf5f56ac-1be2-4d1c-95c8-65cf06b10438","_postman_id":"cf5f56ac-1be2-4d1c-95c8-65cf06b10438","description":""}],"event":[{"listen":"prerequest","script":{"id":"34efbe6b-9023-4125-9660-13897c3e073b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"092ac582-a88d-429c-8ec8-a4d0b9bd92e3","type":"text/javascript","exec":[""]}}]}