{"info":{"_postman_id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","name":"ERCASPAY DEVELOPER DOCUMENTATION","description":"<html><head></head><body><p>Official API Documentation for ErcasPay V1 APIs</p>\n<p>Architecture: REST</p>\n<p>Data Format: JSON</p>\n<p>Sandbox Base url: <a href=\"https://api-staging.ercaspay.com/\">https://api-staging.ercaspay.com/api/v1</a></p>\n<p>Live Base url: <a href=\"https://\">https://api.ercaspay.com/api/v1</a></p>\n<h2 id=\"request-headers\">Request Headers</h2>\n<p>* Accept: This field is required &amp; must always be set to application/json</p>\n<p>* Content-Type: This field is required &amp; must always be set to application/json</p>\n<p>* Authorization: * The initiate transaction endpoint requires a key to authorize the request. * Authorization is a combination of Bearer and your secret key, e.g. Bearer ECRS-TEST-SKLVbpD1J7DG9fwwdyddcAkEysTKsYD564S1NDSUBS.</p>\n<p>Keys can be obtained from your ErcasPay dashboard under developer settings. Kindly ensure that your authorization keys are kept safe, secure &amp; shared only when absolutely necessary.</p>\n<h2 id=\"sample\">Sample:</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"Accept\": \"application/json\",\n    \"Content-Type\":\" application/json\",\n    \"Authorization\":\"Bearer {{Your secret Key}}\n}\n\n</code></pre>\n<h2 id=\"response\">Response:</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"success\",\n    \"responseBody\": []\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestSuccessful</td>\n<td>boolean</td>\n<td>This indicates if the request was successful or not with a true or false response</td>\n</tr>\n<tr>\n<td>responseMessage</td>\n<td>string</td>\n<td>This can be any message attached to the transaction</td>\n</tr>\n<tr>\n<td>responseCode</td>\n<td>string</td>\n<td>This can be 'success', 'failed' or 'pending'</td>\n</tr>\n<tr>\n<td>responseBody</td>\n<td>array</td>\n<td>Contains relevant response data for the transaction</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"getting-started\">Getting started</h1>\n<p>To get started, sign up on Ercas by visiting <a href=\"https://ercaspay.com\">https://ercaspay.com</a> and verify your account. In the meantime, you can still make integrations with our APIs in test mode, you'll be able to switch to live mode once your account has been approved.</p>\n<h1 id=\"authorization\"><strong>Authorization</strong></h1>\n<p>There are two \"modes\" of operation for your ErcasPay account:</p>\n<ol>\n<li><p><strong>Live Mode</strong>: Real money, real transactions, real effects. Only switch to this after you've tested your integration thoroughly.</p>\n</li>\n<li><p><strong>Test Mode</strong>: No real money is involved. Only our test cards and bank accounts can be used. We'll still send webhooks and email notifications, and most of the API functions are the same.</p>\n</li>\n</ol>\n<p>Live Dashboard Url: <a href=\"https://merchant.ercaspay.com/\">https://merchant.ercaspay.com</a></p>\n<p>Test Dashboard Url: <a href=\"http://merchant-staging.ercaspay.com/\">http://merchant-staging.ercaspay.com/</a></p>\n<p><strong>Test keys will always have</strong> TEST **in the prefix (for example,`ERCAS-TEST-PK)</p>\n<p><strong>Live keys will always have</strong> LIVE **in the prefix (for example,ERCAS-LIVE-PK)</p>\n<p>Every Api request on behalf of a business should have an Authorization header in the following format</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    Authorization: Bearer TestKey\n}\n\n</code></pre>\n<h1 id=\"https-status-codes\">HTTPS Status Codes</h1>\n<h5 id=\"succesful-codes\"><strong>Succesful Codes</strong></h5>\n<ul>\n<li><p>200 = <strong>OK</strong>. This implies that the result of an operation (API call) was successful</p>\n</li>\n<li><p>201 = <strong>Created</strong>. A 201 status code indicates that a request was successful and as a result, a resource has been created (for example, successful registration of a new user)</p>\n</li>\n</ul>\n<h5 id=\"error-codes\"><strong>Error Codes</strong></h5>\n<p>When working with our API, you'll encounter some kinds of errors e.g, authorization errors, validation errors, server errors, Watu errors, and provider errors. Each type of error comes with an appropriate HTTP status code.</p>\n<blockquote>\n<p><em>400 =</em> <em><strong>Bad Request</strong></em> - this response code serves as a generic error code for failed validation requests. Validation errors are returned when your request fails one or more validation rules. Examples include not passing required parameters. They come with a 400 Bad Request status code </p>\n</blockquote>\n<blockquote>\n<p><em>401 =</em> <em><strong>Unauthorized</strong></em> - this response code is sent when the server encounters issues related to authentication/authorization such as CHECKSUM MISMATCH, UNKNOWN CLIENT, FRESH ACCESS TOKEN REQUIRED etc. You'll get authorization errors when you don't provide your secret key to authorize an API call, or when the key provided isn't correct </p>\n</blockquote>\n<blockquote>\n<p><em>403 =</em> <em><strong>Forbidden / Access Denied</strong></em> - this response code is sent when the server understood the request but refuses to authorize it. A request might be forbidden for reasons related or unrelated to credentials. For example - INCOMPLETE REQUEST PARAMETERS REQUIRED FOR AUTHENTICATION. </p>\n</blockquote>\n<blockquote>\n<p><em>404 =</em> <em><strong>Not Found</strong></em> - this response code is sent on attempt to locate a resource/route that doesn't or no longer exist(s) </p>\n</blockquote>\n<blockquote>\n<p><em>500</em> = <strong>Internal Server Error</strong> - this response code is sent as a generic error code for failed requests that our server takes full responsibility for. </p>\n</blockquote>\n<h1 id=\"libraries-plugins\">Libraries &amp; Plugins</h1>\n<h2 id=\"officially-supported\">Officially Supported</h2>\n<p>To make integrations more seamless for developers, official libraries and plugins are available for ercaspay across multiple languages and frameworks.</p>\n<ul>\n<li><p><strong>Javascript SDK:</strong> <a href=\"https://www.npmjs.com/package/@capitalsage/ercaspay-js\">https://www.npmjs.com/package/@capitalsage/ercaspay-js</a></p>\n</li>\n<li><p><strong>NodeJS:</strong> <a href=\"https://www.npmjs.com/package/@capitalsage/ercaspay-nodejs\">https://www.npmjs.com/package/@capitalsage/ercaspay-nodejs</a></p>\n</li>\n<li><p><strong>React Native:</strong> <a href=\"https://www.npmjs.com/package/@capitalsage/ercaspay-react-native-checkout\">https://www.npmjs.com/package/@capitalsage/ercaspay-react-native-checkout</a></p>\n</li>\n<li><p><strong>Flutter:</strong> <a href=\"https://pub.dev/packages/ercaspay\">https://pub.dev/packages/ercaspay</a></p>\n</li>\n</ul>\n<h5 id=\"feedback--support\">Feedback / Support</h5>\n<p>If you experience any issues while using these libraries, please contact us at <a href=\"https://null\">support@ercaspay.com</a>.</p>\n<h2 id=\"community-supported\">Community Supported</h2>\n<p>Our dedicated community of developers maintains open-source libraries in various languages for integrating Ercaspay. Here are some you can use.</p>\n<ul>\n<li><p><strong>Javascript SDK:</strong> <a href=\"https://www.npmjs.com/package/ercaspay-sdk\">www.npmjs.com/package/ercaspay-sdk</a></p>\n</li>\n<li><p><strong>Angular:</strong> <a href=\"https://www.npmjs.com/package/@decodeblock/ercaspay-angular\">https://www.npmjs.com/package/@decodeblock/ercaspay-angular</a></p>\n</li>\n<li><p><strong>Ercas For Saas (Reflex.dev):</strong> <a href=\"https://github.com/Omotunde2005/Ercas-for-saas\">https://github.com/Omotunde2005/Ercas-for-saas</a></p>\n</li>\n<li><p><strong>Python:</strong> <a href=\"https://www.piwheels.org/project/ercaspay/\">https://www.piwheels.org/project/ercaspay/</a></p>\n</li>\n<li><p><strong>.Net:</strong> <a href=\"https://www.nuget.org/packages/ErcasPay.12.16.24.002\">https://www.nuget.org/packages/ErcasPay.12.16.24.002</a></p>\n</li>\n</ul>\n<h5 id=\"feedback--support-1\">Feedback / Support</h5>\n<p>If you experience any issues with these libraries, please contact the developer or open an issue in the repository for assistance.</p>\n<h1 id=\"test-cards\"><strong>Test Cards</strong></h1>\n<p>The following test cards are available</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>CARD TYPE</strong></th>\n<th><strong>PAN</strong></th>\n<th><strong>EXPIRY DATE</strong></th>\n<th><strong>PIN</strong></th>\n<th><strong>CVV</strong></th>\n<th><strong>OTP</strong></th>\n<th><strong>STATUS</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MASTERCARD</td>\n<td>2223000000000007</td>\n<td>01/39</td>\n<td>1234</td>\n<td>111</td>\n<td>-</td>\n<td>Success</td>\n</tr>\n<tr>\n<td>VISA</td>\n<td>4000000000002503</td>\n<td>03/50</td>\n<td>1111</td>\n<td>111</td>\n<td>-</td>\n<td>Success</td>\n</tr>\n<tr>\n<td>VERVE</td>\n<td>5060990580000217499</td>\n<td>03/50</td>\n<td>1111</td>\n<td>111</td>\n<td>123456</td>\n<td>Success</td>\n</tr>\n<tr>\n<td>VERVE</td>\n<td>5061830100001895</td>\n<td>01/40</td>\n<td>1111</td>\n<td>111</td>\n<td>123456</td>\n<td>Failure - Timeout calling issuing bank</td>\n</tr>\n<tr>\n<td>VERVE</td>\n<td>5060990580000000390</td>\n<td>03/50</td>\n<td>1111</td>\n<td>111</td>\n<td>123456</td>\n<td>Failure - Insufficient Funds</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Getting started","slug":"getting-started"},{"content":"Authorization","slug":"authorization"},{"content":"HTTPS Status Codes","slug":"https-status-codes"},{"content":"Libraries & Plugins","slug":"libraries-plugins"},{"content":"Test Cards","slug":"test-cards"}],"owner":"26288419","collectionId":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","publishedId":"2sA2xiWrhA","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2024-03-17T08:51:56.000Z"},"item":[{"name":"Checkout","item":[{"name":"Initiate Transaction","id":"9d085e38-8498-4c9a-8ad4-4358c0c9f29f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 10,\n    \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n    \"paymentMethods\": \"card,bank-transfer,ussd,qrcode\",\n    \"customerName\": \"John Doe\",\n    \"customerEmail\": \"johndoe@gmail.com\",\n    \"customerPhoneNumber\": \"09061626364\",\n    \"redirectUrl\": \"https://omolabakeventures.com\",\n    \"description\": \"The description for this payment goes here\",\n    \"currency\": \"NGN\",\n    \"feeBearer\": \"customer\",\n    \"isCardTokenized\" : true,\n    \"metadata\": {\n        \"firstname\": \"Ola\",\n        \"lastname\": \"Benson\",\n        \"email\": \"iie@mail.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/initiate","description":"<p>This endpoint allows you to initialize a transaction on ErcasPay and it returns a checkout URL which you can load within a browser to display the payment form to your customer. The checkout URL has an expiry time of 90 minutes.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Mandatory &amp; Optional</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>amount</td>\n<td>M</td>\n<td>The amount to be paid by the customer. For local transaction, amount should be above 100 naira</td>\n</tr>\n<tr>\n<td>paymentReference</td>\n<td>M</td>\n<td>Merchant's Unique reference for the transaction.</td>\n</tr>\n<tr>\n<td>paymentMethods</td>\n<td>M</td>\n<td>Comma seperated string of payment methods (card, bank-transfer, qrcode, ussd, etc.). If not specified, all available payment methods enabled on the merchant dashboard will be used.</td>\n</tr>\n<tr>\n<td>customerName</td>\n<td>M</td>\n<td>Full name of the customer.</td>\n</tr>\n<tr>\n<td>customerEmail</td>\n<td>M</td>\n<td>Email address of the customer.</td>\n</tr>\n<tr>\n<td>customerPhoneNumber</td>\n<td>O</td>\n<td>Phone number of the customer.</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>M</td>\n<td>The currency you want to receive payment in. If this is not specified, we use NGN as the default currency. A list of supported currencies are available on the landing page.  <br />  <br /><strong>Note :</strong> Only card supports internaltional currency.</td>\n</tr>\n<tr>\n<td>feeBearer</td>\n<td>O</td>\n<td>The bearer of the charge (either customer or merchant). If not selected, we use the set default on the merchant account. This can be found under settings -&gt; charges</td>\n</tr>\n<tr>\n<td>redirectUrl</td>\n<td>O</td>\n<td>A URL which user will be redirected to, on completion of the payment, if not specified, the default merchant redirect url will be used.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>O</td>\n<td>Description for the transaction.</td>\n</tr>\n<tr>\n<td>isCardTokenized</td>\n<td>O (true/false)</td>\n<td>This let you specify if the card should be tokenized</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>O</td>\n<td>You can put in any additional information relatating to the transaction, if specified, this will be returned as part of the webhook.</td>\n</tr>\n<tr>\n<td>metadata.split_settlement</td>\n<td>O</td>\n<td><strong>Boolean (true or false) :</strong> Specifies whether the transaction settlement should be split across multiple subaccounts. Requires that the subaccounts are already created on your dashboard.</td>\n</tr>\n<tr>\n<td>metadata.settlement_ratio</td>\n<td>O</td>\n<td><strong>JSON Array:</strong> An array of objects that define how settlement is split across subaccounts.  <br />• subaccount_id: The ID of the subaccount.  <br />• percentage: The share of the settlement amount for the subaccount.  <br />  <br />Percentages must not exceed a total of 100. Any remaining percentage up to 100 is automatically settled into the main account.  <br />  <br /><strong>Sample  <br /></strong><code>\"metadata\": { \"split_settlement\": true, \"settlement_ratio\": [ { \"subaccount_id\": \"227\", \"percentage\": 30 }, { \"subaccount_id\": \"231\", \"percentage\": 40 } ] }</code></td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{SECRET_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","name":"ERCASPAY DEVELOPER DOCUMENTATION","type":"collection"}},"urlObject":{"path":["payment","initiate"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"e02d3a49-7520-47a7-9d8a-1e9d68f813bf","name":"initiate transaction (Successful)","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{secretKey}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 10,\n    \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n    \"paymentMethods\": \"card,bank-transfer,ussd,qrcode\",\n    \"customerName\": \"John Doe\",\n    \"customerEmail\": \"johndoe@gmail.com\",\n    \"customerPhoneNumber\": \"09061626364\",\n    \"redirectUrl\": \"https://omolabakeventures.com\",\n    \"description\": \"The description for this payment goes here\",\n    \"currency\": \"USD\",\n    \"feeBearer\": \"customer\",\n    \"metadata\": {\n        \"firstname\": \"Ola\",\n        \"lastname\": \"Benson\",\n        \"email\": \"iie@mail.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Mon, 13 Nov 2023 07:27:06 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"success\",\n    \"responseBody\": {\n        \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n        \"transactionReference\": \"ERCS|20231113082706|1699860426792\",\n        \"checkoutUrl\": \"https://sandbox-checkout.ercaspay.com/ERCS|20231113082706|1699860426792\"\n    }\n}"},{"id":"ba108206-5e07-4551-afa9-89e1bc84399b","name":"Initiate Transaction (Failed)","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{secretKey}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 10,\n    \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n    \"paymentMethods\": \"card,bank-transfer,ussd,qrcode\",\n    \"customerName\": \"John Doe\",\n    \"customerEmail\": \"johndoe@gmail.com\",\n    \"customerPhoneNumber\": \"09061626364\",\n    \"redirectUrl\": \"https://omolabakeventures.com\",\n    \"description\": \"The description for this payment goes here\",\n    \"currency\": \"USD\",\n    \"feeBearer\": \"customer\",\n    \"metadata\": {\n        \"firstname\": \"Ola\",\n        \"lastname\": \"Benson\",\n        \"email\": \"iie@mail.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/initiate"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Mon, 11 Mar 2024 18:36:24 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"The provided credentials are incorrect\",\n    \"responseBody\": []\n}"}],"_postman_id":"9d085e38-8498-4c9a-8ad4-4358c0c9f29f"},{"name":"Verify Transaction","id":"37821b18-272f-4fd4-9798-b15d431b1e67","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/payment/transaction/verify/{transactionRef}","description":"<p>We highly recommend that when you receive a notification from us, you should initiate a verify transaction request to us with the transactionReference to confirm the actual status of that transaction before updating the records on your database.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{SECRET_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","name":"ERCASPAY DEVELOPER DOCUMENTATION","type":"collection"}},"urlObject":{"path":["payment","transaction","verify","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"ff78f870-4525-4c1a-8bd5-d23eb41e7d57","name":"verify transaction {Successful}","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/payment/transaction/verify/{transactionRef}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Mon, 13 Nov 2023 07:23:01 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"Transaction fetched successfully\",\n    \"responseBody\": {\n        \"domain\": \"test\",\n        \"status\": \"SUCCESSFUL\",\n        \"ercs_reference\": \"ERCS|20231112152333|1699799013942\",\n        \"tx_reference\": \"CSHM|WLTP|48606GWR\",\n        \"amount\": 100,\n        \"description\": null,\n        \"paid_at\": \"2023-11-12T14:24:58.000000Z\",\n        \"created_at\": \"2023-11-12T14:23:33.000000Z\",\n        \"channel\": \"BANK_TRANSFER\",\n        \"currency\": \"NGN\",\n        \"metadata\": \"{\\\"firstname\\\":\\\"Ola\\\",\\\"lastname\\\":\\\"Benson\\\",\\\"email\\\":\\\"iie@mail.com\\\"}\",\n        \"fee\": 1.4,\n        \"fee_bearer\": \"customer\",\n        \"settled_amount\": 100,\n        \"customer\": {\n            \"name\": \"Olayemi Olaomo\",\n            \"phone_number\": \"09061628409\",\n            \"email\": \"ola@gmail.com\",\n            \"reference\": \"ZEKvFI-N8lMHY\"\n        }\n    }\n}"},{"id":"18bf6892-2c28-48f3-bde1-965bd92bd2f7","name":"Verify Transaction {Failed}","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{baseUrl}}/payment/transaction/verify/{transactionRef}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Wed, 13 Mar 2024 10:08:44 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"Transaction does not exist\",\n    \"responseBody\": []\n}"}],"_postman_id":"37821b18-272f-4fd4-9798-b15d431b1e67"}],"id":"b0685e7a-c07f-4083-9146-eee64d58cdfa","description":"<p>Readily implement the ErcasPay Checkout Page on your websites to enable your customers to make payments on your platform. ErcasPay Page provides your customers with various payment method options such as CARD, BANK TRANSFER, USSD, QRCODE</p>\n<img src=\"https://content.pstmn.io/16b2c7de-5af5-4cb1-ae9f-21b728277d76/ZXJjYXNfY2hlY2tvdXRfZmxvd19kaWFncmFtLnBuZw==\" />\n\n<p>Please refer to the following links to have a better understanding of each payment channel flow. However, note that you must first complete the payment initiation POST request as shown in the diagram above.</p>\n<ul>\n<li><p><a href=\"https://docs.ercaspay.com#915434f2-503f-4f6d-a2a0-3e288cf51a7e\">Card Payment Flow</a></p>\n</li>\n<li><p><a href=\"https://docs.ercaspay.com#46cc2284-0150-43bb-a641-c6374d6e3217\">Bank Transfer Flow</a></p>\n</li>\n<li><p><a href=\"https://docs.ercaspay.com/#ef89610a-afe7-4789-a7de-48be8b0e9253\">USSD Payment Flow</a></p>\n</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"59c1210b-6d2b-47b5-9dd6-dba642348401","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"02186c4b-098a-4ecb-a09a-1f5035a32feb","type":"text/javascript","exec":[""]}}],"_postman_id":"b0685e7a-c07f-4083-9146-eee64d58cdfa","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{SECRET_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","name":"ERCASPAY DEVELOPER DOCUMENTATION","type":"collection"}}},{"name":"Direct Integration","item":[{"name":"Card","item":[{"name":"Initiate Payment","id":"c107f884-5a54-4b0e-9188-3082e73ac9a9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"payload\": \"Xyy3MrxoDNccMJjPO3zUiERBZxbMUXumcvg4iMQU1Uqix6351T1b4cWo6XKt/qM7lxzQjFBNoLveu9ZFBi20+EWIPxPRpCrru7oRsy1MjJKy2ysQ2RHG5RMCrzNGDZj3KvDElPoMZVtadomaEqa8FQ4g3i7s1mhdK4XHf2giVsmkA3FNuoGyUUXMU1JstmsVAdt75geMg5rbvcgICLmOrCl988STbXnaQpl81XMBhzhcAtkzielaUOosVBW4B87WSGq20XN/13h3p8vQ1CiW8WDfVr0Sw91UlvHbe2tZSyQ+tt5lFwxwAGLKbdeB74oU/mNf93MssaOOlb0FcsDuyQ==\",\n  \"transactionReference\": \"ERCS|20240809141139|1723209099142\",\n  \"isCardTokenized\" : true,\n  \"deviceDetails\": {\n    \"payerDeviceDto\": {\n      \"device\": {\n        \"browser\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36\",\n        \"browserDetails\": {\n          \"3DSecureChallengeWindowSize\": \"FULL_SCREEN\",\n          \"acceptHeaders\": \"application/json\",\n          \"colorDepth\": 24,\n          \"javaEnabled\": true,\n          \"language\": \"en-US\",\n          \"screenHeight\": 473,\n          \"screenWidth\": 1600,\n          \"timeZone\": 273\n        },\n        \"ipAddress\": \"41.242.77.212\"\n      }\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/cards/initialize","description":"<p>This endpoint facilitates the initiation of a card transaction. Upon initiation, the response received varies based on the type of card used. It may include a link to a 3D authentication page or a message indicating that an OTP (One-Time Password) has been sent to the registered phone number. As this integration is direct, it is your responsibility to retrieve and handle these responses accordingly.</p>\n<p>For example, in the case of response code C1, you must provide an interface where the OTP sent to the registered phone number can be entered and submitted to the OTP endpoint. Similarly, for response code C2, redirection to the transactionAuth URL provided in the response is required, allowing the system to manage the subsequent steps of the process.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Mandatory &amp; Optional</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>payload</td>\n<td>M</td>\n<td>An encripted version of a card details. Card details should be encripted with RSA algorithm</td>\n</tr>\n<tr>\n<td>transactionReference</td>\n<td>M</td>\n<td>Please pass the transaction reference generated when you initiate the transaction</td>\n</tr>\n<tr>\n<td>isCardTokenized</td>\n<td>O (true/false)</td>\n<td>This let you specify if the card should be tokenized</td>\n</tr>\n<tr>\n<td>deviceDetails</td>\n<td>M</td>\n<td>This contains the device details</td>\n</tr>\n<tr>\n<td>payerDeviceDto</td>\n<td>M</td>\n<td>This is an object inside device details</td>\n</tr>\n<tr>\n<td>device</td>\n<td>M</td>\n<td>This is an object inside payerDeviceDto</td>\n</tr>\n<tr>\n<td>browser</td>\n<td></td>\n<td>This is an object inside device.</td>\n</tr>\n<tr>\n<td>browserDetails</td>\n<td>M</td>\n<td>This is an object inside device</td>\n</tr>\n<tr>\n<td>ipAddress</td>\n<td>O</td>\n<td>ipAddress of the customer device</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"card-encryption-sample-codes\">Card Encryption Sample Codes</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-java\">import com.fasterxml.jackson.databind.ObjectMapper;\nimport org.bouncycastle.jcajce.provider.asymmetric.rsa.BCRSAPublicKey;\nimport org.bouncycastle.jce.provider.BouncyCastleProvider;\nimport org.bouncycastle.util.io.pem.PemReader;\nimport org.springframework.core.io.ClassPathResource;\nimport org.springframework.core.io.Resource;\nimport javax.crypto.BadPaddingException;\nimport javax.crypto.Cipher;\nimport javax.crypto.IllegalBlockSizeException;\nimport javax.crypto.NoSuchPaddingException;\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.security.*;\nimport java.security.spec.InvalidKeySpecException;\nimport java.security.spec.X509EncodedKeySpec;\nimport java.util.Base64;\npublic class Main {\n  public static void main(String[] args) throws NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, NoSuchProviderException, InvalidKeyException, IOException {\n    //CARD ENCRYPTION SAMPLE CODE USING RSA\n    //YOUR CARD DETAILS\n    CardParams cardParams = new CardParams();\n    cardParams.setCvv(\"8XX\");\n    cardParams.setPin(\"5XXX\");\n    cardParams.setExpiryDate(\"07XX\"); \n    cardParams.setPan(\"5399XXXXXXXXXXXX\");\n    //CONVERT YOUR CARD DETAILS TO STRING\n    ObjectMapper mapper = new ObjectMapper();\n    String cardParamToString = mapper.writeValueAsString(cardParams);\n    //ENCRYPT\n    String encryptedData = rsaEncrypt(cardParamToString);\n    //OUTPUT ENCRYPTED DATA\n    System.out.println(encryptedData);\n  }\n  public static String rsaEncrypt(String data) throws NoSuchPaddingException, NoSuchAlgorithmException,\n    NoSuchProviderException, IOException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {\n    Security.addProvider(new BouncyCastleProvider());\n    byte[] encryptedBytes = data.getBytes();\n    Cipher cipher = Cipher.getInstance(\"RSA/ECB/PKCS1Padding\", \"BC\");\n    cipher.init(Cipher.ENCRYPT_MODE, (Key) retrievePublicKey());\n    byte[] encryptedMessage = cipher.doFinal(encryptedBytes);\n    return Base64.getEncoder().encodeToString(encryptedMessage);\n  }\n  private static BCRSAPublicKey retrievePublicKey() throws IOException {\n    return readPub(\"ercas-rsa-pubx\"); //Create a file that will hold your public key\n  }\n  private static BCRSAPublicKey readPub(String filename) throws FileNotFoundException, IOException {\n    Resource resource = new ClassPathResource(filename);\n    try (PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(filename)))) {\n      KeyFactory factory = KeyFactory.getInstance(\"RSA\", \"BC\");\n      var pemKey = pemReader.readPemObject();\n      var keyByte = pemKey.getContent();\n      X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyByte);\n      return (BCRSAPublicKey) factory.generatePublic(pubKeySpec);\n    } catch (NoSuchAlgorithmException | InvalidKeySpecException | NoSuchProviderException e) {\n      throw new RuntimeException(e);\n    }\n  }\n}\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">function encryptCard()\n{\n    $public_key = file_get_contents('key/rsa_public_key.pub');\n    // Remove \"RSA\" from the header\n    $public_key = str_replace(\"RSA\", \"\", $public_key);\n    // Remove leading and trailing whitespace\n    $public_key = trim($public_key);\n    // Card details\n    $cardParams = [\n        'cvv' =&gt; '8XX',\n        'pin' =&gt; '5XXX',\n        'expiryDate' =&gt; '07XX',\n        'pan' =&gt; '5399XXXXXXXXXXXX'\n    ];\n    // Convert card details to JSON\n    $cardJson = json_encode($cardParams);\n    // Encrypt the card details\n    if (openssl_public_encrypt($cardJson, $encrypted, $public_key)) {\n        // Return the encrypted data as a Base64-encoded string\n        return base64_encode($encrypted);\n    } else {\n        // Encryption failed\n        die(\"Error: Encryption failed - \" . openssl_error_string());\n    }\n}\necho encryptCard();\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-python\">import json\nimport base64\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Cipher import PKCS1_v1_5\nfrom Crypto.Hash import SHA1\n#DEPENDENCY : pycryptodome\n#RUN  pip install pycryptodome\ndef encryptCard():\n    # Read the public key\n    with open('key/rsa_public_key.pub', 'rb') as key_file:\n        public_key_data = key_file.read()\n    public_key = RSA.import_key(public_key_data)\n    # Card details\n    cardParams = {\n        'cvv' : '8XX',\n        'pin' : '5XXX',\n        'expiryDate' : '07XX',\n        'pan' : '5399XXXXXXXXXXXX'\n    }\n    # Convert card details to JSON\n    cardJson = json.dumps(cardParams).encode('utf-8')\n    # Encrypt the card details using PKCS1_v1_5 padding\n    cipher = PKCS1_v1_5.new(public_key)\n    encrypted = cipher.encrypt(cardJson)\n    # Return the encrypted data as a Base64-encoded string\n    return base64.b64encode(encrypted).decode('utf-8')\nprint(encryptCard())\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cards","initialize"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"89a4896d-a59f-4603-b744-4a0ec2751a0b","name":"successful payment","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payload\": \"hQk5jVRv1bqoNB57irP/gqkXvxiqXv+aTdplXbgzqUoJQpGGgBstFBB1YjtTM6+fg5xr+8GGTUOMbxweGvKno8UXYmmdDKBdb3R6JXS08PxG8ZFX2ktoMTkKVrHtt4LQS7Ee73lAA46wz7GDiRI3bj8eWNFxU8/fQ9nE3BbNkIh23RowRvocEiZkP3NQqDWUC94DP2x/+ipyjO6M9ouUf4VIuDTYrVoGKeCNtRHlo9RR6bFWOSGwDN0yTwxxjWX2Pr02pusxRgIodNrDTXzIVFh58zpFE8U42SMMtdeyKeNo+61UZPA4Aznwe6o3VElX0QXk2feq8K3Zo70odxfruw==\",\n    \"transactionReference\": \"ERCS|20230323155236|1679586756784903\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/initialize"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.17"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 28 Mar 2023 08:49:36 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"C0\",\n    \"responseBody\": {\n        \"code\": \"C0\",\n        \"status\": \"SUCCESS\",\n        \"gatewayMessage\": \"APPROVED\",\n        \"transactionReference\": \"ERCS|20230323155236|1679586756784903\",\n        \"paymentReference\": \"dhgsygdbshjdg\",\n        \"amount\": 10000,\n        \"redirectUrl\": \"https://omolabakeventures.com\"\n    }\n}"},{"id":"518b75c2-8a4d-46c5-9acc-05e9a6d2e1a3","name":"requires otp","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payload\": \"hQk5jVRv1bqoNB57irP/gqkXvxiqXv+aTdplXbgzqUoJQpGGgBstFBB1YjtTM6+fg5xr+8GGTUOMbxweGvKno8UXYmmdDKBdb3R6JXS08PxG8ZFX2ktoMTkKVrHtt4LQS7Ee73lAA46wz7GDiRI3bj8eWNFxU8/fQ9nE3BbNkIh23RowRvocEiZkP3NQqDWUC94DP2x/+ipyjO6M9ouUf4VIuDTYrVoGKeCNtRHlo9RR6bFWOSGwDN0yTwxxjWX2Pr02pusxRgIodNrDTXzIVFh58zpFE8U42SMMtdeyKeNo+61UZPA4Aznwe6o3VElX0QXk2feq8K3Zo70odxfruw==\",\n    \"transactionReference\": \"ERCS|20230323155236|1679586756784903\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/initialize"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.17"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 28 Mar 2023 10:37:30 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"C1\",\n    \"responseBody\": {\n        \"code\": \"C1\",\n        \"status\": \"PENDING\",\n        \"gatewayMessage\": \"Kindly enter the OTP sent to 234805***1111\",\n        \"supportMessage\": \"Didn't get the OTP? Dial *723*0# on your phone (MTN,Etisalat,Airtel) Glo,use *805*0#.\",\n        \"transactionReference\": \"ERCS|20230323155236|1679586756784903\",\n        \"paymentReference\": \"dhgsygdbshjdg\",\n        \"gatewayReference\": \"JQZgGWfiz9\",\n        \"amount\": 10000,\n        \"callbackUrl\": \"https://omolabakeventures.com\"\n    }\n}"},{"id":"8bf96617-9b76-4c59-9e23-3ec89215c5d7","name":"3D checkout response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payload\": \"Cbn/QZQgR0vKdBD7krvacMrnUtmiKmh1grQXBv6CX3fJxRmuaTFxo/Cl9uuiwLcP0Lzdz2E+wWvcWH5rgYLoo8UuhvH1oznDr1MAopuVMYcuUzJYH/rjk3e0AHZ58HyPdVjgzcIcAqjT+Tr3SF+knH72MVUcWB1PoTwO8iBPUMi3DRa2HncSn0wHGhLg0/XTjgAT+sCkEHGJ1vVb5gAxggYuXQ0TPCz2gLPWxfLoFK7fSYxTwNITXgR2FGW+jjL7gfDefV3etpCbdusgEJ5pOYMi6nt4AyWSaV7VSAlsmmYDwq3MR9Sfz0YoVJqpAE9Fsdjkq4Xg9ZkWMgmARfVRmA==\",\n    \"transactionReference\": \"ERCS|20230427110830|1682590110247345\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/initialize"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.18"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Thu, 27 Apr 2023 14:15:30 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"C2\",\n    \"responseBody\": {\n        \"code\": \"C2\",\n        \"status\": \"PENDING\",\n        \"eciFlag\": \"07\",\n        \"transactionAuth\": \"http://staging.ercaspay.com/api/authorize?ref=474364741\",\n        \"transactionId\": \"30LD7JnRNPpBs3lpMYB0\",\n        \"transactionRef\": \"yhUss7uvqS\",\n        \"amount\": 100,\n        \"callbackUrl\": \"https://omolabakeventures.com\"\n    }\n}"},{"id":"f6775305-aaca-4964-a1a2-009cc3d23e2b","name":"Initiate Payment (Success","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"payload\": \"Xyy3MrxoDNccMJjPO3zUiERBZxbMUXumcvg4iMQU1Uqix6351T1b4cWo6XKt/qM7lxzQjFBNoLveu9ZFBi20+EWIPxPRpCrru7oRsy1MjJKy2ysQ2RHG5RMCrzNGDZj3KvDElPoMZVtadomaEqa8FQ4g3i7s1mhdK4XHf2giVsmkA3FNuoGyUUXMU1JstmsVAdt75geMg5rbvcgICLmOrCl988STbXnaQpl81XMBhzhcAtkzielaUOosVBW4B87WSGq20XN/13h3p8vQ1CiW8WDfVr0Sw91UlvHbe2tZSyQ+tt5lFwxwAGLKbdeB74oU/mNf93MssaOOlb0FcsDuyQ==\",\n  \"transactionReference\": \"ERCS|20240809141139|1723209099142\",\n  \"deviceDetails\": {\n    \"payerDeviceDto\": {\n      \"device\": {\n        \"browser\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36\",\n        \"browserDetails\": {\n          \"3DSecureChallengeWindowSize\": \"FULL_SCREEN\",\n          \"acceptHeaders\": \"application/json\",\n          \"colorDepth\": 24,\n          \"javaEnabled\": true,\n          \"language\": \"en-US\",\n          \"screenHeight\": 473,\n          \"screenWidth\": 1600,\n          \"timeZone\": 273\n        },\n        \"ipAddress\": \"41.242.77.212\"\n      }\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/cards/initialize"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 09 Aug 2024 13:12:11 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"57"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"C2\",\n    \"responseMessage\": \"success\",\n    \"responseBody\": {\n        \"code\": \"C2\",\n        \"status\": \"PENDING\",\n        \"eciFlag\": null,\n        \"transactionAuth\": \"Y2rS2q9nOn-FxnWwAqNMB\",\n        \"transactionId\": \"Y2rS2q9nOn-FxnWwAqNMB\",\n        \"transactionRef\": \"Y2rS2q9nOn\",\n        \"amount\": 101.4,\n        \"transactionAuthLink\": \"https://staging-core.ercaspay.com/api/alt-authorize-mpgs?ref=Y2rS2q9nOn-FxnWwAqNMB\",\n        \"callbackUrl\": \"https://mssolutions.com.ng/\"\n    }\n}"}],"_postman_id":"c107f884-5a54-4b0e-9188-3082e73ac9a9"},{"name":"Submit OTP","id":"5897b62c-e1ee-44bc-b29b-46a3adf851cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"otp\": \"123456\",\n    \"gatewayReference\": \"1gHS60sPRO\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/cards/otp/submit/{transactionRef}","description":"<p>This endpoint is designed to receive OTP (One-Time Password) for card validation purposes. Upon submission, if the OTP is deemed valid, the customer's payment institution is authorized to debit the customer's bank account. If the debit transaction is successful, you will be redirected accordingly.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Mandatory &amp; Optional</strong></th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>otp</td>\n<td>M</td>\n<td>Otp that was sent to the registered number</td>\n</tr>\n<tr>\n<td></td>\n<td>M</td>\n<td>Otp that was sent to the registered number</td>\n</tr>\n<tr>\n<td>gatewayReference</td>\n<td>M</td>\n<td>gateway reference should be retrieve from {{baseUrl}}/payment/cards/initialize endpoint</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cards","otp","submit","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"46fe1998-c764-42af-b0d0-c8735a5089db","name":"submit OTP","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"otp\": \"123456\",\n    \"gatewayReference\": \"1gHS60sPRO\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/otp/submit/transactionRef}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.17"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Thu, 30 Mar 2023 08:21:40 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"status\": \"SUCCESS\",\n        \"gatewayMessage\": \"OTP Authorization Successful\",\n        \"transactionReference\": \"ERCS|20230323155236|1679586756784903\",\n        \"paymentReference\": \"dhgsygdbshjdg\",\n        \"amount\": 10000,\n        \"callbackUrl\": \"https://omolabakeventures.com\"\n    }\n}"}],"_postman_id":"5897b62c-e1ee-44bc-b29b-46a3adf851cc"},{"name":"Resend OTP","id":"d8b41be5-6953-48d1-a805-5b27fe17ea51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"gatewayReference\": \"Cd7qtRufjL\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/cards/otp/resend/{transactionRef}","description":"<p>After receiving the gatewayReference as part of the response from the {{baseUrl}}/payment/cards/initialize endpoint, you have the option to initiate the OTP resend endpoint. This allows for the reissuance of the OTP (One-Time Password) associated with the transaction.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th><strong>Mandatory &amp; Optional</strong></th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>gatewayReference</td>\n<td>M</td>\n<td>gateway reference should be retrieve from {{baseUrl}}/payment/cards/initialize endpoint</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cards","otp","resend","{transactionRef}"],"host":["{{baseUrl}}"],"query":[{"disabled":true,"key":"acc","value":null}],"variable":[]}},"response":[{"id":"07641e67-8ba9-453b-bb97-5fb18e55f39b","name":"resend otp","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"gatewayReference\": \"Cd7qtRufjL\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/otp/resend/ERCS|20230323155236|1679586756784903"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.17"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Thu, 30 Mar 2023 09:31:50 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"status\": \"SUCCESS\",\n        \"gatewayMessage\": \"OTP Resent\",\n        \"transactionReference\": \"ERCS|20230323155236|1679586756784903\",\n        \"paymentReference\": \"dhgsygdbshjdg\"\n    }\n}"}],"_postman_id":"d8b41be5-6953-48d1-a805-5b27fe17ea51"},{"name":"Card Details","id":"6e20d7fb-179b-44f3-9fcd-76a258d0e0ef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/cards/details/{transactionRef}","description":"<p>This request retrieves the details of a card transaction using the specified transaction reference.</p>\n<p>Description:</p>\n<p>Our <strong>GET</strong> Card Details endpoint is used to retrieve the details of a card transaction based on the provided transaction reference. It requires authentication using a Bearer Token.This endpoint allows you to access comprehensive information about a card transaction, aiding in transaction monitoring, reconciliation, and auditing.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cards","details","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"8d3ec67f-6afc-4543-a746-418e293b868b","name":"Card Details {Successful}","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/cards/details/ERCS|20230801124135|1690890095404"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.25.1"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.2.8"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 01 Aug 2023 11:57:21 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"57"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"amount\": 10000,\n        \"reference\": \"ERCS|20230801124135|1690890095404\"\n    }\n}"},{"id":"3a8e9077-9beb-471e-b4b3-121f4fa05e1f","name":"Card Details {Failed}","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/cards/details/ERCS|20230801124135|1690890095404"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 12 Mar 2024 17:52:17 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"The provided reference is not valid, please check and try again\",\n    \"responseBody\": []\n}"}],"_postman_id":"6e20d7fb-179b-44f3-9fcd-76a258d0e0ef"},{"name":"Verify Card Transaction","id":"3d8cb8d7-e92c-46c5-ad2d-16c5bfae3465","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"reference\": \"tansactionRef\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/cards/transaction/verify","description":"<p>Our verify card transaction endpoint verifies a card transaction and confirms its validity.</p>\n<p>Description:</p>\n<ul>\n<li><p>This POST request is used to verify the validity of a card transaction.</p>\n</li>\n<li><p>It allows the system to confirm whether the card transaction is authentic and can proceed further.</p>\n</li>\n</ul>\n<p>This endpoint is crucial for ensuring the security and integrity of card-based transactions within the system.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cards","transaction","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"f571487e-ced9-4b19-83ee-fb9d108e3a1d","name":"Verify Card Transaction {Failed}","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"reference\": \"Cd7qtRufjL\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/transaction/verify/{transactionRef}"},"status":"Unprocessable Content","code":422,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.25.1"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"X-Powered-By","value":"PHP/8.2.8"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 28 Jul 2023 11:53:28 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"57"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseBody\": [],\n    \"responseCode\": \"99\",\n    \"errorMessage\": \"The selected reference is invalid.\"\n}"}],"_postman_id":"3d8cb8d7-e92c-46c5-ad2d-16c5bfae3465"},{"name":"Make Recurrent Payment","id":"12375896-fa0f-4e3d-a0f6-b517ded9244a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"cardTokenUUID\": \"c0c2bd9c-1fc2-4ae6-a3b3-aa152794deee\",\n    \"amount\": \"2000\",\n    \"currency\": \"NGN\",\n    \"paymentReference\" : \"rfrffrfrrg44555rff\",\n    \"redirectUrl\" : \"https://michael.com\"\n\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/make-recurrent-payment","description":"<p>This endpoint allows you to initiate <strong>recurring payments</strong> for your customers directly from your system.</p>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Mandatory / Optional</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cardTokenUUID</code></td>\n<td>M</td>\n<td>The card token uuid generated from the tokenized card (Please retrieve it from verify transaction endpoint)</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>M</td>\n<td>The transaction amount to be charged.</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>M (default: NGN)</td>\n<td>The currency for the transaction. Defaults to <strong>NGN</strong> if not provided.</td>\n</tr>\n<tr>\n<td><code>paymentReference</code></td>\n<td>Mandatory</td>\n<td>The <strong>unique transaction reference</strong> generated when the transaction is initiated.</td>\n</tr>\n<tr>\n<td><code>redirectUrl</code></td>\n<td>Optional</td>\n<td>The URL to which the customer will be redirected after payment completion.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["payment","cards","make-recurrent-payment"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"f76e7e1e-b982-428d-8dc9-44a8b140787c","name":"success","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"cardTokenUUID\": \"c0c2bd9c-1fc2-4ae6-a3b3-aa152794deee\",\n    \"amount\": \"2000\",\n    \"currency\": \"NGN\",\n    \"paymentReference\" : \"rfrffrfrrg44555rff\",\n    \"redirectUrl\" : \"https://michael.com\"\n\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/make-recurrent-payment"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"success\",\n    \"responseBody\": {\n        \"status\": \"SUCCESSFUL\",\n        \"reference\": \"ER|A109D89453224\",\n        \"transRef\": \"2pWO1atPOd\",\n        \"cardTokenUUID\": \"887cdd16-f3e0-4807-9a65-94e7009bf7c9\",\n        \"checkoutUrl\": \"https://checkout-staging.ercaspay.com/result?status=success&transRef=2pWO1atPOd\"\n    }\n}"},{"id":"25e7cd9c-85bf-49df-ad9d-4017a33b0ce0","name":"failed","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"cardTokenUUID\": \"c0c2bd9c-1fc2-4ae6-a3b3-aa152794deee\",\n    \"amount\": \"2000\",\n    \"currency\": \"NGN\",\n    \"paymentReference\" : \"rfrffrfrrg44555rff\",\n    \"redirectUrl\" : \"https://michael.com\"\n\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/cards/make-recurrent-payment"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"Invalid Recurrent Payment\",\n    \"responseBody\": []\n}"}],"_postman_id":"12375896-fa0f-4e3d-a0f6-b517ded9244a"}],"id":"915434f2-503f-4f6d-a2a0-3e288cf51a7e","description":"<p>CARD TRANSACTION FLOW</p>\n<p>The card transaction procedures are determined by the type of card being used. When a transaction is initiated, our payment system identifies the card type and generates response codes, such as CO, C1, and C2. These codes indicate whether the payment process will involve a single or multiple layers before completion.</p>\n<p>For further clarification, please check the diagram provided below.</p>\n<img src=\"https://content.pstmn.io/2d3152fc-5914-44a1-baa8-03cdf33c2248/ZXJjYXNwYXlfY2FyZF9wYXltZW50X2Zsb3dfZGlhZ3JhbS5wbmc=\" />","_postman_id":"915434f2-503f-4f6d-a2a0-3e288cf51a7e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}}},{"name":"Bank Transfer","item":[{"name":"Initialize Bank Transfer","id":"df95e483-0454-4cd5-956b-06baaa16d96b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/bank-transfer/request-bank-account/{transactionRef}","description":"<p>Our Initialize Bank Transfer endpoint is used to initialize a bank transfer request. It requires the transaction reference as a parameter in the URL path.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","bank-transfer","request-bank-account","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"6d4e22db-935c-4850-baf8-7c12b38bd05b","name":"Initialize Bank Transfer {Successful }","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"{{baseUrl}}/payment/bank-transfer/request-bank-account/ERCS|20230418155255|1681833175587831"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.18"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Thu, 20 Apr 2023 09:56:07 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"56"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"status\": \"SUCCESS\",\n        \"gatewayMessage\": \"Success\",\n        \"transactionReference\": \"ERCS|20230418155255|1681833175587831\",\n        \"amount\": 100,\n        \"accountNumber\": \"8090032665\",\n        \"accountEmail\": \"ola@gmail.com\",\n        \"accountName\": \"ERC- OlayemiOlaomo\",\n        \"accountReference\": \"act_d0EN4wZHEn00\",\n        \"bankName\": \"Wema Bank\",\n        \"expires_in\": 1484\n    }\n}"},{"id":"36a0fbb5-d97b-43ce-a28e-3029ab537324","name":"Initialize Bank Transfer {Failed}","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"{{baseUrl}}/payment/bank-transfer/request-bank-account/ERCS|20230418155255|1681833175587831"},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Wed, 13 Mar 2024 10:48:59 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"This payment does not exist\",\n    \"responseBody\": []\n}"}],"_postman_id":"df95e483-0454-4cd5-956b-06baaa16d96b"}],"id":"46cc2284-0150-43bb-a641-c6374d6e3217","description":"<p>When initiating a bank transfer, a virtual account will be generated for the customer. Subsequently, the customer is required to make payment to this account. Upon successful transfer, the customer must return to your custom checkout platform and click on an acknowledgment button labeled, for instance, \"I have made payment.\" This button should be configured to direct users to the Verify Transaction endpoint. Following this action, a response containing the status code and redirect URL will be dispatched. You can then utilize this response according to your requirements.</p>\n<img src=\"https://content.pstmn.io/cdb6b004-c595-4798-a6c1-181202ed071a/ZXJjYXNfcGF5X2JhbmtfdHJhbnNmZXJfZGlhZ3JhbS5wbmc=\" />","_postman_id":"46cc2284-0150-43bb-a641-c6374d6e3217","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}}},{"name":"USSD","item":[{"name":"Initiate USSD Code","id":"ab37390e-9875-4a90-a336-5ac416269ebc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"bank_name\": \"fcmb\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/ussd/request-ussd-code/{transactionRef}","description":"<p><strong>Description:</strong></p>\n<p>This request initiates a USSD (Unstructured Supplementary Service Data) code for the specified parameters.</p>\n<p><strong>Usage:</strong><br />Use this request to trigger the initiation of a USSD code for a particular operation.<br />Ensure proper authentication by including a valid Bearer Token in the request headers.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","ussd","request-ussd-code","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"9d639791-251f-485d-8f18-61419857ec1e","name":"Initiate USSD Code {Successfull}","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 100,\n    \"bank_name\": \"fcmb\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/ussd/request-ussd-code/{transactionRef}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.17"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 11 Apr 2023 11:33:25 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"status\": \"SUCCESS\",\n        \"gatewayMessage\": \"Success\",\n        \"transactionReference\": \"ERCS|20230411103834|1681209514904087\",\n        \"gatewayReference\": \"jYKCxFPs2e\",\n        \"ussdCode\": \"2091\",\n        \"paymentCode\": \"*329*000*2091#\",\n        \"amount\": 10\n    }\n}"},{"id":"0ffab2d1-6f57-47b9-aa55-bdce9aaf2e9f","name":"Initiate USSD Code {Failled}","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 100,\n    \"bank_name\": \"fcmb\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/ussd/request-ussd-code/{transactionRef}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Mon, 11 Mar 2024 19:09:34 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"An error occurred, please check the reference and try again\",\n    \"responseBody\": []\n}"}],"_postman_id":"ab37390e-9875-4a90-a336-5ac416269ebc"},{"name":"Get Bank List For USSD","id":"9ba54922-ed59-4d8d-80c4-f8efe923d389","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/ussd/supported-banks?","description":"<p>The endpoint lets you fetch all the supported banks for USSD transfer</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","ussd","supported-banks"],"host":["{{baseUrl}}"],"query":[{"key":"","value":null}],"variable":[]}},"response":[{"id":"cad78d95-97c0-418f-8eca-9fde3a7a1ff1","name":"Get Bank List For USSD (Success)","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/third-party/payment/ussd/supported-banks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 09 Aug 2024 13:05:50 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"success\",\n    \"responseBody\": [\n        \"access\",\n        \"alat\",\n        \"ecobank\",\n        \"FCMB\",\n        \"fidelity\",\n        \"firstbank\",\n        \"gtbank\",\n        \"heritage\",\n        \"keystone\",\n        \"polaris\",\n        \"stanbic\",\n        \"sterling\",\n        \"uba\",\n        \"union\",\n        \"unity\",\n        \"wema\",\n        \"zenith\"\n    ]\n}"}],"_postman_id":"9ba54922-ed59-4d8d-80c4-f8efe923d389"}],"id":"ef89610a-afe7-4789-a7de-48be8b0e9253","description":"<p>It is a technology used by GSM cellular telephones to communicate with the mobile network operator's computers.</p>\n<p>When initiating a USSD transaction, a response containing the USSD code will be generated provided that no errors occurred during initialization. This code can then be dialed on the customer's phone. Upon successful payment by the customer via USSD, they would need to return to your custom checkout platform and click on a payment acknowledgment button, labeled with a caption such as \"I have made payment.\" This button should be configured to direct users to the Verify Transaction endpoint, ensuring seamless verification of the transaction.</p>\n<img src=\"https://content.pstmn.io/179e09a9-355d-4d3b-9ad3-2fe2e0649670/ZXJjYXNfcGF5X3Vzc2RfZmxvd19kaWFncmFtLnBuZw==\" />","_postman_id":"ef89610a-afe7-4789-a7de-48be8b0e9253","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}}},{"name":"Fetch Transaction Details","id":"893b049a-952f-4628-9270-d17f28a21bf7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/details/{transactionRef}?","description":"<p><strong>Description:</strong><br />Our \"Fetch Transaction Details\" endpoint allows you to retrieve detailed information about a specific transaction. This request is essential for accessing comprehensive details regarding a particular transaction processed within the system.</p>\n<p><strong>Usage:</strong></p>\n<p>Utilize this request to obtain detailed information about a specific transaction identified by its unique transaction ID.<br />Replace {transactionId} in the endpoint URL with the actual ID of the transaction you wish to retrieve details for.<br />Ensure that the provided transaction ID corresponds to an existing transaction within the system.</p>\n<p><strong>Response:</strong><br />The response returned by this request contains comprehensive details pertaining to the specified transaction. Information provided may include transaction amount, timestamp, involved parties, transaction status, and any additional metadata associated with the transaction.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","details","{transactionRef}"],"host":["{{baseUrl}}"],"query":[{"key":"","value":null}],"variable":[]}},"response":[{"id":"ac610ea8-c9f7-4d4b-aa42-43cf9ef05ca1","name":"Fetch Transaction Details {Successful}","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/details/{transactionRef}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.25.1"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.2.8"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 06 Oct 2023 16:54:36 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"customerName\": \"Olayemi Olaomo\",\n        \"customerEmail\": \"ola@gmail.com\",\n        \"amount\": 3,\n        \"businessName\": \"Mckenna O'Kon\",\n        \"businessLogo\": \"https://via.placeholder.com/640x480.png/0044cc?text=eveniet\",\n        \"whiteLabel\": {\n            \"id\": 1,\n            \"logo_url\": \"https://upload.wikimedia.org/wikipedia/commons/3/33/Vanamo_Logo.png\",\n            \"primary_color\": \"#FF12E2\",\n            \"accent_color\": \"#EF43AB\",\n            \"font_family\": \"Sans-Pro\",\n            \"font_color\": \"#FFFF01\",\n            \"has_admin_approved\": true\n        },\n        \"paymentMethods\": [\n            \"card\"\n        ]\n    }\n}"},{"id":"690f21dd-a2ef-410a-a190-f39e0a2c761b","name":"Fetch Transaction Details {Failed}","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/details/{transactionRef}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Tue, 12 Mar 2024 13:11:22 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"An error occurred, please check the reference and try again\",\n    \"responseBody\": []\n}"}],"_postman_id":"893b049a-952f-4628-9270-d17f28a21bf7"},{"name":"Verify Transaction","id":"6338e248-09c6-4822-85b1-c6382c6da6e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/transaction/verify/{transactionRef}","description":"<p>We highly recommend that when you receive a notification from us, you should initiate a verify transaction request to us with the transactionReference to confirm the actual status of that transaction before updating the records on your database.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","transaction","verify","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"b5cc4ea2-9ef4-4ac2-bcb7-7f85ae8f9182","name":"Verify Transaction (Successful)","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/transaction/verify/{transactionRef}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Sun, 12 Nov 2023 23:52:39 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"Transaction fetched successfully\",\n    \"responseBody\": {\n        \"domain\": \"test\",\n        \"status\": \"SUCCESSFUL\",\n        \"ercs_reference\": \"ERCS|20231112152333|1699799013942\",\n        \"tx_reference\": \"CSHM|WLTP|48606GWR\",\n        \"amount\": 100,\n        \"description\": null,\n        \"paid_at\": \"2023-11-12T14:24:58.000000Z\",\n        \"created_at\": \"2023-11-12T14:23:33.000000Z\",\n        \"channel\": \"BANK_TRANSFER\",\n        \"currency\": \"NGN\",\n        \"metadata\": \"{\\\"firstname\\\":\\\"Ola\\\",\\\"lastname\\\":\\\"Benson\\\",\\\"email\\\":\\\"iie@mail.com\\\"}\",\n        \"fee\": 1.4,\n        \"fee_bearer\": \"customer\",\n        \"settled_amount\": 100,\n        \"customer\": {\n            \"name\": \"Olayemi Olaomo\",\n            \"phone_number\": \"09061628409\",\n            \"email\": \"ola@gmail.com\",\n            \"reference\": \"ZEKvFI-N8lMHY\"\n        }\n    }\n}"},{"id":"51b49ae3-7cb8-45fd-abe6-ab4f96611ace","name":"Verify Transaction (Failed)","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/transaction/verify/{transactionRef}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Sun, 12 Nov 2023 23:53:34 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": false,\n    \"responseCode\": \"failed\",\n    \"errorMessage\": \"This payment failed\",\n    \"responseBody\": []\n}"}],"_postman_id":"6338e248-09c6-4822-85b1-c6382c6da6e4"},{"name":"Fetch Transaction Status","id":"d4fd184a-2b1a-4e1c-9dc0-28a4da398a49","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment_method\": \"card\", //payment method (e.g. card, bank-transfer, ussd, e.t.c..)\n    \"reference\": \"P1vpu4GwRb3i1MP\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/status/ERCS|20240809141139|1723209099142","description":"<p>Our Fetch Transaction Status endpoint retrieves the status of a transaction using the specified transaction reference.</p>\n<p>Description:</p>\n<p>The <strong>GET</strong> Fetch Transaction Status endpoint is used to retrieve the status of a transaction based on the provided transaction reference. It requires authentication using a Bearer Token. This endpoint allows you to check the current status of a transaction, providing valuable insights into its progress and outcome.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","status","ERCS|20240809141139|1723209099142"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"d4cf38e4-e51a-4128-96c5-44e11004d0a4","name":"Fetch Transaction Status {Successful}","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/status/ERCS|20230315155152|JF5512"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.15"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Wed, 15 Mar 2023 15:58:28 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"58"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"paymentReference\": \"dhgsygdbshjdg\",\n        \"amount\": 10000,\n        \"status\": \"CANCELLED\",\n        \"description\": \"The description for this payment goes here\",\n        \"callbackUrl\": \"https://omolabakeventures.com?reference=dhgsygdbshjdg&status=CANCELLED\"\n    }\n}"},{"id":"c29952b3-03a1-4924-b24c-e41951172f24","name":"Fetch Transaction Status (Success)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"payment_method\": \"card\", //payment method (e.g. card, bank-transfer, ussd, e.t.c..)\n    \"reference\": \"Y2rS2q9nOn\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/status/ERCS|20240809141139|1723209099142"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.18.0 (Ubuntu)"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 09 Aug 2024 13:19:57 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Referrer-Policy","value":"no-referrer-when-downgrade"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"Permissions-Policy","value":"*"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseCode\": \"success\",\n    \"responseMessage\": \"success\",\n    \"responseBody\": {\n        \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n        \"amount\": 100,\n        \"status\": \"PAID\",\n        \"description\": \"The description for this payment goes here\",\n        \"callbackUrl\": \"https://mssolutions.com.ng/?reference=R5md7gd9b4s3h2j5d67g&status=PAID&transRef=ERCS|20240809141139|1723209099142\"\n    }\n}"}],"_postman_id":"d4fd184a-2b1a-4e1c-9dc0-28a4da398a49"},{"name":"Cancel Transaction","id":"d90bc77e-c0f3-4908-aea8-8f8cf7dc2e77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"url":"{{baseUrl}}/third-party/payment/cancel/{transactionRef}","description":"<p>This endpoint allows you to cancel a transaction that has not yet been marked as completed.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":true,"source":{"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","name":"Direct Integration","type":"folder"}},"urlObject":{"path":["third-party","payment","cancel","{transactionRef}"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"c6125aca-f882-40e5-9921-2f5ffdfd82f7","name":"cancel","originalRequest":{"method":"GET","header":[],"url":"{{baseUrl}}/payment/cancel/ERCS|20230315155152|JF5512"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.23.3"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.1.15"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Wed, 15 Mar 2023 15:57:40 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"callback_url\": \"https://omolabakeventures.com?reference=dhgsygdbshjdg&status=CANCELLED\"\n    }\n}"}],"_postman_id":"d90bc77e-c0f3-4908-aea8-8f8cf7dc2e77"},{"name":"Initiate Transaction","id":"fcb929ed-525d-46a8-92e8-8533bc38fda0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{TOKEN}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer {{SECRET_KEY}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 100,\n    \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n    \"paymentMethods\": \"card,bank-transfer,ussd,qrcode\",\n    \"customerName\": \"Olayemi Olaomo\",\n    \"currency\": \"NGN\",\n    \"customerEmail\": \"ola@gmail.com\",\n    \"customerPhoneNumber\": \"09061628409\",\n    \"redirectUrl\": \"https://mssolutions.com.ng/\",\n    \"description\": \"The description for this payment goes here\",\n    \"metadata\": {\n        \"firstname\": \"Ola\",\n        \"lastname\": \"Benson\",\n        \"email\": \"iie@mail.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/third-party/payment/initiate","description":"<p>This endpoint allows you to initialize a transaction on ErcasPay and it returns a checkout URL which you can load within a browser to display the payment form to your customer. The checkout URL has an expiry time of 90 minutes.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Mandatory &amp; Optional</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>amount</td>\n<td>M</td>\n<td>The amount to be paid by the customer.</td>\n</tr>\n<tr>\n<td>paymentReference</td>\n<td>M</td>\n<td>Merchant's Unique reference for the transaction.</td>\n</tr>\n<tr>\n<td>paymentMethods</td>\n<td>M</td>\n<td>Comma seperated string of payment methods (card, bank-transfer, qrcode, ussd, etc.). If not specified, all available payment methods enabled on the merchant dashboard will be used.</td>\n</tr>\n<tr>\n<td>customerName</td>\n<td>M</td>\n<td>Full name of the customer.</td>\n</tr>\n<tr>\n<td>customerEmail</td>\n<td>M</td>\n<td>Email address of the customer.</td>\n</tr>\n<tr>\n<td>customerPhoneNumber</td>\n<td>O</td>\n<td>Phone number of the customer.</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>O</td>\n<td>The currency you want to receive payment in. If this is not specified, we use NGN as the default currency. A list of supported currencies are available on the landing page</td>\n</tr>\n<tr>\n<td>feeBearer</td>\n<td>O</td>\n<td>The bearer of the charge (either customer or merchant). If not selected, we use the set default on the merchant account. This can be found under settings -&gt; charges</td>\n</tr>\n<tr>\n<td>redirectUrl</td>\n<td>O</td>\n<td>A URL which user will be redirected to, on completion of the payment, if not specified, the default merchant redirect url will be used.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>O</td>\n<td>Description for the transaction.</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>O</td>\n<td>You can put in any additional information relatating to the transaction, if specified, this will be returned as part of the webhook.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["third-party","payment","initiate"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[{"id":"f29558d5-9b38-4b89-a45a-4c1b8314ac59","name":"Initiate","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer 72|0uAcSNKl4vVZinuOdtzbwsfLzt6R5ULZLMaFAAle","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"amount\": 3,\n    \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n    \"paymentMethods\": \"card,bank-transfer,ussd,qrcode\",\n    \"customerName\": \"Olayemi Olaomo\",\n    \"currency\": \"USD\",\n    \"customerEmail\": \"ola@gmail.com\",\n    \"customerPhoneNumber\": \"09061628409\",\n    \"redirectUrl\": \"https://omolabakeventures.com\",\n    \"description\": \"The description for this payment goes here\",\n    \"metadata\": {\n        \"firstname\": \"Ola\",\n        \"lastname\": \"Benson\",\n        \"email\": \"iie@mail.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/payment/initiate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.25.1"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/8.2.8"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Date","value":"Fri, 06 Oct 2023 16:57:16 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestSuccessful\": true,\n    \"responseMessage\": \"success\",\n    \"responseCode\": \"00\",\n    \"responseBody\": {\n        \"paymentReference\": \"R5md7gd9b4s3h2j5d67g\",\n        \"transactionReference\": \"ERCS|20231006175716|1696611436606\",\n        \"checkoutUrl\": \"https://sandbox-checkout.ercaspay.com/ERCS|20231006175716|1696611436606\",\n        \"whiteLabel\": {\n            \"id\": 1,\n            \"logo_url\": \"https://upload.wikimedia.org/wikipedia/commons/3/33/Vanamo_Logo.png\",\n            \"primary_color\": \"#FF12E2\",\n            \"accent_color\": \"#EF43AB\",\n            \"font_family\": \"Sans-Pro\",\n            \"font_color\": \"#FFFF01\",\n            \"has_admin_approved\": true\n        }\n    }\n}"}],"_postman_id":"fcb929ed-525d-46a8-92e8-8533bc38fda0"}],"id":"331dd5a6-cd76-4f50-9da6-96f315c22e89","description":"<p>You have the option to seamlessly integrate our Payment gateway directly into your platform. This method is particularly advantageous if you plan to establish a self-hosted Payment gateway instead of interfacing with our checkout system to facilitate payment processing.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"2ce14f1e-1288-45d6-9b40-b71463f993a1","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"0f5aed1b-0078-45af-9e4a-b1b564a0d43a","type":"text/javascript","exec":[""]}}],"_postman_id":"331dd5a6-cd76-4f50-9da6-96f315c22e89"},{"name":"Webhook","item":[],"id":"e56c167a-0396-43cc-bf08-4f8a3ea632e7","description":"<p>Our webhook notifies merchants about transaction events in real-time. When a payment is processed, this webhook sends a payload containing details of the transaction, including the amount, transaction reference, payment reference, type, and status.</p>\n<h4 id=\"webhook-setup\"><strong>Webhook Setup</strong></h4>\n<p>Merchants are required to provide their webhook URL where notifications will be sent.</p>\n<p><strong>To add your webhook URL:</strong></p>\n<ol>\n<li><p><strong>Login</strong> to your ErcasPay dashboard.</p>\n</li>\n<li><p>Navigate to <strong>Settings</strong>.</p>\n</li>\n<li><p>Click on <strong>API Keys &amp; Webhook</strong>.</p>\n</li>\n<li><p>Fill in the webhook URL field accordingly.</p>\n</li>\n</ol>\n<h4 id=\"sample-webhook-response\"><strong>Sample Webhook Response</strong></h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">jsonCopyEdit{\n  \"amount\": 100,\n  \"transaction_reference\": \"ERCS|2025XXXX140332|174066141XXXX\",\n  \"payment_reference\": \"R5md7gd9b4s3h2xxd67g\",\n  \"type\": \"CREDIT\",\n  \"service_type\": \"gateway\",\n  \"settlement_amount\": 100,\n  \"fee_bearer\": \"customer\",\n  \"fee\": 1.4,\n  \"channel\": \"BANK_TRANSFER\",\n  \"status\": \"SUCCESSFUL\",\n  \"currency\": \"NGN\",\n  \"merchant_name\": \"MS Solutions\",\n  \"customer_account_name\": null,\n  \"metadata\": {\n    \"firstname\": \"Ola\",\n    \"lastname\": \"Michael\",\n    \"email\": \"olamicxxx@gmail.com\"\n  }\n}\n\n</code></pre>\n","_postman_id":"e56c167a-0396-43cc-bf08-4f8a3ea632e7","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{SECRET_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","id":"3c78cfb9-5cfa-433f-8cf3-863da8f06deb","name":"ERCASPAY DEVELOPER DOCUMENTATION","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{SECRET_KEY}}"}]}},"event":[{"listen":"prerequest","script":{"id":"c9e69090-f14a-40d9-b154-79717a96a934","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"934dd1b8-0af3-4193-b921-d03a4f8b07d4","type":"text/javascript","exec":[""]}}],"variable":[{"key":"baseUrl","value":"https://ercaspay.test/api/v1","type":"string","disabled":true},{"key":"baseUrl","value":"https://gw.ercaspay.com/api/v1","type":"string","disabled":true},{"key":"secretKey","value":"ECRS-TEST-SKlPinW8loNiPmW22v49VHHx3nbcmKHUeoOhSK5mPB","type":"string","disabled":true}]}